· Kalpa Madhushan · linux · 3 min read
Fix Brightness Control Not Working on ASUS TUF A15 with Pop OS COSMIC
Brightness keys and slider not working on ASUS TUF A15 with hybrid AMD+NVIDIA graphics on Pop!_OS COSMIC? Here is the exact one-command fix that actually works, plus everything else we tried that didn't.

Fix Brightness Control Not Working on ASUS TUF A15 with Pop OS (COSMIC)
Hardware: ASUS TUF Gaming A15
CPU: AMD Ryzen 7
GPU: NVIDIA RTX 2050 + AMD Radeon 680M (hybrid)
OS: Pop!_OS 24.04 LTS with COSMIC desktop
Kernel: 6.x (systemd-boot)
The Problem
After installing Pop!_OS on an ASUS TUF A15 with hybrid AMD+NVIDIA graphics, the brightness control simply does not work. Symptoms:
- Brightness slider in COSMIC settings moves but screen doesn’t change
- Fn brightness keys show the OSD bar going up/down but nothing happens visually
/sys/class/backlight/only showsnvidia_wmi_ec_backlightinstead of an AMD backlight device
Why This Happens
On ASUS TUF laptops with hybrid AMD+NVIDIA graphics, the display is physically driven by the AMD iGPU (Radeon 680M) — but the Linux kernel’s ACPI layer hands backlight control to the NVIDIA WMI driver (nvidia_wmi_ec_backlight). This driver has no real control over the panel brightness on this hardware, so all brightness changes are silently ignored.
The fix is to tell the kernel to use the native AMD backlight driver instead.
What Doesn’t Work (Save Yourself the Pain)
Before jumping to the fix, here’s what won’t work on this setup so you don’t waste time like we did:
- GNOME extensions (e.g. Soft Brightness) — COSMIC is not GNOME, extensions don’t apply
xrandr --brightness—xrandr --listprovidersreturns 0 providers on COSMIC/Wayland; commands run silently but do nothingwlsunset/wl-gammarelay— COSMIC’s compositor (cosmic-comp) does not yet supportwlr-gamma-control-unstable-v1ddcutil— eDP laptop panels don’t support DDC/CI protocol- Writing directly to
/sys/class/backlight/nvidia_wmi_ec_backlight/brightness— the file accepts writes but the screen ignores them - GTK overlay dimmer apps — Wayland layer shell overlays either block mouse input or don’t render correctly on COSMIC
- Editing
/boot/efi/loader/entries/Pop_OS-current.confmanually — can cause COSMIC session to fail to start on reboot
The Fix
Pop!_OS uses kernelstub to manage kernel boot parameters (not GRUB). Use it to add the acpi_backlight=native parameter, which forces the kernel to use the AMD native backlight driver:
sudo kernelstub --add-options "acpi_osi=! acpi_backlight=native"Then reboot:
sudo rebootVerify It Worked
After rebooting, check the backlight device:
ls /sys/class/backlight/You should now see amdgpu_bl0 instead of (or alongside) nvidia_wmi_ec_backlight:
amdgpu_bl0Your brightness keys, COSMIC brightness slider, and all system brightness controls should now work correctly.
Cleanup
If you installed packages during troubleshooting that you no longer need:
sudo apt remove wlsunset ddcutil i2c-tools libi2c0 libx86-1 read-edid --autoremove -y
sudo apt remove libgtk-layer-shell0 gir1.2-gtklayershell-0.1 --autoremove -y
rm -f ~/dimmer.pyWhy kernelstub and Not Editing the Boot Entry Directly?
Pop!_OS uses systemd-boot with EFI stub loading. The boot entry lives at /boot/efi/loader/entries/Pop_OS-current.conf. While you can edit this file manually, Pop!_OS can overwrite it on kernel updates. kernelstub writes parameters persistently so they survive kernel updates. It is the correct and safe way to manage boot parameters on Pop!_OS.
References
- Pop!_OS GitHub Issue #3694 — ASUS TUF A17 brightness fix
- DEV.to — Fix brightness not working on Linux gaming laptops with hybrid GPU
Tested on ASUS TUF Gaming A15 with Pop!_OS 24.04 COSMIC. If this helped you, hopefully it saved you the full day it took us to figure out.




