All of lore.kernel.org
 help / color / mirror / Atom feed
* [Bug 221107] New: Acer Swift SF16-51: Fn+F9 airplane mode key generates no events (EC firmware bug)
@ 2026-02-20  7:20 bugzilla-daemon
  0 siblings, 0 replies; only message in thread
From: bugzilla-daemon @ 2026-02-20  7:20 UTC (permalink / raw)
  To: platform-driver-x86

https://bugzilla.kernel.org/show_bug.cgi?id=221107

            Bug ID: 221107
           Summary: Acer Swift SF16-51: Fn+F9 airplane mode key generates
                    no events (EC firmware bug)
           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: desireall@naver.com
        Regression: No

Created attachment 309408
  --> https://bugzilla.kernel.org/attachment.cgi?id=309408&action=edit
DSDT/SSDT decompilation, dmesg, rfkill state, WMI devices, and module list for
Acer Swift SF16-51

# [BUG] Acer Swift SF16-51: Fn+F9 airplane mode key generates no events

## System Information
- **Model**: Acer Swift SF16-51 (DMI: Milkfish_LNV)
- **BIOS**: V1.31 (11/13/2025)
- **Kernel**: 6.19.3-2-cachyos (Arch-based)
- **Modules**: acer_wmi, intel_hid, wmi_bmof loaded

## Problem Description

The Fn+F9 key (airplane mode toggle) on the Acer Swift SF16-51 generates **no
events** visible to the OS:

- No WMI notifications (acpi_listen shows nothing)
- No input events on any device (evtest, keyd -m show nothing)
- No dmesg output
- No rfkill state changes
- No ACPI events of any kind

Other Fn keys work:
- Fn+F10 (touchpad): WMI event 0xBC on PNP0C14:00 (function=1, key=0x82)
- Fn+F4 (mic mute): F15 scancode via I2C HID keyboard

## DSDT Analysis

### EC Query _Q02 (wireless toggle)
The DSDT defines `_Q02` as the wireless/communication button handler:
```asl
Method (_Q02, 0, NotSerialized)
{
    HKEV (0x02, One)
}
```

### HKEV dispatches WMI notification 0xBC
```asl
Method (HKEV, 2, NotSerialized)
{
    ^^^WMID.FEBC [Zero] = Arg0  // function = 0x02
    ^^^WMID.FEBC [One] = Arg1   // key_num = 0x01
    ^^^WMID.FEBC [0x02] = Zero
    ^^^WMID.FEBC [0x03] = Zero
    Notify (WMID, 0xBC)
}
```

The _WDG table in SSDT24 confirms notification 0xBC maps to
`676AA15E-6A47-4D9F-A2CC-1E6D18D14026` (ACERWMID_EVENT_GUID).

### Two bugs identified

**Bug 1 (firmware/EC):** Pressing Fn+F9 does NOT trigger `_Q02`. The EC
firmware appears to not have Fn+F9 mapped to fire any EC query method. The DSDT
defines the handler, but the EC never calls it.

**Bug 2 (acer_wmi driver):** Even if `_Q02` were triggered, `acer_wmi` does not
handle `function=2` in its event dispatch:

```c
// acer_wmi_notify() switch only handles:
// 0x1 = WMID_HOTKEY_EVENT
// 0x4 = WMID_BACKLIGHT_EVENT
// 0x5 = WMID_ACCEL_OR_KBD_DOCK_EVENT
// 0x7 = WMID_GAMING_TURBO_KEY_EVENT
// 0x8 = WMID_AC_EVENT
// 0x2 = NOT HANDLED (communication button)
```

The driver would log: `"Unknown function number - 2 - 1"`

## Additional Observations

### Boot-time unknown function
At boot, dmesg shows:
```
acer_wmi: Unknown function number - 9 - 1
```
This corresponds to `_QCA` in the DSDT:
```asl
Method (_QCA, 0, NotSerialized)
{
    Sleep (0xC8)
    HKEV (0x09, Zero)
}
```
Function 9 is also unhandled by the driver.

### Missing acer-wireless device
The `acer-wireless` driver expects ACPI HID `10251229` (SMKB device), which
does **not exist** on this laptop. The wireless toggle path goes through WMI
(HKEV/WMID) instead.

### Intel HID 5 button array
Enabling `intel_hid` 5-button array (`enable_5_button_array=Y`) did not help.
The DSDT
has `_QE0`/`_QE1` methods gated by `BTLD` (set by Intel HID `BTNL()`) and `OSYS
>= 0x07DF`,
but these appear to be for different button events, not specifically Fn+F9.

### Forced acer_wmi capabilities
Reloading with `force_caps=0xFFFF` did not produce events for Fn+F9.

### Windows comparison
Fn+F9 airplane mode **works correctly on Windows** with the same hardware/BIOS.
This confirms the EC hardware can generate the event, but the EC firmware
selectively does not fire `_Q02` under Linux (possibly based on OSYS or
another OS detection mechanism).

## Diagnostic Steps Performed

1. `acpi_listen` - no WMI events from Fn+F9
2. `evtest` on event2, event11, event12, event20 - no input events
3. `keyd -m` (monitors all input devices) - no events
4. `dmesg` monitoring after clearing - no kernel messages
5. `rfkill list` before/after - no state change
6. Reloaded `acer_wmi` with `force_caps=0xFFFF`
7. Reloaded `intel_hid` with `enable_5_button_array=Y`
8. DSDT decompilation and analysis
9. Confirmed Fn+F9 works on Windows (same BIOS V1.31)

## Proposed Fix

### For acer_wmi driver:
Add handling for `function=2` (communication button) and `function=9` in
`acer_wmi_notify()`:

```c
case 0x02: /* Communication button - wireless toggle */
    /* Same as WMID_HOTKEY_EVENT but for wireless */
    if (return_value.key_num == 0x01)
        sparse_keymap_report_event(acer_wmi_input_dev,
            return_value.key_num, 1, true);
    break;
```

Also add scancode 0x01 → KEY_RFKILL to the sparse keymap for function=2 events.

### For EC firmware (Acer BIOS team):
Map Fn+F9 to EC query `_Q02` so the OS receives the wireless toggle event.

## Attached Files
- `dsdt.dsl` - Decompiled DSDT
- `dsdt.bin` - Raw DSDT binary
- `ssdt24-wmid.dsl` - Decompiled SSDT24 (contains WMID device definition)
- `dmesg-acer-wmi.txt` - Boot dmesg (acer/wmi filtered)
- `wmi-devices.txt` - WMI GUID listing with driver bindings
- `loaded-modules.txt` - Relevant loaded modules
- `rfkill-state.txt` - rfkill device listing

-- 
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-20  7:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-20  7:20 [Bug 221107] New: Acer Swift SF16-51: Fn+F9 airplane mode key generates no events (EC firmware bug) 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.