HP OMEN 16-am0015ns: brightness control non-functional

===============================================================================

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.