当 Ubuntu 处于休眠状态时,可以通过直接插在电脑上的键盘唤醒,不能通过由蓝牙连接的鼠标唤醒。由于最近换了一款由电脑内置的蓝牙模块连接的键盘(不用蓝牙接收器)。Ubuntu 休眠时,蓝牙模块自然不工作,而我那蓝牙鼠标是由蓝牙接收器连接的,所以,我开始想方设法用这个蓝牙鼠标唤醒休眠的 Ubuntu。

文章中的 Ubuntu 版本是 18.04;蓝牙鼠标通过插在电脑上的接收器连接。

Dream is collapsing

grep . /sys/bus/usb/devices/*/power/wakeup 可以看到哪些设备可以唤醒 Ubuntu。

1
2
3
4
5
6
7
8
/sys/bus/usb/devices/1-2/power/wakeup:disabled
/sys/bus/usb/devices/1-4/power/wakeup:disabled
/sys/bus/usb/devices/1-7/power/wakeup:enabled
/sys/bus/usb/devices/1-9/power/wakeup:disabled
/sys/bus/usb/devices/2-3/power/wakeup:disabled
/sys/bus/usb/devices/2-4/power/wakeup:disabled
/sys/bus/usb/devices/usb1/power/wakeup:disabled
/sys/bus/usb/devices/usb2/power/wakeup:disabled

上面结果中 devices/ 后面的是指某个设备。只要找到蓝牙鼠标接收器对应的设备是哪一个,给它的 disabled 改成 enabled 就可以了。

lsusb 查看有哪些外接设备,目标就在其中。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Bus 002 Device 003: ID 0424:5537 Standard Microsystems Corp.
Bus 002 Device 002: ID 0bda:0316 Realtek Semiconductor Corp.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 138a:0097 Validity Sensors, Inc.
Bus 001 Device 006: ID 13d3:5619 IMC Networks
Bus 001 Device 004: ID 8087:0a2b Intel Corp.
Bus 001 Device 005: ID 04d8:0b29 Microchip Technology, Inc.
Bus 001 Device 003: ID 0424:2137 Standard Microsystems Corp.
Bus 001 Device 002: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

容易看出,Bus 001 Device 002: ID 046d:c52f Logitech, Inc. Unifying Receiver 就是我的蓝牙鼠标的接收器。

然后在 dmesg 中查找相关的内容,可以把接收器插拔一次,在 dmesg 新输出的内容里面查找。会看到类似这样的一条记录:

1
[11947.137653] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:046D:C52F.0008/input/input26

这样就足以明确我们要改成 enabled 的是 1-2。可以用这条命令让这个过程更方便。

1
dmesg | grep "Logitech USB Receiver as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1

不要遗漏第一个 grep 内容最后的 as,否则过滤条件不对,最终结果也会出错,得不到想要找的号码。

然后 sudo -i 切换成 root 去修改目标接口的 wakeup 值:

1
echo 'enabled' > /sys/bus/usb/devices/1-2/power/wakeup

这样就可以由(通过蓝牙接收器连接的)蓝牙鼠标唤醒 Ubuntu 了。

有待改进的点:

  1. Ubuntu 重启后,自动修改 wakeup 的 disabled/enabled 状态
  2. 换 USB 口插接收器,自动修改对应设备接口号的 wakeup 状态。

参考: Wake up from suspend using wireless USB keyboard or mouse (for any Linux Distro)