我在 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 设备,并且打包在流行的发行版中,会更好。)
也可以看看
需要
/proc/acpi/wakeup
调整才能使鼠标垫和 USB 从挂起状态唤醒gnome-power-manager
: 2007 年针对 Ubuntu 软件包记录的错误理解
/proc/acpi/wakeup
: ubuntuforums.org 上的帖子可追溯到 2008 年如何通过按键盘上的某个键使 Ubuntu 从挂起模式恢复?:2010 年以来 superuser.com 上未回答的特定于 Ubuntu 的问题
如何更改为
/proc/acpi/wakeup
永久?:关于 Ubuntu Stack Exchange 的问题可追溯到 2012 年
答案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'"