如何使用 USB 键盘或鼠标从挂起状态唤醒?

如何使用 USB 键盘或鼠标从挂起状态唤醒?

我在 Arch Linux 上使用 GNOME 3.36.6。默认情况下,GNOME 的自动挂起选项已启用并且按预期工作。但是,我必须按电源按钮才能将计算机从挂起状态唤醒。我想使用 USB 键盘,默认情况下它可以在 Windows 上使用。

Linux 内核文档描述了/sys/devices/.../power/wakeup文件如何控制设备是否应该向系统发出唤醒信号。根据文档:

对于大多数设备来说,电源/唤醒文件中的初始值是“禁用”的;主要的例外是电源按钮,键盘,以及已使用 ethtool 设置 WoL(LAN 唤醒)功能的以太网适配器。

我的系统上并非如此。当我运行时grep . /sys/bus/usb/devices/*/power/wakeup,我可以看到所有 USB 设备都禁用了唤醒。我找到了问题使用无线 USB 键盘或鼠标从挂起状态唤醒(适用于任何 Linux 发行版)在 Ubuntu Stack Exchange 上,它解释了如何识别正确的设备/sys/bus/usb/devices并用于/etc/rc.local在启动时应用正确的配置。

所有这些看起来都相当复杂、难以记忆并且容易出错。/etc/rc.local不鼓励使用基于 systemd 的发行版,如 Debian、Ubuntu、Arch 和 Fedora。研究这个问题会发现很多过时的建议(systemd 在 2015 年成为 Debian 的默认 init 系统),以及多年来有关挂起自身被破坏的问题。截至 2020 年,GNOME 似乎缺乏 USB 唤醒的用户友好配置;在 Windows 上,这是可以访问的从设备硬件属性的电源管理选项卡

在现代基于 systemd 的 Linux 发行版上,启用特定 USB 键盘或鼠标唤醒的最简单、最可靠的方法是什么?

(这关于暂停和休眠的 Arch Linux Wiki 页面表明答案可能是/sys/devices/.../power/wakeup使用 自动配置适当的文件systemd-tmpfiles,但识别一个图形或简单的命令行工具,可以轻松选择正确的 USB 设备,并且打包在流行的发行版中,会更好。)

也可以看看

答案1

写下

 echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
 echo enabled > /sys/bus/usb/devices/usb2/power/wakeup
 .....................................................

Ask Ubuntu in a script 的一部分并尝试将其添加到root 的 crontab

答案2

我认为最好的方法是为此设置 BIOS。

我几年前就这样做过,它与键盘配合得很好。我从未成功使用过鼠标,但这可能取决于您的 BIOS。

然而,对我来说,按键盘上的任意键都会唤醒系统。您可以在操作系统上设置是否需要密码才能进入会话。

答案3

一种解决方案是使用 udev 规则来启用基于 USB 供应商和产品 ID 的唤醒,例如添加/etc/udev/rules.d/usb-wake.rules包含以下内容的文件:

ACTION=="add", ATTR{idProduct}=="c542", ATTR{idVendor}=="046d", \
    RUN="/bin/bash -c 'echo enabled > /sys%E{DEVPATH}/power/wakeup'"

相关内容