Wayland using wrong backlight device on Ubuntu (AMD + NVIDIA laptop)

I am dual-booting Ubuntu 24.04.4 LTS on an ASUS Zephyrus G14. When using Wayland, the default brightness device is being incorrectly configured to nvidia_0, which is entirely useless and doesn’t do anything.

The device that actually controls the brightness is amdgpu_bl1, but Wayland ignores it completely. Because of this, my brightness keys and the GNOME quick settings slider do absolutely nothing. I currently have to manually type a command specifying the AMD device to change my screen brightness.

Interestingly, if I log into an X11 session, it correctly uses amdgpu_bl1 and everything works out of the box. Only Wayland is giving me this mapping error.

What I found:

Checking /sys/class/backlight:

amdgpu_bl1 -> .../drm/card1/card1-eDP-1/amdgpu_bl1
nvidia_0   -> .../01:00.0/backlight/nvidia_0

Running readlink:

readlink -f /sys/class/backlight/amdgpu_bl1 
/sys/devices/pci0000:00/0000:00:08.1/0000:65:00.0/drm/card1/card1-eDP-1/amdgpu_bl1 

readlink -f /sys/class/backlight/nvidia_0
/sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/backlight/nvidia_0 

Checking DRM and GPUs:

/sys/class/drm/card1-eDP-1/status: connected

GPUs:
card1 -> AMD Phoenix (iGPU)
card2 -> NVIDIA RTX 4060 (dGPU)

The actual hardware mapping is clearly: eDP-1 (internal display) ➔ card1 (AMD iGPU) ➔ amdgpu_bl1 (real backlight)

Meanwhile, nvidia_0 is essentially a ghost device not connected to any display. So clearly amdgpu_bl1 is correct, yet Wayland stubbornly defaults to nvidia_0.

What I have tried (with no success):

Kernel parameters: Tried acpi_backlight=native ➔ Absolutely no change. Tried acpi_backlight=video ➔ Removed previous devices and created a new acpi_video0 device, which was just as broken as nvidia_0.

Terminal commands: brightnessctl -d amdgpu_bl1 set 50% works flawlessly, confirming this is purely a software/mapping issue and the hardware works fine.

Udev rule: Wrote a rule to suppress NVIDIA: SUBSYSTEM=="backlight", KERNEL=="nvidia_0", ATTR{brightness}="0". GNOME still targets nvidia_0; using the slider just tries to change nvidia_0 but keeps resetting it to 0. It refuses to fall back to the AMD device.

SO How do I force GNOME / logind on Wayland to use /sys/class/backlight/amdgpu_bl1 as the primary backlight controller instead of nvidia_0 or acpi_video0?

X11 gets this mapping (DRM ➔ backlight) right automatically. What is going wrong in the Wayland stack, and how can I manually override it?