从睡眠状态恢复后,蓝牙无法正常工作,Ubuntu 18.04 LTS

蓝牙耳机工作正常,直到睡觉。 然而,从睡眠状态恢复后,它们似乎连接了一小段时间才断开连接。 在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 

将bluez更新为> = 5.28.2

18.04现在有一辆蓝色的越野车包裹; 此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 

您可以通过运行手动切换BT(替换您自己的ID):

 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的’软阻塞:是’),但它没有。 我的猜测是applet会记住错误的设备ID,因此试图启用不再存在的设备。

尝试终端(不需要root)

 btnum=`rfkill list|grep hci0| cut -f 1 -d ':'` rfkill block $btnum rfkill unblock $btnum 

这可能与gnome-control-center中的错误有关。 不确定。 我发现这可以解决这个错误,也可能是你的。

对我来说,这个问题可以通过运行来解决

 sudo service bluetooth restart 

从睡梦中醒来

升级到更新版本的bluez的解决方案解决了连接后蓝牙连接断开秒数的另一个问题,如下所述: Ubuntu 18.04:联想P50连接后蓝牙设备断开连接

这就是我为了让它在18.04 LTS上工作所做的

更新蓝牙:

 sudo add-apt-repository ppa:bluetooth/bluez sudo apt install bluez 

创建新文件:

 sudo nano /lib/systemd/system-sleep/bt 

写并保存:

 #!/bin/sh sudo modprobe -r btusb sleep 1 sudo service bluetooth restart sleep 1 sudo modprobe btusb 

更改权限:

 sudo chmod 777 /lib/systemd/system-sleep/bt