![更新2019-10-31:](https://linux22.com/image/1064187/%E6%9B%B4%E6%96%B02019-10-31%EF%BC%9A.png)
在我的笔记本电脑(Acer Aspire V17 Nitro)上运行 Ubuntu 18.04 时,蓝牙运行正常,直到我第一次使用挂起功能并再次将其唤醒。它不再检测到任何设备。
我尝试过的事情:
重启
禁用和启用蓝牙
重启蓝牙服务
重新安装这些软件包:
bluez
gnome-bluetooth
pulseaudio-module-bluetooth
跑步
rfkill list
:0: hci0: Bluetooth Soft blocked: no Hard blocked: no 1: acer-wireless: Wireless LAN Soft blocked: no Hard blocked: no 2: phy0: Wireless LAN Soft blocked: no Hard blocked: no
启动实时 USB 并在那里启用蓝牙(它也没有检测到任何设备)
有人有其他想法吗?挂起时或从挂起状态唤醒时失败的事实可能是一个线索。
答案1
更新2019-10-31:
我不再遇到此问题,可能是内核更新或 19.10 中的其他问题的结果。如果有人了解更多信息,请发表评论,我会在此处包含它!
更新2018-09-20:
我原来的解决方案对我来说不再可靠。我现在看到从暂停状态恢复的三种情况之一:
- 蓝牙和 WiFi 均已禁用(没有可用的适配器)
- 仅禁用蓝牙(无可用适配器)
- 没有问题
能够 100% 解决问题的唯一解决方法是重新启动 BIOS 并手动关闭蓝牙和 WiFi 然后打开。
我使用的解决方法是拔掉电源,然后关闭笔记本电脑盖,然后打开以强制硬件电源循环。这种方法大约有一半的时间有效,所以我经常需要这样做两三次。
原始答案:
自 16.04 版以来,我在带有集成 WiFi/蓝牙的戴尔、华硕和 MSI 笔记本电脑上使用 Kubuntu 时遇到了同样的问题。这种情况间歇性发生;我无法可靠地重现它,但它确实只在从挂起状态恢复后发生。
这是我的芯片组:
$ lspci | grep Network
3a:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
当问题发生在默认配置下时,蓝牙服务无法完全重启。我大量借鉴了奥萨马·纳赛尔的回答,但在暂停时强制关闭蓝牙服务,然后在恢复时启动蓝牙服务会更成功。
以下是我的解决方案,也写给/lib/systemd/system-sleep/bluetooth
:
#!/bin/bash
if [ "${1}" == "pre" ]; then
service bluetooth stop
elif [ "${1}" == "post" ]; then
sleep 5
service bluetooth start
fi
如果我能确认它有效,我将继续更新此答案。同样,这个问题似乎有点难以重现。
答案2
我有同样的问题,借用了我在 Ubuntu 14.04 中遇到的类似问题的修复程序,经过进一步调查,我发现重新启动蓝牙可以解决问题。这是目前对我有用的解决方案:
1-在文件夹中/lib/systemd/system-sleep/
创建一个名为bluetooth
以下内容的脚本:
#!/bin/bash
if [ "${1}" == "post" ]; then
sleep 5
service bluetooth restart
fi
这将在系统恢复 5 秒后重新启动蓝牙服务(这种方法目前对我来说是唯一有效的方法,将来可能会改变主意)
2-将脚本标记为可执行:
chmod +x /lib/systemd/system-sleep/bluetooth
我想指出的是,我使用的是 Kubuntu 18.04
答案3
好的,在写问题的时候它又开始工作了。
启动到实时 USB 后,它再次工作,并且禁用蓝牙(而不是像我之前尝试的那样启用它)。然后我重新启动到正常安装,它再次检测到设备。
在找到合适的解决方案之前,我不会再次暂停。
这是一次相当神秘的经历。我不知道我所做的是否真的解决了这个问题。如果有人知道到底发生了什么,我很想知道 :-)
答案4
在 Ubuntu 18.04 上,我使用以下 systemd 脚本来修复该问题:
#!/bin/bash
case "$1" in
suspend)
# executed on suspend
;;
post)
modprobe -r psmouse
modprobe psmouse
;;
*)
;;
esac
我将文件命名为/lib/systemd/system-sleep
。您可以为其命名touchpad
或类似名称。记得添加可执行权限。