更新2019-10-31:

更新2019-10-31:

在我的笔记本电脑(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:

我原来的解决方案对我来说不再可靠。我现在看到从暂停状态恢复的三种情况之一:

  1. 蓝牙和 WiFi 均已禁用(没有可用的适配器)
  2. 仅禁用蓝牙(无可用适配器)
  3. 没有问题

能够 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或类似名称。记得添加可执行权限。

相关内容