< 返回博客

Arch Linux触摸板失灵


不知道什么时候开始,Arch的触控板时好时坏。之前没管这事,但是这几天在床上用电脑实在难受,所以专门去查了查。

解决方案

先说说最后的解决方案:内核启动时会同时加载elan_i2c和i2c_hid这两个模块,而根据社区有位老哥说的,这两个模块会冲突,导致触摸板没有用。所以只要在/etc/modprobe.d/里面禁用掉elan_i2c模块就行了。

检查过程

开始我以为是Xorg输入驱动的问题,所以把默认的libinput换成了synaptics,发现问题还在。

$ sudo pacman -S xf86-input-synaptics

还不能排除Xorg的问题,然后我去掉了TouchPad的所有配置(/etc/X11/xorg.conf.d/30-touchpad.conf),问题依旧。

突然发现开机时手一旦触碰到触摸板,就会报错elan_i2c i2c-ELAN0501:00: invalid report id data,查看内核日志,的确在触摸板失效的时候就会报这个错。这时候确定问题不在Xorg上。接着就去谷歌了,发现上面的解决方案,暂时重启了好多遍都没问题。

总结一下用到的命令

  • libinput。这个命令用来调试X或者Wayland里面使用libinput驱动的输入设备。
  • xinput。这个命令用来配置和调试X的输入设备。xinput list可以列出所有支持的设备;xinput list-props 可以列出某个设备的配置信息,也能看到这个设备正在使用的驱动。这个命令可以检测到使用各种驱动的设备,无论有没有使用libinput。
  • dmesg。查看内核日志。