我在一台旧的 Medion Akoya P4001 D(可能可以追溯到 2010 年)上安装了 Xubuntu 20.04.1 LTS。除了触摸屏之外,一切都运行正常;当我把手指放在屏幕上时,系统没有反应。我确信没有硬件问题;我看到触摸屏在原始操作系统(我不得不放弃的自定义 Linux 发行版)上工作正常,在我闲置的旧 Ubuntu 版本(16.04 或 18.04,我不记得了)上也工作正常。
我尝试了一些终端命令来挖掘一些信息。
$ lsusb | grep -i touch
Bus 003 Device 002: ID 22b9:0008 eTurboTouch Technology, Inc. eTurboTouch
我在制造商的网站上搜索了驱动程序支持。似乎完全过时了(Ubuntu 9.04,内核 2.6);我不想因此而受苦。
http://www.eturbotouch.com/english/s_download_center.asp
没关系,我见过它在较旧的 Ubuntu 发行版上开箱即用。它应该无需专有驱动程序即可工作。
$ sudo lsinput | grep -i touch -A4 -B5
/dev/input/event5
bustype : BUS_USB
vendor : 0x22b9
product : 0x8
version : 257
name : "eTurboTouch eTurboTouch"
phys : "usb-0000:00:04.0.6/input0"
uniq : ""
bits ev : (null) (null) (null) (null)
现在我们知道了该设备,让我们对其进行轮询。
$ sudo cat /dev/input/event5
每当我按下屏幕时,我都会看到二进制数据填满屏幕。所以它确实有效。
(好的,使用 Ctrl-C 退出正在进行的操作cat
...)
$ sudo xinput list
我看到一个包含其他指针和键盘设备的简短列表,但没有触摸屏!
$ lsmod | grep -i 'hid\|touch\|dwav'
mac_hid 16384 0
hid_generic 16384 0
usbhid 57344 0
hid 131072 2 usbhid,hid_generic
我在很多地方看到你需要模块hid-multitouch
。模块已经安装(modinfo hid_multitouch
给出信息),但显然udev
没觉得需要加载它。
我绝望地强制加载了模块。我hid-multitouch
在文件底部添加了一行/etc/modules
。我创建了一个新文件/etc/rc.local
(它还不存在),使其可执行,并输入了这些行(按照建议
这里和
这里):
#!/bin/sh -e
echo 3 22b9 0008 1 > /sys/module/hid_multitouch/drivers/hid\:hid-multitouch/new_id
上面那MT_CLASS
行中的 (1) 是一个大胆的猜测。我还尝试了 3(因为这似乎与提到的“类”相匹配这里) 和 259 (因为评论“eGalax Touchkit 包括 eTurboTouch CT-410/510/700”我读到
这里)。
重启后,模块hid-multitouch
确实已加载,但触摸屏仍然无法显示。
dmesg
我检查了和的输出journalctl -b
,但没有发现任何可疑和与触摸相关的内容。
我应该怎么做才能让我的触摸屏在 Xubuntu Focal Fossa 上作为指针设备工作?
答案1
为了做一名好公民,我做了调查,并像往常一样,在这个过程中解决了自己的问题。无论如何,我还是发布了我的问题(和这个答案),希望它能在未来帮助一些绝望的人(可能是我自己)。
该命令中的重要线索如下:
$ sudo libinput list-devices | head -n1
event5 - eTurboTouch eTurboTouch: libinput bug: missing tablet capabilities: btn-stylus resolution. Ignoring this device.
我用谷歌搜索了错误信息,发现这并不是唯一出现此问题的触摸屏:
https://bugs.launchpad.net/ubuntu/+source/libinput/+bug/1772083
根据错误描述:
*** Creating the following udev rules file, fixes the touchscreen for me ***
/etc/udev/rules.d/91-libinput-egalax-local.rules
ACTION=="add|change", KERNEL=="event[0-9]*", ENV{ID_VENDOR_ID}=="0eef", \
ENV{ID_MODEL_ID}=="0001", ENV{ID_INPUT_TABLET}="", ENV{ID_INPUT_TOUCHSCREEN}="1"
我稍微调整了一下以适应我的情况。我创建了一个新文件/etc/udev/rules.d/91-libinput-eturbotouch-local.rules
并输入了以下几行:
ACTION=="add|change", KERNEL=="event[0-9]*", ENV{ID_VENDOR_ID}=="22b9", \
ENV{ID_MODEL_ID}=="0008", ENV{ID_INPUT_TABLET}="", ENV{ID_INPUT_TOUCHSCREEN}="1"
重新启动后,触摸屏运行正常。
笔记:
- 供应商和型号 ID(分别为
22b9
和0008
)基于的输出lsusb
,如问题所示。 - 我把之前的更改恢复为强制加载
hid-multitouch
。模块仍然没有被加载udev
,但显然我的触摸屏不需要它。