platform-driver-x86.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: bugzilla-daemon@kernel.org
To: platform-driver-x86@vger.kernel.org
Subject: [Bug 221133] New: asus-wmi: keyboard backlight not detected on ASUS Zenbook S 14 UX5406SA due to KBLC flag not set in BIOS
Date: Tue, 24 Feb 2026 15:43:37 +0000	[thread overview]
Message-ID: <bug-221133-215701@https.bugzilla.kernel.org/> (raw)

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.

                 reply	other threads:[~2026-02-24 15:43 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-221133-215701@https.bugzilla.kernel.org/ \
    --to=bugzilla-daemon@kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).