* [Bug 221133] New: asus-wmi: keyboard backlight not detected on ASUS Zenbook S 14 UX5406SA due to KBLC flag not set in BIOS
@ 2026-02-24 15:43 bugzilla-daemon
0 siblings, 0 replies; only message in thread
From: bugzilla-daemon @ 2026-02-24 15:43 UTC (permalink / raw)
To: platform-driver-x86
https://bugzilla.kernel.org/show_bug.cgi?id=221133
Bug ID: 221133
Summary: asus-wmi: keyboard backlight not detected on ASUS
Zenbook S 14 UX5406SA due to KBLC flag not set in BIOS
Product: Drivers
Version: 2.5
Hardware: Intel
OS: Linux
Status: NEW
Severity: normal
Priority: P3
Component: Platform_x86
Assignee: drivers_platform_x86@kernel-bugs.osdl.org
Reporter: keithpsu03@gmail.com
Regression: No
System:
• Device: ASUS Zenbook S 14 UX5406SA
• Board: UX5406SA
• BIOS: UX5406SA.308 (06/05/2025)
• Kernel: 6.17.0-14-generic (Ubuntu)
• Platform: Intel Lunar Lake
Bug:
The asus-wmi driver does not create asus::kbd_backlight on this laptop, even
though the keyboard backlight hardware works. GNOME cannot display a brightness
OSD or manage auto-timeout on inactivity.
Root cause:
The WMI DSTS handler for ASUS_WMI_DEVID_KBD_BACKLIGHT (0x00050021) calls the EC
method GLKB(1), which checks KBLC & 0x80. On this laptop, the BIOS does not set
bit 7 of the KBLC ACPI variable, so GLKB(1) returns 0, and the driver's
kbd_led_init() sees -ENODEV from asus_wmi_get_devstate_simple().
However, the DEVS handler for 0x00050021 calls SLKB() unconditionally (no KBLC
check), and the hardware responds correctly:
# Confirm GLKB(1) returns 0 (backlight reported as not present):
echo "\_SB.PC00.LPCB.EC0.GLKB 1" > /proc/acpi/call
cat /proc/acpi/call
# Result: 0x0
# But calling SLKB directly turns on the backlight:
echo "\_SB.PC00.LPCB.EC0.SLKB 0x83" > /proc/acpi/call
cat /proc/acpi/call
# Result: 0x1 (success, backlight turns on)
Relevant DSDT excerpts (BIOS UX5406SA.308):
KBLC is an 8-bit field in the AECO SystemMemory region:
OperationRegion (AECO, SystemMemory, AECB, 0x1F)
Field (AECO, AnyAcc, NoLock, Preserve)
{
AECS, 32, ACPF, 8, DCPF, 8, TPSV, 8, TCRT, 8,
PPSV, 8, DSYN, 8, WOLO, 8, EGBF, 32,
KBLC, 8, // <-- bit 7 gates kbd backlight presence
KBLV, 8,
...
}
GLKB (get keyboard backlight state):
Method (GLKB, 1, NotSerialized)
{
If ((Arg0 == One))
{
Local0 = (KBLC & 0x80)
If (Local0) { Return (One) }
Else { Return (Zero) } // <-- always hits this path
}
ElseIf ((Arg0 == 0x02)) { Return (KBLV) }
ElseIf ((Arg0 == 0x03)) { Return (0x80) }
Return (Ones)
}
SLKB (set keyboard backlight) — works unconditionally:
Method (SLKB, 1, NotSerialized)
{
KBLV = (Arg0 & 0x7F)
If ((Arg0 & 0x80)) { Local0 = DerefOf (PWKB [KBLV]) }
Else { Local0 = Zero }
ST9E (0x1F, 0xFF, Local0)
Return (One)
}
Additional context:
An earlier unit of this same model (before RMA replacement) had the keyboard
backlight working correctly under Linux, suggesting a BIOS update removed or
broke the KBLC bit 7 initialization.
Proposed fix:
Add a DMI quirk for the UX5406SA that skips the KBLC presence check and forces
keyboard backlight support, since the hardware and SLKB setter work correctly
regardless. Something like:
static const struct dmi_system_id asus_wmi_force_kbd_backlight[] = {
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "UX5406SA"),
},
},
{ }
};
And in kbd_led_init(), if the DMI matches, proceed with backlight setup even if
asus_wmi_get_devstate_simple() returns -ENODEV.
Workaround:
Using acpi_call to directly invoke SLKB:
modprobe acpi_call
echo "\_SB.PC00.LPCB.EC0.SLKB 0x83" > /proc/acpi/call
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-02-24 15:43 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-24 15:43 [Bug 221133] New: asus-wmi: keyboard backlight not detected on ASUS Zenbook S 14 UX5406SA due to KBLC flag not set in BIOS bugzilla-daemon
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.