蓝牙耳机在睡眠状态前工作正常。但是从睡眠状态恢复后,它们似乎在断开连接前短暂连接。在 blueman 上,给出的错误是资源暂时不可用。此问题仅在更新到 18.04 LTS 后出现。
这是 lsusb 的终端输出:
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 004: ID 1bcf:0002 Sunplus Innovation Technology Inc.
Bus 002 Device 003: ID 04f2:b477 Chicony Electronics Co., Ltd
Bus 002 Device 002: ID 0a5c:21f1 Broadcom Corp. HP Portable Bumble Bee
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
答案1
更新 bluez 至 >=5.28.2
18.04 目前附带有错误的 bluez 包;可从此 PPA 获取较新的版本:https://launchpad.net/~bluetooth/+archive/ubuntu/bluez:
sudo add-apt-repository ppa:bluetooth/bluez
sudo apt install bluez
解决有问题的蓝牙小程序的问题(特定于 Unity?)
这可能是 @solstice 提到的问题 - BT 菜单小程序不允许我从睡眠状态恢复后启用蓝牙。无论切换开关是关闭还是打开,BT 图标都会被禁用,并且 rfkill 输出不会改变:
$ rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
12: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
您可以通过运行(替换您自己的 ID)手动切换 BT:
rfkill block 12
rfkill unblock 12
现在 BT 小程序应该可以正确接收它了。此时,您应该能够连接到您的设备。目前,我使用一个脚本对其进行了破解,该脚本在恢复后自动执行此操作:
$ cat /lib/systemd/system-sleep/bt
#!/bin/sh
case $1 in
post)
sleep 5
rfkill block `rfkill list | grep hci | cut -d: -f1`
sleep 1
rfkill unblock `rfkill list | grep hci | cut -d: -f1`
;;
esac
rfkill 列表输出中 hci0 旁边的 ID 号似乎在每次暂停/恢复后都会增加。使用 BT 菜单禁用/启用 BT 应该会改变输出(通过菜单禁用 BT 时显示“软阻止:是”),但事实并非如此。我猜是小程序记住了错误的设备 ID,因此试图启用不再存在的设备。
答案2
对于我来说,这个问题可以通过运行来解决
sudo service bluetooth restart
醒来后
答案3
我运行的是 19.04 版,也遇到了这个问题。我有一个蓝牙鼠标,所以这真的很烦人。
针对增强的@hinxnz 回答:
打开一个新文件:
sudo nano /lib/systemd/system-sleep/bt
粘贴此脚本:
#!/bin/sh
case $1 in
post)
modprobe -r btusb
sleep 1
service bluetooth restart
sleep 1
modprobe btusb
;;
esac
最后使其可执行
chmod +x /lib/systemd/system-sleep/bt
答案4
这是我在 18.04 LTS 上让它运行的方法
更新蓝牙:
sudo add-apt-repository ppa:bluetooth/bluez
sudo apt install bluez
创建新文件:
sudo nano /lib/systemd/system-sleep/bt
写入并保存:
#!/bin/sh
modprobe -r btusb
sleep 1
service bluetooth restart
sleep 1
modprobe btusb
更改的权限:
sudo chmod +x /lib/systemd/system-sleep/bt