All of lore.kernel.org
 help / color / mirror / Atom feed
* ideapad-laptop: duplicate KEY_MICMUTE events on ThinkBook 14 G7 ARP (ACPI and WMI both report)
@ 2026-09-11  2:49 Kevin Charpentier
  2026-09-11  9:01 ` Alice Mikityanska
  0 siblings, 1 reply; 4+ messages in thread
From: Kevin Charpentier @ 2026-09-11  2:49 UTC (permalink / raw)
  To: r.; +Cc: hansg, markgross, platform-driver-x86

Hi,

I am reporting a bug where the mic-mute key (Fn+F4) is reported twice by
ideapad-laptop on a Lenovo ThinkBook 14 G7 ARP, which makes the key appear
not to work at all under GNOME.

This is my first report to this list, so please let me know if anything is
missing or should be sent differently.

System
------
Machine:  Lenovo ThinkBook 14 G7 ARP (21MV)
BIOS:     P6CN34WW, 03/10/2026 (EC 1.37, BIOS release 1.34)
Kernel:   7.2.4-200.fc44.x86_64 (Fedora 44)
Module:   drivers/platform/x86/lenovo/ideapad-laptop.ko

DMI modalias:
dmi:bvnLENOVO:bvrP6CN34WW:bd03/10/2026:br1.34:efr1.37:svnLENOVO:pn21MV:pvrThinkBook14G7ARP:rvnLENOVO:rnLNVNB161216:rvrNODPK:cvnLENOVO:ct10:cvrThinkBook14G7ARP:skuLENOVO_MT_21MV_BU_idea_FM_ThinkBook14G7ARP:pfaThinkBook14G7ARP:

Symptom
-------
Pressing Fn+F4 appears to do nothing. The GNOME on-screen indicator does
appear and the mic-mute LED blinks, but the microphone mute state is
unchanged. Roughly one press out of several does take effect, which I
believe happens when the firmware drops one of the two notifications.

The key is not unmapped: KEY_MICMUTE is emitted correctly. It is emitted
twice per physical keypress, 1-7 ms apart, so the userspace toggle is
applied an even number of times and the state returns to its original
value before anything can observe it.

Note that polling the mute state does not reveal this. Both toggles happen
within ~7 ms, so a 100 ms poll of the PipeWire source sees no change at all
and the key looks completely dead.

Evidence
--------
Three physical keypresses, via `sudo libinput debug-events --show-keycodes`.
Note the millisecond-apart pairs, which cannot be produced by a finger:

-event12  KEYBOARD_KEY   +0.860s    KEY_MICMUTE (248) pressed
 event12  KEYBOARD_KEY   +0.860s    KEY_MICMUTE (248) released
 event12  KEYBOARD_KEY   +0.867s    KEY_MICMUTE (248) pressed
 event12  KEYBOARD_KEY   +0.868s    KEY_MICMUTE (248) released
 event12  KEYBOARD_KEY   +3.137s    KEY_MICMUTE (248) pressed
 event12  KEYBOARD_KEY   +3.137s    KEY_MICMUTE (248) released
 event12  KEYBOARD_KEY   +3.140s    KEY_MICMUTE (248) pressed
 event12  KEYBOARD_KEY   +3.140s    KEY_MICMUTE (248) released
 event12  KEYBOARD_KEY   +4.886s    KEY_MICMUTE (248) pressed
 event12  KEYBOARD_KEY   +4.886s    KEY_MICMUTE (248) released
 event12  KEYBOARD_KEY   +4.891s    KEY_MICMUTE (248) pressed
 event12  KEYBOARD_KEY   +4.891s    KEY_MICMUTE (248) released

All events come from the same input device, "Ideapad extra buttons"
(phys=ideapad/input0), created by ideapad-laptop.

Analysis
--------
On this machine ideapad-laptop is bound to two devices at the same time,
and both report this key into the same input device:

  1. ACPI: platform device VPC2004:00 (driver ideapad_acpi)
  2. WMI:  8FC0DE0C-B4E4-43FD-B0F3-8871711C1294-17 (driver ideapad_wmi),
           notify_id D0, instance_count 1

Unbinding the WMI device removes the duplicate completely:

  echo 8FC0DE0C-B4E4-43FD-B0F3-8871711C1294-17 > \
       /sys/bus/wmi/drivers/ideapad_wmi/unbind

After the unbind, the same three keypresses produce single events, with
human-scale gaps instead of millisecond pairs:

 event12  KEYBOARD_KEY   +0.298s    KEY_MICMUTE (248) pressed/released
 event12  KEYBOARD_KEY   +1.043s    KEY_MICMUTE (248) pressed/released
 event12  KEYBOARD_KEY   +2.880s    KEY_MICMUTE (248) pressed/released

The key then works correctly in GNOME, and so does the mic-mute LED.

I also verified that unbinding the WMI device does not regress anything
else exposed by the driver: fn_lock, conservation_mode, camera_power,
usb_charging and fan_mode still respond, the platform::fnlock,
platform::kbd_backlight, platform::mute and platform::micmute LEDs are
still present, and the kernel logs no errors.

Questions
---------
I am not sure where the fix belongs, so I am reporting rather than
proposing a patch:

  - Is the firmware expected to notify this key on both the ACPI and the
    WMI path, with the driver responsible for reporting it only once?
  - Or should ideapad-laptop not register the WMI hotkey path on models
    where the ACPI path already reports these keys?

I am happy to test patches or gather any further information. I can also
provide the full acpidump, the WMI BMOF dump, or udev debug logs if that
helps.

Workaround for other users of this model
----------------------------------------
A udev rule that unbinds the WMI device at boot:

ACTION=="bind", SUBSYSTEM=="wmi",
ATTR{guid}=="8FC0DE0C-B4E4-43FD-B0F3-8871711C1294", RUN+="/bin/sh -c
'grep -qx 21MV /sys/class/dmi/id/product_name && echo %k >
/sys/bus/wmi/drivers/ideapad_wmi/unbind'"

Thanks,
Kevin Christian Charpentier

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-09-11 21:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-11  2:49 ideapad-laptop: duplicate KEY_MICMUTE events on ThinkBook 14 G7 ARP (ACPI and WMI both report) Kevin Charpentier
2026-09-11  9:01 ` Alice Mikityanska
2026-09-11 14:45   ` Kevin Charpentier
2026-09-11 21:56     ` Alice Mikityanska

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.