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