# Update: Backlight fix found — `nvidia_wmi_ec_backlight` was blacklisted by default
## Summary The primary cause of non-functional backlight on the ASUS TUF Gaming A16 FA608WI has been identified: **the `nvidia_wmi_ec_backlight` kernel module is blacklisted by default** in the Ubuntu nvidia-driver package (`/etc/modprobe.d/blacklist-nvidia-wmi-ec-backlight.conf`), despite the laptop's WMI GUID (`603E9613-EF25-4338-A3D0-C46177516DB7`) being present and functional. Once the blacklist is removed and `acpi_backlight=nvidia_wmi_ec` is passed as a kernel parameter, backlight control works correctly via `/sys/class/backlight/nvidia_wmi_ec_backlight/`. ## Environment * **Laptop**: ASUS TUF Gaming A16 FA608WI * **BIOS**: FA608WI.309 (upgraded from 305; ACPI bugs persist in both) * **Kernel**: 6.17.0-14-generic (Ubuntu 24.04.3 LTS, HWE) * **NVIDIA driver**: 535.288.01 * **iGPU**: AMD Radeon (display controller 1002:150e) * **dGPU**: NVIDIA RTX 4070 Max-Q (AD106M, 10de:2860) ## Root Cause The Ubuntu `nvidia-driver-535` package installs: ``` /etc/modprobe.d/blacklist-nvidia-wmi-ec-backlight.conf ``` which contains: ``` blacklist nvidia_wmi_ec_backlight ``` This prevents the `nvidia_wmi_ec_backlight` module from auto-loading, even though the laptop's firmware exposes the required WMI interface (`603E9613-EF25-4338-A3D0-C46177516DB7` is present under `/sys/bus/wmi/devices/`). Without `nvidia_wmi_ec_backlight`, the backlight registration chain fails completely: 1. **NVIDIA side** (`nvidia-modeset`): Reports "no NVIDIA native backlight available; attempting to use ACPI backlight" — but ACPI backlight also fails due to DSDT firmware bugs (see below). No sysfs entry created. 2. **AMD side** (`amdgpu`): Skips backlight registration entirely: `amdgpu: [drm] Skipping amdgpu DM backlight registration` 3. **ACPI side**: `acpi_video` encounters firmware bug: `ACPI(PEGP) defines _DOD but not _DOS` 4. **Result**: `/sys/class/backlight/` is completely empty. No backlight control is possible. ## The Fix ### Step 1: Remove the blacklist ```bash sudo rm /etc/modprobe.d/blacklist-nvidia-wmi-ec-backlight.conf ``` ### Step 2: Set the correct `acpi_backlight` kernel parameter Add to `GRUB_CMDLINE_LINUX_DEFAULT` in `/etc/default/grub`: ``` acpi_backlight=nvidia_wmi_ec ``` **Important**: `acpi_backlight=native` does NOT work — it causes `amdgpu_bl*` and `nvidia_0` to register instead, and those interfaces accept writes but do not change the physical panel brightness. Only `nvidia_wmi_ec` selects the correct WMI EC path. ### Step 3: Rebuild and reboot ```bash sudo update-grub sudo update-initramfs -u sudo reboot ``` ### Verification After reboot: ```bash $ ls /sys/class/backlight/ nvidia_wmi_ec_backlight $ cat /sys/class/backlight/nvidia_wmi_ec_backlight/max_brightness 255 $ echo 128 | sudo tee /sys/class/backlight/nvidia_wmi_ec_backlight/brightness # Screen brightness changes immediately ✓ ``` ## Quick test (no reboot required) Before making permanent changes, the fix can be verified live: ```bash sudo modprobe nvidia_wmi_ec_backlight ls /sys/class/backlight/ # If "nvidia_wmi_ec_backlight" appears, write to it to test echo 128 | sudo tee /sys/class/backlight/nvidia_wmi_ec_backlight/brightness ``` Note: the live test only works if no other backlight interface has already claimed the slot. If `/sys/class/backlight/` already has entries (e.g., from `acpi_backlight=native`), the module will load but not register a new interface. In that case, the kernel parameter change is required. ## Additional findings ### BIOS 309 did not fix ACPI bugs The BIOS upgrade from 305 to 309 did **not** resolve: * `ACPI(PEGP) defines _DOD but not _DOS` — firmware bug in the NVIDIA GPU's ACPI node * `Could not resolve symbol [\_TZ.THRM._SCP.CTYP], AE_NOT_FOUND` — broken thermal ACPI method * The `BRTN` dual-notification issue (notifying both AMD LCD and NVIDIA eDP) described in the original report These ACPI bugs are still present but are **not blockers** — the WMI EC backlight path bypasses them entirely. ### Invalid `NVreg_EnableBacklightHandler` parameter The file `/etc/modprobe.d/nvidia-backlight.conf` (if created manually) with: ``` options nvidia NVreg_EnableBacklightHandler=1 ``` is silently ignored by driver 535 (`unknown parameter 'NVreg_EnableBacklightHandler' ignored`). This parameter existed in older driver versions but has been removed. It can safely be deleted. ### Remaining issue: Adaptive Backlight Management (ABM) After fixing the backlight, panel brightness still fluctuates based on displayed content. This is AMD's Adaptive Backlight Management (ABM) feature, controlled by `power-profiles-daemon` >= 0.20 which writes to `/sys/class/drm/card*-eDP-*/amdgpu/panel_power_savings`. The kernel parameter `amdgpu.abmlevel=0` sets the initial value but `power-profiles-daemon` can override it at runtime. To fully disable ABM: ```bash # Option A: Block power-profiles-daemon from controlling panel power sudo mkdir -p /etc/systemd/system/power-profiles-daemon.service.d cat <<EOF | sudo tee /etc/systemd/system/power-profiles-daemon.service.d/no-abm.conf [Service] ExecStart= ExecStart=/usr/libexec/power-profiles-daemon --block-action=amdgpu_panel_power EOF sudo systemctl daemon-reload sudo systemctl restart power-profiles-daemon # Option B: Kernel parameter (prevents ABM at driver level) amdgpu.abmlevel=0 ``` This is a separate issue from the backlight bug and affects many AMD iGPU laptops on kernel >= 6.9. ## Final working kernel command line ``` GRUB_CMDLINE_LINUX_DEFAULT="pci=noaer nvidia.NVreg_DynamicPowerManagement=0 nvidia-drm.modeset=1 processor.max_cstate=1 acpi_backlight=nvidia_wmi_ec amdgpu.abmlevel=0" ``` ## Impact assessment This is likely affecting **all Ubuntu users with hybrid AMD iGPU + NVIDIA dGPU laptops** where the backlight is routed through the EC via WMI. The blacklist file is installed by the Ubuntu nvidia-driver package and prevents the correct backlight module from loading. The fix is a one-line file deletion plus a kernel parameter. The blacklist was presumably added to avoid conflicts on some hardware, but on laptops like the FA608WI where the WMI EC path is the *only* functional backlight mechanism, it completely breaks brightness control. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2134615 Title: ASUS TUF A16 (FA608WI): backlight interfaces present but do not change panel brightness (AMD iGPU + NVIDIA dGPU) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux-hwe-6.14/+bug/2134615/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
