You are not logged in.

#1 2019-09-02 18:16:50

Registered: 2014-08-02
Posts: 260

[Solved] X1 Tablet Gen 2 Power Button Issue

Hello everyone,

I searched the web up and down, but so far I have not found a solution to my problem and it seems like it is out of my league. So please if anyone can, please help me!

The problem is that no matter what the power button on the Lenovo X1 Tablet Gen 2 (i5-7Y54 variant) fails to work.
This means it does work in Windows, I can use it to start the machine and everything is fine until I launch Arch Linux where it stops working. Wakeup doesn't work either in this case, but any keyboard input works although not usable in tablet mode.
I would like to get the normal behavior of sleep/suspend/wakeup.

Here is a thread with the described issue, but no follow up in two years. So a dead end.

I installed the latest UEFI version to make sure it isn't an issue with that. So the current version 1.35 is installed.

Following are links to command outputs:
journalctl -b0 (updated without asci_osi, sorry)

Decompiled dsdt.dat:

cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
iasl -d dsdt.dat


Additionally I tried playing around with some acpi_osi parameter, but honestly I have no clue if I tried the correct ones and it shouldn't be used anyway as far as I understand it.

Edit: What I forgot to mention neither xev nor evtest pick up any input from the button. No clue if this means no button press is registered or there is some other device node/handler responsible for it. I accidentally left it on for the journalctl output. I updated the link above and here is the previous version: journalctl -b0

Another edit: What I brushed over in the beginning section is that


does not produce any output for the button. Most other buttons work fine, e.g. volume button on the tablet and on keyboard.
So as soon as I get an event at all I am sure I can fix it myself. But right now I am lost.

Last edited by Swiggles (2019-09-02 23:25:39)


#2 2019-09-02 21:38:41

Registered: 2014-08-02
Posts: 260

Re: [Solved] X1 Tablet Gen 2 Power Button Issue

Small progress update, I did dig a bit into the DSDT file and there are many switches that check for "Windows 2015" (OSYS >= 0x07DF) which should be Windows 10 only.

So setting both "acpi_os_name" and "acpi_osi" to "Linux" seems to help a lot. Just setting "acpi_osi" broke most keys, but the power button started working. So at least suspend works and most other keys.
On the other hand wakeup does not work via power button so I have to dig deeper.
What I have not tried is to set everything to "Windows 2013" and lower (except Linux which is OSYS = 0x03E8) yet. Since it compares them by numeric value I expect different results.

Unfortunately I can't cherry pick either, because it is not possible to recompile the table. It aborts due to too many errors and honestly I have barely any clue about what I am doing. :-)

So I will continue my exploration tomorrow and unfortunately it is not solved yet. On the bright side it feels like I am much closer to my goal.

Edit: Digitizer stops working when doing so.

Edit: Bigger progress update
After some tinkering I figured out that the issue is that the value of "_SB.PWRB.PBST" is set to false during some device check. This prevented the notify event to fire for the power button. So we can either ignore the variable or what I did remove the assignment.
My issue with this is that I honestly do not know what this code is supposed to do:

If (CondRefOf (\_SB.PWRB.PBST))
   \_SB.PWRB.PBST = 0x00
   Notify (\_SB.PWRB, 0x01) // Device Check

This is the only assignment after declaration and for me it looks like this condition is always met. Does anyone know?

Anyway with some small fixes and applying this patched DSDT I am able to use the button as expected and I can even use it to wake up from sleep. I will further test it and I probably should file a bug report upstream.

Last edited by Swiggles (2019-09-02 23:25:19)


#3 2019-09-03 19:03:29

Registered: 2014-08-02
Posts: 260

Re: [Solved] X1 Tablet Gen 2 Power Button Issue

Bug report to hopefully get it fixed for good:

Hopefully this helps someone else in the future! :-)


Board footer

Powered by FluxBB