Skip to content

Unable to change brightness while using iGPU only mode. #118

Description

@RPochyly

On my laptop, display brightness cannot be adjusted while the system is switched to integrated-GPU-only mode. By default the kernel only exposes one backlight interface in /sys/class/backlight, and it is not the device that actually drives the panel in iGPU mode. The AMD backlight device (amdgpu_bl1) is missing unless specific kernel parameters are passed, and even once it is present, its default brightness scale is non-linear, leaving the screen visibly dimmer at 100% than in hybrid/dGPU mode. I have also found kernel parameters which should fix all these issues. If this is not the right project for this issue, please redirect me elsewhere.

System information

  • Laptop: ASUS TUF Gaming A16 (FA608WI)
  • iGPU: AMD Radeon 890M
  • dGPU: NVIDIA RTX 4070
  • Distribution: CachyOS
  • Kernel: 7.0.11-1-cachyos
  • AMD driver: mesa 2:26.1.2-1
  • NVIDIA driver: nvidia-open-dkms 610.43.02-3

The laptop supports three graphics modes, and backlight behavior is inconsistent across some of them. Hybrid and dGPU mode work okay, however when switching to iGPU only mode (integrated), the backlight becomes stuck on 100%. Additionally 100% on iGPU is not equal to 100% on Hybrid or dGPU modes.

1. No working backlight device in iGPU-only mode

With a default kernel command line, /sys/class/backlight does not expose the device needed to control brightness in iGPU-only mode. The desktop brightness controls (KDE Plasma slider, brightness keys) do nothing. The correct device, amdgpu_bl1, is not shown in /sys/class/backlight.

2. Non-linear amdgpu brightness scale

The panel is noticeably dimmer at 100% brightness in iGPU-only mode than it is in hybrid or dGPU mode. The cause is the default amdgpu brightness scale being non-linear:

$ cat /sys/class/backlight/amdgpu_bl1/scale
non-linear

In hybrid/dGPU mode the panel reaches full brightness as expected, so this is specific to the amdgpu backlight path.

Steps to reproduce

  1. Boot with a default kernel command line.
  2. Switch the laptop to iGPU-only mode.
  3. Try to change brightness via the Plasma slider, brightness keys, or by writing to /sys/class/backlight/*/brightness.
  4. Observe that brightness does not change (no amdgpu_bl1 device present), or — once the device is forced — that 100% is dimmer than in hybrid/dGPU mode.

Expected behavior

Brightness should be adjustable in all three graphics modes, and 100% brightness should produce the same panel output in iGPU-only mode as it does in hybrid/dGPU mode.

Workarounds

Enable both backlight devices

Add the following kernel parameters to expose both backlight interfaces in /sys/class/backlight:

acpi_backlight=native nvidia_wmi_ec_backlight.force=1

After this, both devices are present:

$ ls /sys/class/backlight/
amdgpu_bl1  nvidia_wmi_ec_backlight

Brightness then has to be written to the device that matches the active mode:

  • iGPU-only mode -> write to amdgpu_bl1
  • Hybrid / dGPU mode -> write to nvidia_wmi_ec_backlight

Fix the non-linear scale (dim-at-100% issue)

Add this additional parameter so the amdgpu backlight uses a brightness curve that reaches full panel brightness:

amdgpu.dcdebugmask=0x40000

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions