Thinkpad trackpad not working under anything BUT ubuntu 16.04

Hello everyone.

For quite some time I’m being haunted by an issue with my Thinkpad L390 Yoga, where my trackpad and trackpoint do not work properly. This issue is present under all OSs I have tested, including windows 10, so some underlying hardware issue seems plausible as well. However, everthing works perfectly fine under Ubuntu 16.04.

Problem description
Using the trackpoint appears to crash the driver for both trackpad and trackpoint - at least neither of them work anymore afterwards. This happens under Windows with Elantech driver, as well as under any linux I’ve tried (except 16.04).

Without the elantech drivers, both trackpoint and trackpad work fine. Under windows it works if I just use the generic Microsoft driver and under linux it works with modprobe psmouse proto=imps. However in both cases I lose a lot of functionality, e.g. gestures or palm rejection.

I actually suspect there is some hardware issue at play here, especially due to the fact that windows exhibits the same issue.

What I’ve tried so far
As I said, it works fine under Ubuntu 16.04. The device is listed properly under /proc/bus/input/devices and does not crash when using trackpoint.

I: Bus=0011 Vendor=0002 Product=000e Version=0000
N: Name="ETPS/2 Elantech Touchpad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input5
U: Uniq=
H: Handlers=mouse1 event5
B: EV=b
B: KEY=e420 10000 0 0 0 0
B: ABS=661800011000003

I: Bus=0011 Vendor=0002 Product=000e Version=0000 
N: Name="ETPS/2 Elantech TrackPoint"
P: Phys=isa0060/serio1/input1
S: Sysfs=/devices/platform/i8042/serio1/input/input6
U: Uniq=
H: Handlers=mouse0 event4
B: PROP=21
B: EV=7
B: KEY=70000 0 0 0 0
B: REL=3

So I know there is some kind of driver configuration that gets this hardware to run. I have tried downgrading my kernel to 4.4 under ubuntu 20.04 (as used by 16.04’s live version), but I couldn’t get that to work with some dependencies that have changed inbetween.
I have tried some Fedora version with a 4.4 kernel but that sadly did not fix the device.

Downgrading the full kernel is plenty overkill and really not an acceptable drawback anyway. I guess this is what we have kernel modules for. Unfortunately when talking about drivers, kernel modules, etc I’m reaching far beyond my level of understanding of linux.

So to bring it to a point, I’m asking this: What do I need to do to get the hardware support that is present under Ubuntu 16.04 to any arbitrary linux distro?

I don’t have any experience with the Yoga, but I have several other ThinkPads. Long story short, Lenovo have multiple suppliers for most parts, including the touch pad. All touchpads are not necessarily created equal and that particularly includes the driver support. It seems to me that I put a Synaptics touchpad in my T440p and while that is supposedly the preferred pad for Windows, I had all sorts of problems with it in LInux. I replaced it with an Alps pad and I’ve been very happy with it.

Additionally, IIRC, not all gestures are supported on all pads, so you may need to do some research to determine which brand pad and which driver is right for you and how to fine tune it.

You could try modprobe psmouse elantech_smbus=0 and if that works go ahead and create /etc/modprobe.d/psmouse.conf with:

options psmouse elantech_smbus=0

Wow, this issue has been plaguing me, and here you are fixing it in one command. Thank you so much @zxmth. If you don’t mind, could you tell me why that option is necessary and how you deduced it might be the fix?

I think I found something on the Arch wiki - they have great documentation and tend to have really helpful pages for laptops. Go look for your laptop model there and you’ll often find the information you need.

Also, scroll to the bottom of this Ubuntu page - the solution is there, too.

And here is a description of the problem and the fix.