Die Gedanken sind frei…

ELAN 0634 touchpad in Lenovo ThinkBook 14iil not working under Linux

After having bought a Lenovo ThinkBook 14 iil for my daughter, I found that the touchpad wasn’t recognized during Linux (Opensuse Tumbleweed) install. I continued by plugging in a USB-mouse I had lying around. Unfortunately the problem persisted after having completed the installation.

I googled the problem and found multiple mentions for several linux distributions. As a reference I provide here the link to the Ubuntu launchpad which helped me most in getting things to work under Opensuse Tumbleweed:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1861610

For a record it should be mentioned, that this is a BIOS bug which originally should be fixed by Lenovo. As the touchpad works under Windows, this means they have fixed the driver instead… Awkward.

These are the steps I needed to do, to get the touchpad recognized:

Get ACPI table:

acpidump -b

Disassemble ACPI table:

iasl -d dsdt.dat

Edit DSDT:

vi dsdt.dsl

  • Search the HID of the touch pad: ELAN0634
  • Search the next _STA method declaration
    and comment out these four lines:

Method (_STA, 0, NotSerialized) // _STA: Status
{
//If ((TPVD == 0x45))
//{
Return (0x0F)
//}
//Return (Zero)
}

  • Increment the version number. It’s the last parameter of the DefinitionBlock (line 21 for me):
    DefinitionBlock ("", "DSDT", 2, "LENOVO", "ICL ", 0x20170002)
  • save

Compile DSDT:

iasl -sa dsdt.dsl

Copy compiled DSDT to /boot for easy loading by grub:

cp dsdt.aml /boot

Reboot, press e in grub menu on your linux boot entry and enter the following line before kernel loading:
acpi /boot/dsdt.aml
(Secure boot has to be disabled in BIOS!)

If the workaround works for you, add the line in /boot/grub2/grub.cfg in the relevant boot entry for getting the fix on each reboot.

As this is just an ugly (albeit working) workaround, I opened a bug request on opensuse bugzilla for getting it fixed in the standard kernel without having to meddle with the DST in the future:

https://bugzilla.opensuse.org/show_bug.cgi?id=1176971

Posted in IT