Fedora 43 on Framework 13 AMD AI 300 brightness keys

Which Linux distro are you using?
Fedora KDE Plasma

Which release version?
43

Which kernel are you using?
6.19.10-200.fc43.x86_64

Which BIOS version are you using?
03.05

Which Framework Laptop 13 model are you using?
AMD Ryzen™ AI 300 Series

I cannot adjust the brightness with the keyboard shortcuts (F7, F8, with or without fn lock). After going through many threads here is the current state:

  • Automatic brightness adjustment works (if enabled – I currently have it disabled).

  • I can adjust both with the brightness slider and with brightnessctl

  • I have tried blacklisting the hid_sensor_hub module lsmod | rg ^hid_sensor shows nothing and cat /proc/cmdline contains the module blacklist

  • Brightness keys register with libnput:

    sudo libinput debug-events
    (...)
    -event5   KEYBOARD_KEY                 +0.000s  KEY_BRIGHTNESSUP (225) pressed
    event5   KEYBOARD_KEY                 +0.135s  KEY_BRIGHTNESSUP (225) released
    event5   KEYBOARD_KEY                 +0.576s  KEY_BRIGHTNESSDOWN (224) pressed
    event5   KEYBOARD_KEY                 +0.685s  KEY_BRIGHTNESSDOWN (224) released
    
    
  • Brightness keys register with evtest for FRMW0004:00 32AC:0006 Consumer Control

  • I read [SOLVED-GUIDE] 12th gen not sending XF86MonBrightnessUp / Down - #67 by devkev post but I don’t think it’s applicable in my case. I have the same three i2c-FRMW0004:00 i2c-FRMW0005:00 i2c-PIXA3854:00 under both /sys/bus/i2c/devicesand /sys/bus/i2c/drivers/i2c_hid_acpi.

  • All other control keys (fn+Fxx) work.

  • Brightness keys used to work, however I have been using the laptop docked with external display, so I don’t know exactly when it stopped working.

I feel like I have exhausted my options so I would appreciate any help here.

It’s a KDE Plasma 6 thing. I’ve not looked into it beyond using the sliders in the ‘Brightness and Colour’ notification tray app or the ‘Display Configuration’ item in System Settings.

I’ve seen this recently with a x11 desktop environment.

Couple days ago I reset the bios to defaults and it’s been fine ever since. I’ve wondered if maybe the bios update I ran a couple weeks ago caused it?

Thank you @Kenny_Lewis . I only had a little time too look into it today. But checking with

systemctl --user status plasma-powerdevil
# and looking at
journalctl --user -eu plasma-powerdevil

Revealed that ddcutil could access i2c (permission issues). I did what ddcutil environment suggested and added my user to i2c group and set udev rules for i2c devices:

echo 'SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660"' > /etc/udev/rules.d/99-i2c.rules

The permission problem is resolved, but I still cannot control brightness with the key shortcuts. I wonder if there are further clues in the two excerpts below.

~ ❯ ddcutil detect
Invalid display
   I2C bus:  /dev/i2c-3
   DRM_connector:           card1-eDP-1
   EDID synopsis:
      Mfg id:               BOE - BOE
      Model:                NE135A1M-NY1
      Product code:         3252  (0x0cb4)
      Serial number:
      Binary serial number: 0 (0x00000000)
      Manufacture year:     2023,  Week: 52
   This monitor does not support DDC/CI. (I2C slave address x37 is unresponsive.)

Invalid display
   I2C bus:  /dev/i2c-12
   DRM_connector:           card1-eDP-1
   EDID synopsis:
      Mfg id:               BOE - BOE
      Model:                NE135A1M-NY1
      Product code:         3252  (0x0cb4)
      Serial number:
      Binary serial number: 0 (0x00000000)
      Manufacture year:     2023,  Week: 52
   This monitor does not support DDC/CI. (I2C slave address x37 is unresponsive.)

~ ❯ journalctl --user --no-pager --no-hostname -o short -u plasma-powerdevil.service | cut -d' ' -f4-
systemd[1992]: Starting plasma-powerdevil.service - Powerdevil...
org_kde_powerdevil[7373]: Starting libddcutil. library built Sep  5 2025 at 00:00:00. stdout_stderr_redirected=true
org_kde_powerdevil[7373]: Initializing libddcutil.  ddcutil version: 2.2.1, shared library: /usr/lib64/libddcutil.so.5.3.0
org_kde_powerdevil[7373]: [  7373] Options passed from client:
org_kde_powerdevil[7373]: [  7373] Applying combined libddcutil options:
org_kde_powerdevil[7373]: [  7373] (i2c_detect_x37) Extra x37 sleep: Sleeping for 400 milliseconds
org_kde_powerdevil[7373]: [  7373] (i2c_detect_x37) Extra x37 sleep: Sleeping for 400 milliseconds
org_kde_powerdevil[7373]: [  7373] (i2c_detect_x37) Extra x37 sleep: Sleeping for 400 milliseconds
org_kde_powerdevil[7373]: [  7373] (i2c_detect_x37) Extra x37 sleep: Sleeping for 400 milliseconds
org_kde_powerdevil[7373]: [  7373] (i2c_detect_x37) Extra x37 sleep: Sleeping for 400 milliseconds
org_kde_powerdevil[7373]: [  7373] (i2c_detect_x37) Extra x37 sleep: Sleeping for 400 milliseconds
org_kde_powerdevil[7373]: Library initialization complete.
org_kde_powerdevil[7373]: Watching for DPMS state changes unimplemented
org_kde_powerdevil[7373]: [  7373] Watching for DPMS state changes unimplemented
org_kde_powerdevil[7373]: [  7373] Watching for display connection changes, resolved watch mode = Watch_Mode_Xevent, poll loop interval = 100 millisec
org_kde_powerdevil[7373]: [  7373]                                          extra_stabilization_millisec: 0,  stabilization_poll_millisec: 100
org_kde_powerdevil[7373]: [  7373] libddcutil recheck thread 0x562c441619a0 started
org_kde_powerdevil[7373]: [  7373] libddcutil watch thread 0x562c44152f70 started
org_kde_powerdevil[7373]: [  7578] (dw_recheck_displays_func) Recheck interval: Sleeping for 200 milliseconds
org_kde_powerdevil[7373]: org.kde.powerdevil.chargethresholdhelper.getthreshold failed "Charge thresholds are not supported by the kernel for this hardware"
systemd[1992]: Started plasma-powerdevil.service - Powerdevil.
org_kde_powerdevil[7373]: Handle button events action could not check for screen configuration
org_kde_powerdevil[7373]: org.kde.powerdevil.chargethresholdhelper.getthreshold failed "Charge thresholds are not supported by the kernel for this hardware"
org_kde_powerdevil[7373]: Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: App info not found for 'org.kde.org_kde_powerdevil'")
org_kde_powerdevil[7373]: Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: App info not found for 'org.kde.org_kde_powerdevil'")
org_kde_powerdevil[7373]: org.kde.powerdevil.chargethresholdhelper.getconservationmode failed "Battery conservation mode is not supported"
org_kde_powerdevil[7373]: org.kde.powerdevil.chargethresholdhelper.getconservationmode failed "Battery conservation mode is not supported"

@cmemory I also wonder if that’s the case but I’m currently not willing to revert to the previous version.

Not revert back to a previous version. Merely restore defaults of the existing installed version.