[Lenovo Thinkpad X220] wireless switch doesn't generate an acpi event

Bug #1310248 reported by Tobias Stegmann
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Triaged
Medium
Unassigned

Bug Description

I use a customized acpi event script to disable bluetooth on my Thinkpad x220, if I toggle the hardware wifi switch (not Fn+F5):

$ cat /etc/acpi/ibm-wireless-switch.sh
#!/bin/sh

test -f /usr/share/acpi-support/state-funcs || exit 0

# Find and toggle wireless of bluetooth devices on ThinkPads

. /usr/share/acpi-support/state-funcs

# disable bluetooth on wireless activate to save battery
if isAnyWirelessPoweredOn; then
    # Wireless was turned on
    logger "Wireless switch turned on: Disable bluetooth."
    echo disable > /proc/acpi/ibm/bluetooth
fi

This used to work fine with Ubuntu 13.10, however it stopped working with 14.04. More precisely the switch doesnt generate an acpi event anymore. To check that I used acpi_listen.

$ acpi_listen -t 10
# nothing happens here

Using 14.04 with kernel version 3.11.0-19 from 13.10 the switch works fine again:
$ acpi_listen -t 10
ibm/hotkey HKEY 00000080 00007000

Upstream URL: https://<email address hidden>/msg05283.html

---
ApportVersion: 2.14.1-0ubuntu3.2
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC0: tobias 2256 F.... pulseaudio
                      tobias 2324 F.... pulseaudio
CurrentDesktop: KDE
DistroRelease: Ubuntu 14.04
InstallationDate: Installed on 2013-03-24 (438 days ago)
InstallationMedia: Kubuntu 12.10 "Quantal Quetzal" - Release amd64 (20121017.1)
Lsusb:
 Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
 Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 001 Device 003: ID 04f2:b217 Chicony Electronics Co., Ltd Lenovo Integrated Camera (0.3MP)
 Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
MachineType: LENOVO 4291ZPK
Package: linux (not installed)
ProcFB: 0 inteldrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.13.0-27-generic root=UUID=9a62bd25-d065-4486-a18d-5a3f2a6c3473 ro quiet splash vt.handoff=7
ProcVersionSignature: Ubuntu 3.13.0-27.50-generic 3.13.11
RelatedPackageVersions:
 linux-restricted-modules-3.13.0-27-generic N/A
 linux-backports-modules-3.13.0-27-generic N/A
 linux-firmware 1.127.2
Tags: trusty
Uname: Linux 3.13.0-27-generic x86_64
UpgradeStatus: Upgraded to trusty on 2014-04-18 (48 days ago)
UserGroups: adm cdrom dialout dip lpadmin plugdev sambashare sudo vboxusers
_MarkForUpload: True
dmi.bios.date: 07/18/2013
dmi.bios.vendor: LENOVO
dmi.bios.version: 8DET69WW (1.39 )
dmi.board.asset.tag: Not Available
dmi.board.name: 4291ZPK
dmi.board.vendor: LENOVO
dmi.board.version: Not Available
dmi.chassis.asset.tag: No Asset Information
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.version: Not Available
dmi.modalias: dmi:bvnLENOVO:bvr8DET69WW(1.39):bd07/18/2013:svnLENOVO:pn4291ZPK:pvrThinkPadX220:rvnLENOVO:rn4291ZPK:rvrNotAvailable:cvnLENOVO:ct10:cvrNotAvailable:
dmi.product.name: 4291ZPK
dmi.product.version: ThinkPad X220
dmi.sys.vendor: LENOVO

affects: acpi-support (Ubuntu) → linux-lts-trusty (Ubuntu)
Revision history for this message
penalvch (penalvch) wrote :

Tobias Stegmann, thank you for taking the time to report this bug and helping to make Ubuntu better. Please execute the following command, as it will automatically gather debugging information, in a terminal:
apport-collect 1310248
When reporting bugs in the future please use apport by using 'ubuntu-bug' and the name of the package affected. You can learn more about this functionality at https://wiki.ubuntu.com/ReportingBugs.

Changed in linux-lts-trusty (Ubuntu):
importance: Undecided → Low
status: New → Incomplete
Revision history for this message
Tobias Stegmann (punischdude) wrote :

Thanks for your reply.

I ran "apport-collect 1310248" after installing pythin-apport.

It returned with a "no additional information collected" message, along with

"Package linux-lts-trusty not installed and no hook available, ignoring"

I've tried to install the package via apt, but it's not available. Am I missing something or is there anything else I can do?

Revision history for this message
penalvch (penalvch) wrote :

Tobias Stegmann, try it now, as I forgot to change the package.

affects: linux-lts-trusty (Ubuntu) → linux (Ubuntu)
Revision history for this message
Tobias Stegmann (punischdude) wrote : AlsaInfo.txt

apport information

tags: added: apport-collected trusty
description: updated
Revision history for this message
Tobias Stegmann (punischdude) wrote : BootDmesg.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : CRDA.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : CurrentDmesg.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : IwConfig.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : Lspci.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : ProcCpuinfo.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : ProcEnviron.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : ProcInterrupts.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : ProcModules.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : PulseList.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : RfKill.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : UdevDb.txt

apport information

Revision history for this message
Tobias Stegmann (punischdude) wrote : UdevLog.txt

apport information

Revision history for this message
penalvch (penalvch) wrote : Re: Thinkpad X220 wireless switch doesn't generate an acpi event

Tobias Stegmann, could you please test the latest upstream kernel available (the one all the way at the top, and not the daily folder) following https://wiki.ubuntu.com/KernelMainlineBuilds ? It will allow additional upstream developers to examine the issue. Once you've tested the upstream kernel, please comment on which kernel version specifically you tested. If this bug is fixed in the mainline kernel, please add the following tags:
kernel-fixed-upstream
kernel-fixed-upstream-VERSION-NUMBER

where VERSION-NUMBER is the version number of the kernel you tested. For example:
kernel-fixed-upstream-3.15-rc8

This can be done by clicking on the yellow circle with a black pencil icon next to the word Tags located at the bottom of the bug description. As well, please remove the tag:
needs-upstream-testing

If the mainline kernel does not fix this bug, please add the following tags:
kernel-bug-exists-upstream
kernel-bug-exists-upstream-VERSION-NUMBER

As well, please remove the tag:
needs-upstream-testing

Once testing of the upstream kernel is complete, please mark this bug's Status as Confirmed. Please let us know your results. Thank you for your understanding.

tags: added: latest-bios-1.39
Changed in linux (Ubuntu):
importance: Low → Medium
summary: - Thinkpad X220 wireless switch doesn't generate an acpi event
+ [Lenovo Thinkpad X220] wireless switch doesn't generate an acpi event
Revision history for this message
Tobias Stegmann (punischdude) wrote :

Hi,

unfortunatly the issue has not been fixed in the latest upstream kernel. The kernel version I used to test was:

$ uname -r
3.15.0-031500rc8-generic

For the test I ran acpi_listen and toggled the switch numerous times.

Out of curiosity I also checked some older kernel images:

3.11.10-03111010-generic, which is the last 3.11 iteration, is working fine:
$ acpi_listen -t 10
ibm/hotkey HKEY 00000080 00007000

and its broken with 3.12.0-031200rc1-generic, which is the first 3.12 release candiate.

I hope this helps to track it down.

tags: added: kernel-bug-exists-upstream kernel-bug-exists-upstream-3.12-rc1 kernel-bug-exists-upstream-3.15-rc8
Changed in linux (Ubuntu):
status: Incomplete → Confirmed
Revision history for this message
penalvch (penalvch) wrote :

Tobias Stegmann, the next step is to fully commit bisect the kernel in order to identify the offending commit. Could you please do this following https://wiki.ubuntu.com/Kernel/KernelBisection ?

tags: removed: kernel-bug-exists-upstream-3.12-rc1
tags: added: needs-bisect regression-release
Changed in linux (Ubuntu):
status: Confirmed → Incomplete
Revision history for this message
Tobias Stegmann (punischdude) wrote :
tags: removed: needs-bisect
Revision history for this message
Tobias Stegmann (punischdude) wrote :

I've taken a deeper look into the thinkpad acpi module and found a quite simple solution, which doesnt require deprecated APIs.

The patch is tested against upstream kernel 3.15-rc8 as well as Ubuntu-3.13.0-29.53.

Revision history for this message
penalvch (penalvch) wrote :

Tobias Stegmann, the issue you are reporting is an upstream one. Could you please report this problem through the appropriate channel by following the instructions _verbatim_ at https://wiki.ubuntu.com/Bugs/Upstream/kernel ?

Please provide a direct URL to your e-mail to the mailing list once you have made it so that it may be tracked.

Thank you for your understanding.

tags: added: bisect-done
Changed in linux (Ubuntu):
status: Incomplete → Triaged
tags: added: patch
Revision history for this message
Tobias Stegmann (punischdude) wrote :

Link to the upstream report:

https://<email address hidden>/msg05283.html

penalvch (penalvch)
description: updated
Revision history for this message
Tobias Stegmann (punischdude) wrote :

Here's the awnser of the thinkpad_acpi module maintainer: https://<email address hidden>/msg05285.html

To summarize: The patch itself is technically correct and leads to the old behaviour. But he'd prefer not to apply the patch, because the event is already propagated through the thinkpad_acpi input device.

The input device is located at /dev/input/by-path/platform-thinkpad_acpi-event and toggling the switch twice raises the following events:

$ sudo input-events 6
/dev/input/event6
   bustype : BUS_HOST
   vendor : 0x17aa
   product : 0x5054
   version : 16641
   name : "ThinkPad Extra Buttons"
   phys : "thinkpad_acpi/input0"
   bits ev : EV_SYN EV_KEY EV_MSC EV_SW

waiting for events
19:07:04.424098: EV_SW SW_RADIO 0
19:07:04.424098: EV_SYN code=0 value=0
19:07:05.982584: EV_SW SW_RADIO 1
19:07:05.982584: EV_SYN code=0 value=0

I haven't figured out yet, how I can make use of the input event device. There doesn't seem to be any scriptable daemon listening to it.

Alternativley one can use rfkill uevents via the udev daemon. A working rule could be:

SUBSYSTEM=="rfkill", ATTR{type}=="wlan", ENV{RFKILL_STATE}=="1", RUN+="/usr/local/bin/toggle-blue"

I guess this bug can be marked as invalid.

Revision history for this message
SergeiS (sergei-redleafsoft) wrote :

Came to this bug while searching on my the wireless toggle switch doesn't work on my Thinkpad X1 Carbon after a fresh Ubuntu 14.10 install. I understand some of the reasoning above, which seems to say, that it is not really an issue because the button press can be intercepted through other ways and dealt with then, but I want to say that is the only key that is not working out of the box, so it is really confusing, and just plain bad user experience. Even after reading the "solution" above, I can't get it to work on my laptop. I can use rfkill command for now, but, oh boy, it would be great to the key properly working.

It appears that the code in charge of handling the X1 Carbon adaptive keyboard is here and rfkill handling is there: https://kernel.googlesource.com/pub/scm/linux/kernel/git/jic23/iio/+/refs/heads/togreg/drivers/platform/x86/thinkpad_acpi.c

So, it's either my stock kernel doesn't have it, or something else is broken.

Here's some info about your system.

root@x1:~# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.16.0-24-generic.efi.signed root=/dev/mapper/ubuntu--vg-root ro quiet splash acpi_osi=Linux acpi_enforce_resources=lax i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 i915.semaphores=1 vt.handoff=7

root@x1:~# uname -r
3.16.0-24-generic

root@x1:~# ls /dev/input/by-path/platform-thinkpad_acpi-event -lh
lrwxrwxrwx 1 root root 9 Nov 2 19:45 /dev/input/by-path/platform-thinkpad_acpi-event -> ../event7

# nothing ever fires when I press all extra buttons including the wireless one

root@x1:~# input-events 7
/dev/input/event7
   bustype : BUS_HOST
   vendor : 0x17aa
   product : 0x5054
   version : 16641
   name : "ThinkPad Extra Buttons"
   phys : "thinkpad_acpi/input0"
   bits ev : EV_SYN EV_KEY EV_MSC EV_SW

waiting for events
timeout, quitting

# acpi events fire for all extra buttons except the wireless one!

root@x1:~# acpi_listen -t 100
ibm/hotkey LEN0068:00 00000080 00001105
ibm/hotkey LEN0068:00 00000080 00001106
ibm/hotkey LEN0068:00 00000080 00001108
ibm/hotkey LEN0068:00 00000080 0000110a
ibm/hotkey LEN0068:00 00000080 00001101
ibm/hotkey LEN0068:00 00000080 00001101
ibm/hotkey LEN0068:00 00000080 00001101
video/switchmode VMOD 00000080 00000000
ibm/hotkey LEN0068:00 00000080 0000110e

So, since nothing fires on both channels, it seems I can't manually bind the button to rfkill either.

Please tell me what I can do to help.

Revision history for this message
penalvch (penalvch) wrote :

SergeiS, thank you for your comment. So your hardware and problem may be tracked, could you please file a new report with Ubuntu by executing the following in a terminal while booted into the default Ubuntu kernel (not a mainline one) via:
ubuntu-bug linux

For more on this, please read the official Ubuntu documentation:
Ubuntu Bug Control and Ubuntu Bug Squad: https://wiki.ubuntu.com/Bugs/BestPractices#X.2BAC8-Reporting.Focus_on_One_Issue
Ubuntu Kernel Team: https://wiki.ubuntu.com/KernelTeam/KernelTeamBugPolicies#Filing_Kernel_Bug_reports
https://wiki.ubuntu.com/Kernel/Policies/DuplicateBugs
Ubuntu Community: https://help.ubuntu.com/community/ReportingBugs#Bug_reporting_etiquette

When opening up the new report, please feel free to subscribe me to it.

As well, please do not announce in this report you created a new bug report.

Thank you for your understanding.

Helpful bug reporting tips:
https://wiki.ubuntu.com/ReportingBugs

Revision history for this message
SergeiS (sergei-redleafsoft) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.