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


27

蓝牙耳机可以正常工作直到入睡。但是,从睡眠状态恢复后,它们似乎会短暂连接,然后再断开连接。在blueman上,给出的错误是Resource暂时不可用。仅在更新到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
我在JBL Go扬声器和全新安装的18.04中存在相同的问题。重新启动bluetooth.service或卸下btusb模块再重新插入模块无济于事。我不得不重启
solsTiCe '18年

我有一个同样的问题,每当从睡眠中恢复时,ubuntu就有可能根本没有蓝牙(因此为什么重启服务无法正常工作)。再次休眠和恢复有时可以解决该问题。
弗雷格利亚

@ K7AAY由于某种原因休眠根本无法工作,所以我无法验证这一点。
Nikhil Sadasivan '18

请编辑包括来自终端结果lsusb
Jeremy31

这里同样的问题。我必须重新启动才能使扬声器重新工作。
user1945827

Answers:


27

将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 applet现在应该正确将其拾取。此时,您应该可以连接到设备了。目前,我已经使用脚本将其归并在一起,该脚本会在恢复后自动执行此操作:

$ 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,因此正在尝试启用不再存在的设备。


1
只是更新了bluez软件包,对我来说就做到了,谢谢!
Nikhil Sadasivan,

相同的更新bluez就像一个魅力!
桑凯思·卡塔

1
更新:它只能工作1个睡眠周期。但是,经过多次,我又回到了同样的问题。
桑凯思·卡塔

除非已通过更新修复了该错误,否则bluez更新对我有用。
user1945827

使用blueman applet(sudo apt install blueman)和更新的bluez(来自ppa)对我来说效果很好。
马克

4

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

sudo service bluetooth restart

从睡眠中醒来之后


2

在终端中尝试(无需root)

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

这可能与gnome-control-center中的错误有关。不确定。我发现这可以解决上述错误,并且可能也是您的错误。


不幸的是,这不能为我解决问题。感谢您的分享!
Nikhil Sadasivan '18

2

我运行19.04,有这个问题。我有一个BT鼠标,所以确实很烦人。

要增强@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

1

这就是我为使其在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

1
如果只想使此可执行文件使用chmod + x,将是一个更安全的解决方案。这样做将允许系统上的任何用户只需替换该文件的内容即可以root用户身份运行任何内容。
Steeve McCauley

保存此脚本后,我的Dell XPS(18.04lts)不会进入睡眠状态。看起来好像要入睡,然后2秒钟后醒来,就是这样。
剃刀

永远不要更改777。除非您确切地知道自己在做什么。您应该使用来包装该脚本,case $1 in post)以使其仅在唤醒后运行。此外,脚本中不需要sudo。
洛朗


0

基于此答案,适用于Pulseaudio和Ubuntu 18

sudo apt-get install pulseaudio-module-bluetooth
pactl load-module module-bluetooth-discover

0

就我而言,laptop-mode-tools罪魁祸首是:

$ sudo apt remove laptop-mode-tools


请不要在许多帖子中发布相同的答案。相反,如果帖子彼此相似,则将其他帖子标记为其他帖子之一的重复。简单地将相同的答案重新发布到多个问题是非常嘈杂的。
托马斯·沃德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.