蓝牙无法看到任何设备,甚至无法开始尝试配对(Ubuntu 23.04)

蓝牙无法看到任何设备,甚至无法开始尝试配对(Ubuntu 23.04)

我正在双启动 Lunar Lobster Ubuntu 23.04 和 Windows 11。我有 Razer Opus X 蓝牙无线耳机。它在我的移动设备上连接得很好,当我使用 Windows 11 启动时也是如此。

蓝牙已打开,并且 bluez 已安装。

我使用 Realtek 蓝牙无线电(USB 加密狗)。其 ID 为 6655::8771。据我了解,这意味着它使用 rtl8761b_fw.bin 和 rtl8761_config.bin 来操作蓝牙。我还了解到,直到最近才修复了这个问题,直到今年 6 月的某个时候:https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1968604 我已经跟踪了该线程上的每条线索,但没有任何东西能让我的蓝牙工作。

尽管显然不再需要它,我甚至尝试将 rtl8761bu_fw.bin 和 rtl8761bu_config.bin 符号链接文件制作到它们的非 bu 对应文件(分别为 rtl8761b_fw.bin 和 rtl8761_config.bin),但是这没有任何作用。

由于。。。导致的结果sudo dmesg | grep -i Bluetooth

[    1.497932] usb 1-8: Product: Bluetooth Radio
[    4.198735] Bluetooth: Core ver 2.22
[    4.198763] NET: Registered PF_BLUETOOTH protocol family
[    4.198764] Bluetooth: HCI device and connection manager initialized
[    4.198768] Bluetooth: HCI socket layer initialized
[    4.198770] Bluetooth: L2CAP socket layer initialized
[    4.198774] Bluetooth: SCO socket layer initialized
[    5.228342] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    5.228343] Bluetooth: BNEP filters: protocol multicast
[    5.228346] Bluetooth: BNEP socket layer initialized
[    5.229257] Bluetooth: MGMT ver 1.22
[    7.309061] Bluetooth: RFCOMM TTY layer initialized
[    7.309065] Bluetooth: RFCOMM socket layer initialized
[    7.309067] Bluetooth: RFCOMM ver 1.11
[  774.438702] usb 1-8: Product: Bluetooth Radio
[  774.512974] Bluetooth: MGMT ver 1.22

hciconfig -a

hci0:   Type: Primary  Bus: USB
    BD Address: 70:3E:97:EA:E0:9E  ACL MTU: 1021:6  SCO MTU: 255:12
    UP RUNNING 
    RX bytes:1614 acl:0 sco:0 events:161 errors:0
    TX bytes:5584 acl:0 sco:0 commands:148 errors:0
    Features: 0xff 0xff 0xff 0xfe 0xdb 0xfd 0x7b 0x87
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
    Link policy: RSWITCH HOLD SNIFF PARK 
    Link mode: PERIPHERAL ACCEPT 
    Name: 'LAX-B760-Pro-RS'
    Class: 0x7c0104
    Service Classes: Rendering, Capturing, Object Transfer, Audio, Telephony
    Device Class: Computer, Desktop workstation
    HCI Version: 5.1 (0xa)  Revision: 0xb
    LMP Version: 5.1 (0xa)  Subversion: 0x8761
    Manufacturer: Realtek Semiconductor Corporation (93)

蓝牙已打开、启用并正在运行。当我打开设置中的蓝牙选项卡时,它似乎正在主动搜索设备。尝试使用 bluetoothctl 在终端中连接到我的耳机(或任何蓝牙设备)也没有任何结果。我甚至确保它的某些部分没有被 rfkill 命令阻止。

我尝试了很多其他方法,尽管它们与我的问题并没有什么关系,但我还是想尽办法解决。我重新安装了 linux-firmware,尝试安装 blueman,禁用蓝牙然后重新启用,打开/关闭蓝牙,尝试重启电脑,尝试拔下蓝牙 USB 适配器然后重新插入,尝试关闭电脑,启动 Windows,关机,然后启动 Ubuntu。这些都没有任何效果。

我已经花了大约六个小时的时间,完全不知所措,所以我在这里注册了一个帐户,只是为了问这个问题。我知道 RealTek 蓝牙没有明确支持 ubuntu,但网上的人似乎没有遇到任何问题,尤其是在 6 月份最新的 linux 固件更新之后。我的所有其他蓝牙设备都可以很好地相互连接,甚至可以连接到我的电脑(除了当我使用 Ubuntu 启动时),所以我不认为是它们的问题。

如果还有其他命令我应该在这里发布,关于我的电脑或其他什么可以帮助我更容易地做到这一点,请告诉我。我的内核是 6.2.0-36-generic

答案1

您提到在同一设备上双启动 Windows。这会带来麻烦。

当您将几个蓝牙设备配对时,它们会产生一个随机共享链接密钥,并将其与另一台设备的蓝牙 MAC 地址一起记住。因此,您的 Windows 注册表中有一个条目,显示“MAC 为 AA:BB:CC:DD:EE:FF 的耳机的链接密钥为 XX:XX:XX:XX:XX:XX:XX:XX:XX”。您的耳机中有一个条目,显示“MAC 为 QQ:WW:EE:RR:TT:YY 的计算机的链接密钥为 XX:XX:XX:XX:XX:XX:XX:XX:XX”。然后您重新启动进入 Ubuntu,并尝试连接,耳机认为“嘿,我识别了这个 MAC 地址,这是我朋友的计算机,所以链接密钥是 XXX”,但 Ubuntu 不会在另一个分区的 Windows 注册表中查找已保存的链接密钥,它有自己的数据存储(/var/lib/bluetooth 中的文本文件),因此它拒绝连接。

如果你在耳机上启动配对模式,你应该能够将其与你的 Ubuntu 配对,它会在 /var/lib/bluetooth 中存储一个新的链接密钥 YY:YY:YY:YY:YY:YY:YY:YY,然后耳机就可以工作了使用 Ubuntu,当您重新启动 Windows 时将无法连接。

这并非最佳选择。

幸运的是,一旦您将耳机与两个操作系统配对,您就可以直接使用 regedit (Windows) 或 sudoedit (Ubuntu) 编辑链接密钥,如果您这样做,耳机现在就可以毫无问题地与两个操作系统配合使用。只需确保将链接密钥从最后一个与耳机配对的操作系统复制到另一个操作系统即可。

我有一个不成熟的 Python 脚本,可以自动执行该过程的某些部分(并在 README 中描述了链接密钥存储的确切位置和数据格式):https://github.com/mgedmin/btdualboot

答案2

事实证明,从 Lunar Lobster 升级到 Mantic Minotaur (Ubuntu 23.10) 完全解决了这个问题。我想这是因为 Mantic Minotaur 最近更新了 Realtek 蓝牙固件。

我可以启动 Windows,在那里配对并连接我的耳机,然后使用 ubuntu 重新启动,然后配对并连接我的耳机(尽管有点尴尬:必须重新启动蓝牙)

因此,如果您发现自己处于与我类似的情况,几乎尝试了每个论坛上的所有方法,也许可以尝试升级到 Mantic Minotaur?

相关内容