Workaround for broken TrackPoint
Sometimes, seemingly at random after clicking the dedicated left click or right click buttons, the buttons and trackpoint on my Lenovo Thinkpad T14s stops working. Instead of clicking, the three mouse buttons just makes the pointer move a bit and the trackpoint makes the pointer move in a random direction and seems to issue clicks.
When this happens, the kernel buffer is spammed with "psmouse
serio1: elantech: discarding packet
". Searching the interwebs,
I found that more people seem to be experiencing similar weirdness with
the elantech trackpoint driver.
Rebooting the computer works, but it's annoying. Removing and re-adding
the misbehaving kernel module resolves the issue too fortunately. I
put the following in ~/bin/fixmouse
:
#!/bin/sh
doas rmmod psmouse
doas modprobe psmouse
So now I can run fixmouse
whenever the driver stops
working.
Update 2023-09-24: If the psmose module is builtin, it can't be
unloaded, giving "rmmod: ERROR: Module psmouse is builtin.
"
Fortunately, there's a better way of reloading the trackpad using a
method described in an
article on LWN from 2005.
The error in the kernel buffer indicates that the trackpad is called
serio1
, but for posterity we can find devices using the
psmouse
driver with find
:
$ find /sys/bus -name psmouse
/sys/bus/serio/drivers/psmouse
$ ls -l /sys/bus/serio/drivers/psmouse
total 0
--w-------. 1 root root 4096 Sep 23 22:19 bind
-rw-r--r--. 1 root root 4096 Sep 23 22:19 bind_mode
-r--r--r--. 1 root root 4096 Sep 23 22:19 description
lrwxrwxrwx. 1 root root 0 Sep 24 10:42 serio1 -> ../../../../devices/platform/i8042/serio1
--w-------. 1 root root 4096 Sep 23 14:20 uevent
--w-------. 1 root root 4096 Sep 24 10:36 unbind
As described in the article, we can unbind the touchpad with (as root)
echo -n "serio1" > /sys/bus/serio/drivers/psmouse/unbind
My touchpad rebinds automatically after a few seconds, but you should be
able to bind it manually using
[...]/psmouse/bind
.