恢复后重新启动触摸屏

恢复后重新启动触摸屏

我有一台支持屏幕上的笔和触摸的 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- 对我有用!

谢谢: (https://forums.lenovo.com/t5/Other-Linux-Discussions/X1Y3-Touchscreen-not-working-after-resume-on-Linux/td-p/4021200

您可以创建一个在系统恢复时运行该脚本的服务。

在以下位置创建文件/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 及更新版本)的解决方案:

指示

  1. 找出您的 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…对设备执行,然后触摸屏幕,看看它是否生成一些输出。生成输出的设备就是你的触摸屏设备。

  2. 创建包含此内容的文件/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
    
  3. 通过以下方式启用您的新服务:

    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"

相关内容