Lenovo Y700 Elantech 触摸板查询 0x01 失败

Lenovo Y700 Elantech 触摸板查询 0x01 失败

我的 Elantech 触摸板有一个恼人的问题至少半年了。大多数时候它会随机失去同步并被识别为PS/2 Elantech 触摸板或者比亚迪触摸板。它因更新而异,但本质上这些错误仍然存​​在dmesg

psmouse serio1: Failed to enable mouse on isa0060/serio1
psmouse serio1: elantech: synaptics_send_cmd query 0x01 failed.
psmouse serio1: Failed to enable mouse on isa0060/serio1
input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input19

在正确检测到触摸板的情况下,它仍然工作得很差,幸运的是多点触摸、点击、两指滚动,并且存在某种校准问题(只有触摸板的中心有响应,而其他区域忽略任何输入)。dmesg对于这个场景看起来像这样:

psmouse serio1: elantech: assuming hardware version 4 (with firmware version 0x595f03)
psmouse serio1: elantech: Synaptics capabilities query result 0x10, 0x15, 0x0e.
psmouse serio1: elantech: Elan sample query result 04, 02, 86
input: ETPS/2 Elantech Touchpad as /devices/platform/i8042/serio1/input/input2

在系统正常运行期间,它随机开始对我的输入点击和随机方向移动做出随机反应。

我现在使用 Arch Linux,但 Ubuntu 16.04 和 14.04 上也存在该问题。

Arch Linux 维基页面Lenovo Y700 有一条注释,为了使触摸板工作pata_legacy模块应该完全列入黑名单,所以我将其添加到我的内核引导加载程序配置中:

options: ... modprobe.blacklist=pata_legacy ...

lsmod不显示pata_legacy已加载,因此黑名单有效。但由于触摸板问题仍然存在,这没有任何帮助。

我正在使用libinput并且有一段时间没有更改我的配置(并且在触摸板感觉良好的时间范围内它可以完美地工作):

Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "Tapping" "True"
        Option "DisableWhileTyping" "True"
        Option "NaturalScrolling" "True"
        Option "MiddleEmulation" "True"
EndSection

我相信这个问题以某种方式与内核有关,但我不喜欢低级的东西,所以我无法让它自己工作。

强烈欢迎任何帮助、文档参考、调试技巧等,因为我不介意自己修复它,但我不知道从哪里开始(以及在哪里查找)。

$ uname -r
4.10.13-1-ARCH

答案1

我有完全相同的烦人问题。因为我没有找到任何解决方案,所以我使用这个简单的 bash 脚本作为解决方法

#!/usr/bin/bash

while [[ $(dmesg | tail -n 3 | grep ETPS) == "" ]]
do
    sudo modprobe --remove psmouse
    sudo modprobe psmouse
    sleep 3
done

notify-send "Touchback" "Your touchpad is back ready to use"

exit

当然,最好将您的sudoers两个命令配置为不要求输入密码。

相关内容