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/xbacklight don’t work, /sys/class/backlight is empty
  • asuctl backlight --screenpad-brightness errors with Did 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