0

For background information, see Manual driver binding and unbinding.

I can unbind the Trackpoint driver on my Thinkpad:

$ cd /sys/bus/serio/drivers/psmouse/
$ ls -l
total 0
--w-------. 1 root root 4096 Dec  5 20:04 bind
-rw-r--r--. 1 root root 4096 Dec  5 19:19 bind_mode
-r--r--r--. 1 root root 4096 Dec  5 19:19 description
lrwxrwxrwx. 1 root root    0 Dec  5 19:19 module -> ../../../../module/psmouse
lrwxrwxrwx. 1 root root    0 Dec  5 19:19 serio1 -> ../../../../devices/platform/i8042/serio1
lrwxrwxrwx. 1 root root    0 Dec  5 20:14 serio2 -> ../../../../devices/platform/i8042/serio1/serio2
--w-------. 1 root root 4096 Dec  5 19:19 uevent
--w-------. 1 root root 4096 Dec  5 20:07 unbind
$ echo serio2 | sudo tee unbind
serio2
$ ls
bind  bind_mode  description  module  serio1  uevent  unbind

After I click one of the trackpoint buttons, or move it, the Trackpoint starts working again. This is because the driver gets bound again:

$ ls
bind  bind_mode  description  module  serio1  serio2  uevent  unbind

What causes the driver to be bound again?

  • Kernel: 4.11.8-200.fc25.x86_64
  • OS: Fedora Workstation 25
  • Hardware: Thinkpad X201
0

I suspect this is related to how Linux detects PS/2 devices which are plugged in after the system booted. ("hotplugging").

PS/2 ports were designed in an era when hotplugging was not as well supported. E.g. early Microsoft Windows did not support hotplugging PS/2 ports.

I suspect there is no hotplug signal, or it cannot be relied on. So Linux can just listen for any data on unbound PS/2 ports. When it receives some data, it must re-probe the port.

At least it's a nice theory. However I don't see the same thing happen if I unbind the combined touchpad/trackpoint device on a different laptop (Dell Latitude E5450). I have to manually bind the driver again; it doesn't magically start working again e.g. when I press a button.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.