Bug 104041

Summary: Asus Wireless Radio Control no longer works after updating to 1.9.3
Product: Wayland Reporter: Maxim Mikityanskiy <maxtram95>
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: medium CC: anarchist4000, maxtram95, peter.hutterer
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: evemu-record /dev/input/event3

Description Maxim Mikityanskiy 2017-12-02 22:46:21 UTC
Created attachment 135882 [details]
evemu-record /dev/input/event3

I'm on Arch Linux and ASUS E202SA laptop. This laptop (like many ASUSes) has a dedicated button to turn the wireless devices on and off. This button is Fn+F2, but it's actually a separate input device provided by asus_wireless kernel module.

This button works fine in X11 with libinput 1.9.2 although some patching of xkeyboard-config is required: https://patchwork.freedesktop.org/patch/155965/ (I have no clue why this change is still not upstreamed, but I have patched it locally). This xkeyboard-config patch is required for X11 to recognize KEY_RFKILL that is sent by asus_wireless driver.

However, libinput 1.9.3 introduced a regression: this button no longer works in X11. Faulty is the combination of libinput 1.9.3 and asus_wireless's input device. If I either use libinput 1.9.2 or press KEY_RFKILL on the atkbd (I remapped a key with udev to test that), it gets delivered to X11 and shows up as XF86WLAN. But for some reason, libinput 1.9.3 ignores asus_wireless's "keyboard".


git bisect results:

git bisect start
# bad: [05a2da818b7ff6d629b90611e8b4a0e06eb5b0ba] libinput 1.9.3
git bisect bad 05a2da818b7ff6d629b90611e8b4a0e06eb5b0ba
# good: [56bcb2999e92b0814768cdcf075dd87a5b09e446] libinput 1.9.2
git bisect good 56bcb2999e92b0814768cdcf075dd87a5b09e446
# good: [fc78e88870ef06623454c723b4a535ad39b8b544] fallback: drop unused ratelimit struct
git bisect good fc78e88870ef06623454c723b4a535ad39b8b544
# bad: [c77b6b4c96ccaf9a1f5e490c6ed6368eab2f9236] evdev: add new debouncing code
git bisect bad c77b6b4c96ccaf9a1f5e490c6ed6368eab2f9236
# bad: [8c55bc060df837f986f57c8c26ae2f9c58963bcc] fallback: change to handle the state at EV_SYN time
git bisect bad 8c55bc060df837f986f57c8c26ae2f9c58963bcc
# good: [52cdbc1299b63e5f03abdc9b4357de55f3919e1a] evdev: fix axis mixup for the wheel click angles
git bisect good 52cdbc1299b63e5f03abdc9b4357de55f3919e1a
# first bad commit: [8c55bc060df837f986f57c8c26ae2f9c58963bcc] fallback: change to handle the state at EV_SYN time


evtest output when I press Fn+F2 once:

# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	Lid Switch
/dev/input/event1:	Sleep Button
/dev/input/event2:	Power Button
/dev/input/event3:	Asus Wireless Radio Control
/dev/input/event4:	PC Speaker
/dev/input/event5:	USB2.0 VGA UVC WebCam: USB2.0 V
/dev/input/event6:	Video Bus
/dev/input/event7:	Elan Touchpad
/dev/input/event8:	AT Translated Set 2 keyboard
/dev/input/event9:	Asus WMI hotkeys
/dev/input/event10:	HDA Digital PCBeep
/dev/input/event11:	HDA Intel PCH Mic
/dev/input/event12:	HDA Intel PCH Headphone
/dev/input/event13:	HDA Intel PCH HDMI/DP,pcm=3
Select the device event number [0-13]: 3
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1043 product 0x0 version 0x0
Input device name: "Asus Wireless Radio Control"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 247 (KEY_RFKILL)
Properties:
Testing ... (interrupt to exit)
Event: time 1512253623.665926, type 1 (EV_KEY), code 247 (KEY_RFKILL), value 1
Event: time 1512253623.665926, type 1 (EV_KEY), code 247 (KEY_RFKILL), value 0
Event: time 1512253623.665926, -------------- SYN_REPORT ------------
^C


xinput output:

$ xinput list-props 'AT Translated Set 2 keyboard'
Device 'AT Translated Set 2 keyboard':
	Device Enabled (140):	1
	Coordinate Transformation Matrix (142):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Send Events Modes Available (264):	1, 0
	libinput Send Events Mode Enabled (265):	0, 0
	libinput Send Events Mode Enabled Default (266):	0, 0
	Device Node (267):	"/dev/input/event8"
	Device Product ID (268):	1, 1


udevadm output:

$ udevadm info /sys/class/input/event3/
P: /devices/LNXSYSTM:00/LNXSYBUS:00/ATK4002:00/input/input3/event3
N: input/event3
E: DEVNAME=/dev/input/event3
E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ATK4002:00/input/input3/event3
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_PATH=acpi-ATK4002:00
E: ID_PATH_TAG=acpi-ATK4002_00
E: LIBINPUT_DEVICE_GROUP=19/1043/0:asus-wireless
E: MAJOR=13
E: MINOR=67
E: SUBSYSTEM=input
E: TAGS=:power-switch:
E: USEC_INITIALIZED=5723795


evemu output is attached.
Comment 1 Peter Hutterer 2017-12-04 00:05:16 UTC
*** Bug 104028 has been marked as a duplicate of this bug. ***
Comment 2 Peter Hutterer 2017-12-04 00:05:41 UTC

*** This bug has been marked as a duplicate of bug 104030 ***
Comment 3 Peter Hutterer 2017-12-04 00:48:29 UTC
kernel patch to fix this: https://lkml.org/lkml/2017/12/3/196
Comment 4 Maxim Mikityanskiy 2017-12-06 07:37:57 UTC
Thanks for the kernel patch! Works like a charm.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.