Touchpad not working at all on Lenovo Yoga Slim 7 15ITL05 with libinput
Summary
I'm inclined to confess, that I am only a casual Linux-User and I am not a native english-speaker. This is my first bug-report and I am not sure that I am using this platform correctly. I'm trying to find out, if this is really a bug, or if it can be resolved with configuration.
I made a dualboot of Windows and Ubuntu on a Lenovo Yoga Slim 7 Notebook (Model 15ITL05). At first, the touchpad seemed only to act up a bit. Jumping cursor, ghost clicks. But it got worse - presumably after a firmware-update which I applied via Windows.
I realized, that the machine drew a lot of battery-power while no application was running. Effectively the time until drain was only a third of what it was displayed on Windows. I took a look at dmesg and found, that it was spammed with the Error:
i2c hid acpi i2c-ELAN 0000:00: i2c_hid_get_input: incomplete report (14/60416)
10 Errors or so a second, and it continued, so that /var/log/syslog grew immensely. So I browsed the Internet for a solution. I found many other users who had problems on the Lenovo Yoga Slim 7 (mostly the popular AMD version) but none seemed to be exactly the same problem. I tried to apply some of the solutions that had worked for other users: e.g. kernel-arguments in grub (pci=nocrs i8042.nopnp=1), blacklisting one or both of the drivers (elan_i2c and/or i2c_hid_acpi). But to no avail. The arguments in grub did nothing. And only blacklisting both drivers stopped the spam in dmesg, and stopped the power-draw - But then: No touchpad. I was starting to think, that this was a hardware-issue, but the touchpad worked flawlessly under Windows 10.
So I thought, maybe it's the slightly older kernel, which is used in Ubuntu. I thought about patching the kernel, but at this point I gravitated towards a new install anyway and I've had more luck with Fedora when it comes to more recent hardware. And that's what I did... Only to find out that the problem was the same. Touchpad only working barely or not at all and error-spam in dmesg.
As described, I only use Linux casually, but I really wanted to take a deeper dive. So I learned, that libinput is used in GNOME to supply the drivers for hid. I tried the X-Org enviroment that comes with fedora, but the error stayed the same. So I tested Manjaro/KDE as a live-CD, as this distribution only uses X-Org and Synaptics Drivers. Same error: Touchpad not working, error-spam in dmesg. So it seems to be a problem with the new firmware, that lenovo supplied.
On Fedora I've conducted some more troubleshooting to isolate the origin of the error, but I'm afraid, that I am not qualified for that. I downgraded libinput to version 1.17.1, but with no result. Update back to latest version. I may say, that the udevadm -info showed two ELAN Drivers one for touchpad and one for mouse and the output of evtest showed a massive amount of events, even while the touchpad was not touched. This test was conducted when the touchpad working barely for a short time.
After that I got fed up and blacklisted one of the drivers, after I've learned, that
sudo modprobe -r elan_i2c
turns of the touchpad completely.
To prevent it to load at boot, I have made the following modifications:
echo "blacklist elan_i2c" >> /etc/modprobe.d/i2c-touchpad-blacklist.conf
dracut -f /boot/initramfs-5.14.13-200.fc34.x86_64.img
I can temporarily activate the driver again with:
sudo modprobe elan_i2c
but now, even after I remove the blacklist.conf file and update the ramdisk, only the touchpad driver is shown with udevadm -info (see attached log).
The touchpad can be toggled on/off in GNOME-Settings, but does not work. It seems, that the copious amounts of events were only output, when both drivers were present.
I presume, that's why the libinput-records and libinput debug-events logs don't contain any records, although I touched, clicked and wiped the touchpad like a maniac after starting the recording.
Also, the error has changed to
elan_i2c i2c-ELAN0000:00: invalid report id data (0)
I don't know if this is a legitimate bug-report. I posted it, in case someone has the same error after the firmware-update and hope they would second me. Or, maybe someone has a fix for this with configuration. I'd be more than happy to supply additional information or test possible solutions.
Important: Under Windows the touchpad continues to work flawlessly.
A similar error can be found in the arch forums: here
Steps to reproduce
I have tested with full installation of Ubuntu 20.04.2 (Kernel 5.11.? - GNOME) and Fedora 34 (Kernel 5.14.12 - GNOME and Upgrade to 5.14.13) and with Live-CD of Manjaro/KDE.
The error (barely any or no function of touchpad / error-spammed dmesg) was persistent on all platforms after install/boot on the above posted model with the most recent firmware-updates applied.
Required information
- libinput version: 1.19.2 (tried downgrade to 1.17.1 - error persists)
- hardware information: Lenovo Yoga Slim 7 15ITL05
-
libinput record
output: touchpad.yml -
libinput debug-events --verbose
debug-events
dmesg
[ 1936.608955] elan_i2c i2c-ELAN0000:00: invalid report id data (0)
[ 1936.610277] elan_i2c i2c-ELAN0000:00: invalid report id data (0)
[ 1936.611606] elan_i2c i2c-ELAN0000:00: invalid report id data (0)
[ 1936.612935] elan_i2c i2c-ELAN0000:00: invalid report id data (0)
[ 1936.614267] elan_i2c i2c-ELAN0000:00: invalid report id data (0)
[ 1936.615601] elan_i2c i2c-ELAN0000:00: invalid report id data (0)
[ 1936.616932] elan_i2c i2c-ELAN0000:00: invalid report id data (0)
[ 1936.618271] elan_i2c i2c-ELAN0000:00: invalid report id data (0)
[ 1936.619603] elan_i2c i2c-ELAN0000:00: invalid report id data (0)
[ 1936.620930] elan_i2c i2c-ELAN0000:00: invalid report id data (0)