===============================================================================
HP OMEN 16-am0015ns — BACKLIGHT / BRIGHTNESS CONTROL NOT WORKING UNDER LINUX
Diagnostic report & tested procedures
SYSTEM
Laptop : HP Omen 16-am0015ns
CPU / iGPU : Intel Core Ultra 7 255H (Arrow Lake, Xe iGPU)
dGPU : NVIDIA GeForce RTX 5060 Mobile (proprietary driver 595.x)
RAM : 32 GB
OS : Fedora Linux 44 KDE Plasma (Wayland)
Kernel : 7.0.13-200.fc44.x86_64
BIOS : F.14 (latest available)
Display server: Wayland (KDE Plasma 6)
SYMPTOM
- Screen brightness is stuck at a fixed level.
- KDE brightness slider has NO effect on the physical backlight.
- Brightness Fn keys: with the default config, no working slider; with
acpi_backlight=video the slider/keys respond in the UI but the physical
brightness still does NOT change. - Writing values directly to the sysfs backlight interface is accepted by
the kernel (value is stored) but does NOT change the physical brightness.
===============================================================================
DIAGNOSTIC PROCEDURE (step by step, reproducible)
STEP 1 — Identify registered backlight interfaces
$ ls -la /sys/class/backlight/
intel_backlight → …pci0000:00/0000:00:02.0/drm/card1/card1-eDP-1/intel_backlight
$ cat /sys/class/backlight/intel_backlight/type => raw
$ cat /sys/class/backlight/intel_backlight/max_brightness => 38400
$ cat /sys/class/backlight/intel_backlight/actual_brightness => 23040
Only ONE interface exists by default: intel_backlight (raw, Intel iGPU side).
STEP 2 — Test direct write (bypass KDE and Fn keys)
$ echo 10000 | sudo tee /sys/class/backlight/intel_backlight/brightness
$ echo 30000 | sudo tee /sys/class/backlight/intel_backlight/brightness
RESULT: value is accepted, but the physical screen brightness does NOT change.
=> The interface exists but is disconnected from the actual panel PWM/control.
STEP 3 — Inspect kernel boot messages for video/backlight
$ sudo dmesg | grep -iE “backlight|brightness|acpi.*video”
ACPI: video: Video Device [PXSX] (multi-head: no rom: yes post: no)
ACPI: video: Video Device [GFX0] (multi-head: yes rom: no post: no)
TWO ACPI video devices are registered:
- PXSX => PCIe subtree (NVIDIA side)
- GFX0 => Intel iGPU side
STEP 4 — Map DRM cards, drivers and eDP panels
$ readlink -f /sys/class/drm/card0/device/driver => nvidia
$ readlink -f /sys/class/drm/card1/device/driver => i915
eDP panels found:
card0-eDP-2 → pci 0000:01:00.0 (NVIDIA RTX 5060)
card1-eDP-1 → pci 0000:00:02.0 (Intel iGPU)
KEY FINDING: there are TWO eDP endpoints, one on each GPU.
The only backlight interface (intel_backlight) lives on the Intel eDP,
but the physical panel appears to be routed/controlled through the NVIDIA side.
STEP 5 — Check NVIDIA WMI EC backlight path
$ modinfo nvidia_wmi_ec_backlight
=> module EXISTS (description: NVIDIA WMI EC Backlight driver)
$ ls /sys/class/wmi/ => empty
$ ls /sys/bus/wmi/devices/ => 21 WMI GUIDs listed, but NONE is
603E9613-EF25-4338-A3D0-C46177516DB7
(the GUID required by nvidia_wmi_ec_backlight)
$ sudo modprobe nvidia_wmi_ec_backlight
=> loads with exit 0 but creates NO interface (GUID absent from firmware)
Additional firmware errors in dmesg:
ACPI Error: Aborting method _SB.WMID.WQBZ … (AE_AML_BUFFER_LIMIT)
ACPI Error: Aborting method _SB.WMID.WQBE … (AE_AML_BUFFER_LIMIT)
=> The NVIDIA WMI EC backlight method cannot bind: HP firmware does not
expose the required WMI GUID, and some WMI methods fail with buffer errors.
STEP 6 — Inspect ACPI tables (DSDT + 24 SSDTs)
$ sudo cp /sys/firmware/acpi/tables/{DSDT,SSDT*} . (extract all tables)
$ iasl -d SSDT14.dat (decompile)
Brightness methods _BCL / _BCM / _BQC are present under:
Scope (_SB.PC00.GFX0) ← Intel graphics node
Device (DD1F) { _BCL, _BCM, _BQC }
Device (DD2F) { _BCL, _BCM, _BQC }
=> The ACPI brightness methods DO exist under the Intel GFX0 node in SSDT14,
yet they produce no physical effect (panel control is on the NVIDIA side).
===============================================================================
TESTED KERNEL PARAMETERS (acpi_backlight) — ALL VIA grubby, PERSISTENT
Applied with:
sudo grubby --update-kernel=ALL --args=“acpi_backlight=VALUE”
Removed with:
sudo grubby --update-kernel=ALL --remove-args=“acpi_backlight=VALUE”
±------------------------±-----------------------------±---------------+
| Parameter | Interfaces after reboot | Physical effect|
±------------------------±-----------------------------±---------------+
| (default, none) | intel_backlight | NONE |
| acpi_backlight=native | intel_backlight | NONE |
| acpi_backlight=vendor | (none - list empty) | NONE (worse) |
| acpi_backlight=video | acpi_video0, acpi_video1 | NONE* |
±------------------------±-----------------------------±---------------+
- with acpi_backlight=video the KDE slider and Fn keys DO respond and the
values update (scale 0-100), but the physical brightness still does NOT
change on any of the interfaces.
===============================================================================
CONCLUSION (so far)
- None of the standard Linux backlight mechanisms (Intel native PWM,
acpi_video) actually control the physical panel backlight. - The panel is routed/controlled through the NVIDIA dGPU side.
- The NVIDIA WMI EC backlight driver cannot bind because HP firmware does
not expose the required WMI GUID (603E9613-EF25-4338-A3D0-C46177516DB7). - Moving the ACPI _BCL/_BCM/_BQC methods via a DSDT override is unlikely to
help, because the problem is the physical control path (panel on NVIDIA),
not the location of the methods in the ACPI tree.
===============================================================================
ADDITIONAL PARAMETERS TESTED (all applied and reverted, none worked)
A) Intel eDP AUX/DPCD backlight (acts on intel_backlight, iGPU side):
sudo grubby --update-kernel=ALL --args=“i915.enable_dpcd_backlight=1”
Rationale: some eDP panels control backlight over the AUX channel (DPCD
registers) instead of PWM; i915 defaults to PWM which may not work.
RESULT: no change. Still only intel_backlight (type stays “raw”), no
physical effect. DISCARDED.
B) NVIDIA backlight handler (acts on NVIDIA side):
nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1
Note: NVreg_EnableBacklightHandler is NOT available in this driver
(595.80 Open) - confirmed absent via modinfo nvidia. NVIDIA removed it.
Only the RegistryDwords=EnableBrightnessControl key could be tested.
RESULT: parameter confirmed active in /proc/cmdline, but no NVIDIA
backlight interface was created (no nvidia_0), physical brightness
unchanged. DISCARDED.
DRIVER ALTERNATIVE RULED OUT:
The RTX 5060 is Blackwell architecture. Per NVIDIA documentation, Blackwell
GPUs are supported ONLY by the open-source kernel modules; the legacy
proprietary (closed) kernel module is not available for this GPU. Therefore
switching to the “proprietary” driver branch to change backlight behaviour
is NOT possible - the 595.80 Open module is the only official NVIDIA driver
for this card.
===============================================================================
FINAL CONCLUSION
Every standard Linux backlight mechanism has been tested and none controls
the physical panel:
- acpi_backlight = native / vendor / video
- i915.enable_dpcd_backlight=1
- nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1
No alternative NVIDIA driver branch exists for Blackwell to try.
Root cause is upstream, not local configuration:
- The physical panel is routed/controlled through the NVIDIA side.
- HP firmware does not expose the WMI GUID required by
nvidia_wmi_ec_backlight (603E9613-EF25-4338-A3D0-C46177516DB7). - Some HP WMI methods fail with AE_AML_BUFFER_LIMIT.
Resolution will require either an HP firmware update exposing the WMI GUID,
or improved Arrow Lake / Blackwell backlight support in a future kernel /
NVIDIA driver release.
===============================================================================
REFERENCE BUG REPORTS
- kernel.org Bugzilla (ACPI component): #221530, #221648
- NVIDIA open-gpu-kernel-modules GitHub: #1202
- HP community forum thread (this report)
===============================================================================
NOTE: Secure Boot is disabled. NVIDIA proprietary driver in use.
nouveau/nova_core blacklisted. Kernel cmdline includes
nvidia-drm.modeset=1 nvidia-drm.fbdev=1.