# 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

Reply via email to