我有一台支持屏幕上的笔和触摸的 Thinkpad Yoga 14。恢复时,有时网络无法正常工作。我可以用 修复此问题service network-manager restart
。同样经常发生的是笔和触摸不再工作。它与 xinput 和 synclient 的配置似乎没有问题。所以我假设可能有一些我可以重新启动的服务之类的?或者一些其他修复,使其再次工作而无需重新启动或注销。也许有人有主意。service wacom-inputattach restart
不幸的是,没有奏效。
答案1
几个月前,我的 Thinkpad Yoga 14 也出现了同样的问题,当时运行的是 Ubuntu 14.04:虽然触摸屏/手写笔一年多来一直运行良好,但无论多少次睡眠/恢复循环,它们在 2016 年 12 月左右的睡眠/恢复后就停止响应了(可能是由于更新的内核发生了变化?)。手写笔和触摸在初始启动时仍能正常工作,包括启动画面。网络上的各种建议没有解决问题:
- Alt+ Ctrl+ F1/ Alt++无效CtrlF6
sudo modprobe hid_multitouch
没有用xinput disable/enable (touchscreen ID)
没有用- 我甚至没有尝试固件升级,因为手写笔/触控板在重启后显然仍能正常工作
最后,深埋在某个链接中,http://linuxwacom.sourceforge.net/wiki/index.php/Input-wacom,我找到了一个事后看来很简单的解决方案:重新加载 wacom 和 wacom_w8001 模块
sudo modprobe -r wacom
sudo modprobe -r wacom_w8001
sudo modprobe wacom
sudo modprobe wacom_w8001
您可以编写一个脚本来在恢复时自动运行它;我只是把它放在一个 shell 脚本中,以便在必要时手动运行。希望这对某人有所帮助
答案2
/usr/sbin/rtcwake -m freeze -s 1
- 对我有用!
您可以创建一个在系统恢复时运行该脚本的服务。
在以下位置创建文件/etc/systemd/system/
:例如wake_hack.service
:
[Unit]
Description=Wakeup
After=suspend.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/rtcwake -m freeze -s 1
[Install]
WantedBy=suspend.target
以标准方式启用:(以 root 身份)
systemctl enable wake_hack.service
答案3
systemd
以下是基于系统(Ubuntu 16.10 及更新版本)的解决方案:
指示
找出您的 Wacom 触摸屏被识别为哪个串行设备。为此,运行
sudo cat /proc/tty/driver/serial | grep 16550A
并查看输出行中的第一个数字。例如,如果输出为:4: uart:NS16550A port:00000200 irq:5 tx:19 rx:411732 RTS|DTR
那么你的 Wacom 手写板就是
/dev/ttyS4
。如果你看到多条线,请依次测试所有相应的设备,方法是sudo inputattach --dump /dev/ttyS…
对设备执行,然后触摸屏幕,看看它是否生成一些输出。生成输出的设备就是你的触摸屏设备。创建包含此内容的文件
/etc/systemd/system/restart-wacom-inputattach.service
,并提供您自己的设备编号而4
不是ttyS4
:[Unit] Description=restart the wacom-inputattach service After=suspend.target [Service] User=root Type=simple ExecStart=/bin/systemctl --no-block restart wacom-inputattach@ttyS4 TimeoutSec=0 StandardOutput=syslog [Install] WantedBy=suspend.target
通过以下方式启用您的新服务:
sudo systemctl enable /etc/systemd/system/restart-wacom-inputattach.service
解释和详细信息
重启 Wacom 触摸屏的问题在多个版本的 Ubuntu 中重复出现。Ubuntu 16.10 之前的任何报告都与
pm-utils
系统和解决方案有关(例如从这里) 无法应用到systemd
我们现在的基于系统。上面提供的解决方案是针对systemd
基于系统的。Ubuntu 附带了由软件包提供的一项服务。问题是,它无法在挂起和恢复循环中存活。我们的解决方案是创建另一个服务,该服务将在系统从挂起状态恢复时重新启动它,
/lib/systemd/system/[email protected]
xserver-xorg-input-wacom
如图所示。名称中带有 的服务
@
可以使用参数启动,我们在这里使用触摸屏的串行设备名称来启动。在大多数系统中,此设备名称在重新启动和恢复后保持不变,但如果不是,您将需要一个更复杂的解决方案,类似于这个。出于诊断目的,请检查自定义服务的输出以
journalctl
查看它是否实际在执行某项操作:journalctl -u restart-wacom-inputattach.service
我们的自定义服务不执行长时间运行的命令,而只是重新启动另一个服务(该服务又运行长时间运行的命令)。因此,您可以安排其他服务在它完成后运行。这很有用,例如在恢复后校准触摸屏,例如在双显示器设置中使用 - 请参阅我的其他答案。
您经常会看到建议执行
sudo inputattach --daemon -w8001 /dev/ttyS4
(或类似命令)来重新启动触摸屏。这在终端中执行时有效,但由于我不知道的原因,在服务中执行时会失败systemd
,即使它在中产生相同的输出。幸运的是,在服务中使用的dmesg
命令isdv4-serial-inputattach
[email protected]
能可以在服务内部用来systemd
做同样的事情。
答案4
这个简单的 bash 脚本可以重新加载atmel_mxt_ts
模块,对我有用:
echo "Running rmmod and modprobe...\n"
rmmod atmel_mxt_ts
modprobe atmel_mxt_ts
echo "Mouse pad / touchscreen should be working again? ;-)\n"