System Info
Hardware: ROG Zephyrus G14 GA403UV OS: CachyOS (applies to any Arch-based distro, likely others too) WM: Niri (likely affects any Wayland compositor without built-in brightness management → Hyprland, Sway, etc.)
Symptoms
brightnessctl/xbacklightdon’t work,/sys/class/backlightis emptyasuctl backlight --screenpad-brightnesserrors withDid not find xyz.ljones.Backlight- Fn+F7/F8 keys do nothing, or change a value without affecting actual screen brightness
Root cause
If you have acpi_backlight=vendor in your kernel parameters (or no backlight parameter set at all), the amdgpu driver logs this and skips registering its backlight:
amdgpu: [drm] Skipping amdgpu DM backlight registration
This leaves you with no working backlight interface.
Fix 1: Kernel parameter
In your bootloader config (Limine, GRUB, etc.), change acpi_backlight=vendor
to:
acpi_backlight=native
After rebooting, /sys/class/backlight/amdgpu_bl2 shauld appear and brightnessctl -d amdgpu_bl2 set 50% should work.
Fix 2: Fn brightness keys on Wayland
The Fn+F7/F8 keys emit KEY_BRIGHTNESSDOWN/UP events on the ASUS keyboard evdev device, but thees never reach Wayland compositors - the asus-wmi kernel driver handles them at a lower level. Adding keybindings in your compositor config won’t help.
Workaround: a small Python script that reads evdev directly and calls brightnessctl.
Install python-evdev, then create /usr/local/bin/brightness-keys.py:
#!/usr/bin/env python3
import evdev, subprocess
device = evdev.InputDevice('/dev/input/event7')
for event in device.read_loop():
if event.type == evdev.ecodes.EV_KEY and event.value ==1:
if event.code == evdev.ecodes.KEY_BRIGHTNESSDOWN:
subprocess.run(['/usr/bin/brightnessctl', '-d', 'amdgpu_bl2', 'set', '5%-'])
elif event.code == evdev.ecodes.KEY_BRIGHTNESSUP:
subprocess.run(['/usr/bin/brightnessctl', '-d', 'amdgpu_bl2' 'set', '+5%'])Note: Verify your ASUS keyboard is on event7 with sudo evtest. It may differ on your system.
Create /etc/sytsemd/system/brightness-keys.service:
[Unit]
Description=ASUS brightness key handler
After=multi-user.target
[Service]
ExecStart=/usr/bin/python3 /usr/local/bin/brightness-keys.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now brightness-keys