使用无线USB键盘或鼠标暂停唤醒(适用于任何Linux发行版)
我正在寻找数小时,甚至更多,寻找解决方案,我才发现它。 我想与大家分享。 通过这种方式,可以更轻松地搜索此问题,以便更快地找到解决方案。 所以,正如标题所说,下面是解决方案。
点击终端:
grep . /sys/bus/usb/devices/*/power/wakeup
对我来说,结果是发现所有的USB都被禁用了。 所以现在输入:
1。
sudo su
我们现在有了root权限。
2.我有8个USB端口( 你可以为你拥有的多个USB端口做到这一点 ),所以:
echo enabled > /sys/bus/usb/devices/usb1/power/wakeup echo enabled > /sys/bus/usb/devices/usb2/power/wakeup echo enabled > /sys/bus/usb/devices/usb3/power/wakeup echo enabled > /sys/bus/usb/devices/usb4/power/wakeup echo enabled > /sys/bus/usb/devices/usb5/power/wakeup echo enabled > /sys/bus/usb/devices/usb6/power/wakeup echo enabled > /sys/bus/usb/devices/usb7/power/wakeup echo enabled > /sys/bus/usb/devices/usb8/power/wakeup
继续测试吧。 现在,您可以从任何无线或有线USB键盘和鼠标唤醒。
那么,我们必须启用所有这些的原因是因为在下一步中,我们将在rc.local中写入此命令以在每次重新启动后执行命令,并且在重新启动后,一些Linux发行版(可能全部)更改usb端口。 我们不必担心因为启用所有这些而出现任何问题,因为Linux处于挂起或hibernate状态,它无法使用wifi下载任何内容,所以如果我们故意将其唤醒,它就不会被唤醒。
下一步:
3。
sudo nano /etc/rc.local
然后我们将第2步中的所有内容粘贴到那里(当然是在0号出口之前)。
而已。 从现在开始,我们可以使用无线USB和鼠标从暂停状态唤醒。
我希望它适用于所有人。 本指南是在测试了互联网上所有其他可能的解决方案后制作的。
除了我上面的指南,我想添加这些信息,因为我最近发现一些无线USB设备从睡眠状态唤醒后,它们恢复为禁用状态。 我再说一遍,只有一些USB设备会这样做,而不是全部。 这就是为什么我没有在我的向导上添加这个小指南。
所以你按照我上面的指示做了,你的电脑成功唤醒,但当天晚些时候它突然没有再醒来。
解:
打开终端并执行:
lsusb
在您的键盘设备ID信息中,4个第一位数字是供应商ID,4个下一个数字是产品ID(参见屏幕截图)
接下来做:
sudo nano /etc/udev/rules.d/10-wakeup.rules
“唤醒”输入所需的脚本名称。 如果您有许多其他udev规则,则数字10是优先级,“规则”在其他规则之前执行的数字越低。
复制粘贴此内容并使用您自己的无线键盘供应商ID和产品ID替换供应商ID和产品ID。
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="062a", ATTRS{idProduct}=="4101" RUN+="/bin/sh -c 'echo enabled > /sys/bus/usb/devices/usb8/power/wakeup'"
* usb8对我来说是我的无线键盘(您也可以在屏幕截图(Bus 008)中看到),用您自己的键盘替换它。
按Ctrl + O保存, 按Ctrl + X退出并重启。
Pavlos Theodorou的回答非常有帮助。 我想补充一点,你可以找到你的鼠标/键盘在启动时连接的usb设备,通过grep管道dmesg几次,然后egrep一次,最后使用tail确保它是最新的条目。
使用此方法,您不必在所有 USB端口上启用唤醒。
我把以下内容放在我的/etc/rc.local文件中,每次都找到我的罗技接收器,即使从一个USB端口移动到另一个端口也是如此。 只需用dmesg替换键盘或鼠标的名称代替“Logitech K270”
KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)" echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
这在启动时起作用,但似乎在从挂起唤醒时不运行,所以我不得不在/ lib / systemd / system-sleep /中放置一个脚本文件。 创建它,将其设置为全局可执行文件,并为其命名,以00到99之间的两位数字开头。我的脚本如下,再次从dmesg中替换键盘/鼠标verbage:
#!/bin/sh # Action script to enable wake after suspend by keyboard or mouse if [ $1 = post ] then KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)" echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup fi if [ $1 = pre ] then KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)" echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup fi
出于某种原因,我无法解释,’post’sleep if语句只能在其他所有唤醒中起作用…但是’pre’sleep if语句似乎每次都有效。
- Netgear WNA3100 wifi加密狗无法识别
- 14.04 LTS的低wifi信号
- 安装Ubuntu 16.04后USB鼠标无法正常工作 – 持久性修复?
- 在Ubuntu iMac上重新安装Mac OS
- 尝试在2011年初在Mac Book Pro上安装ubuntu时出现“i8042 no controller found”错误
- 使用可启动外部驱动器中的现有主目录
- 从16.04升级到18.04后,Epson GT-S50扫描仪无法正常工作
- 无法让Netgear WNDA 3100v3 wifi加密狗工作
- 如何检查(通过软件)我的USB 3.1gen2 Type-C端口是否支持Thunderbolt3?