有关背景信息,请参阅手动绑定和解绑驱动。
我可以在 Thinkpad 上解绑 Trackpoint 驱动程序:
$ 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
单击或移动某个指点杆按钮后,指点杆再次开始工作。这是因为驱动程序再次被绑定:
$ ls
bind bind_mode description module serio1 serio2 uevent unbind
是什么原因导致司机再次被绑定?
- 内核:4.11.8-200.fc25.x86_64
- 操作系统:Fedora 工作站 25
- 硬件:Thinkpad X201
答案1
我怀疑这与 Linux 如何检测系统启动后插入的 PS/2 设备有关。 (“热插拔”)。
PS/2 端口是在不支持热插拔的时代设计的。例如,早期的 Microsoft Windows 不支持热插拔 PS/2 端口。
我怀疑没有热插拔信号,或者不能依赖它。因此 Linux 只能监听任何未绑定 PS/2 端口上的数据。当它接收到一些数据时,它必须重新探测端口。
至少这是一个很好的理论。但是,如果我在另一台笔记本电脑(Dell Latitude E5450)上取消绑定组合触摸板/轨迹点设备,则不会发生同样的情况。我必须再次手动绑定驱动程序;例如,当我按下按钮时,它不会神奇地再次开始工作。