同一耳机无法在 Windows 11 和 Ubuntu 上配对

同一耳机无法在 Windows 11 和 Ubuntu 上配对

我安装了 Windows 11 和 Ubuntu 22.04 双启动。

我有蓝牙耳机(索尼 1000XM3),我在 Windows 中配对了它们,一切正常。然后,如果我切换到 Linux,我可以在那里配对和连接耳机,没有问题,但如果我再次回到 Windows,蓝牙就会开始播放。

首先,当操作系统启动时,heaphones 不会自动连接,然后当我尝试多次连接它们时,它们只能短暂连接然后再次断开连接。

因此,对我来说唯一有用的方法是,每次我决定登录 Windows 时都必须重新配对耳机,但这显然非常麻烦。

有没有什么办法可以解决这个问题?不确定这个问题到底有多普遍。

答案1

  1. 在 Linux 中配对您的蓝牙设备。

  2. 重新启动 Windows,并在 Windows 中配对相同的蓝牙设备。

  3. 运行 regedt32.exe。导航到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys”

  4. 右键单击上述路径左侧窗格中的“Keys”文件夹,然后选择“导出”。在弹出的对话框中,将“保存类型”更改为“文本文件”,确保选中“导出范围”单选按钮“选定分支”,然后将文件保存到您选择的名称和位置。为此,如果您已经配置了两个操作系统之间共享的驱动器分区,会很方便,但这不是绝对必要的,因为您也可以使用拇指驱动器传输文件。如果您在导出文件夹时遇到问题,请右键单击它,选择权限,然后将用户添加到可以读取和编辑文件夹的组中。

PS 如果您没有看到密钥,请转到 [HKLM\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys] 文件夹,右键单击并单击“权限”,添加您的 Windows 用户并授予其“完全控制权”,然后您应该能够看到配对密钥。

  1. 现在重新启动进入 Linux。

  2. 在 Linux 中打开命令提示符,输入 sudo caja(如果您没有运行带有 MATE 的 Linux,则可能有不同的文件管理器;根据需要替换)并在提示符下输入您的密码。这将打开具有 SU 权限的文件管理器,因此请小心处理...如果您的系统损坏,我可不负责!

  3. 导航到 /var/lib/bluetooth。在此文件夹中,您将看到以下两个内容之一或两者 - 要么是一个以单个 MAC 地址(您的计算机蓝牙适配器的 MAC 地址)命名的单个文件夹,要么是多个文件夹,每个文件夹都有自己的 MAC 地址,用于每个配对的蓝牙设备(MAC 地址的格式为 XX:XX:XX:XX:XX:XX)。如果您只找到单个文件夹,则具有这些单个 MAC 地址的文件夹将位于第一个适配器文件夹内。

  4. 打开包含您想要在双启动模式下配对的设备的 MAC 地址的文件夹。该文件夹中将有一个或两个文件...您关心的是“info”文件。双击它,它将在具有 SU 权限的文本编辑器中打开 - 也就是说,您将能够编辑它并保存它。(顺便说一句,如果您不确定要查找哪个设备,“info”文件包含纯英文设备名称,因此只需依次打开每个文件,直到找到正确的设备)。

  5. 打开文件管理器的一个单独(非 SU)实例,并使用它在另一个窗格中打开您从 Windows 保存的文本文件。当您双击该文件时,Linux 可能会询问您是否要执行或编辑它...选择编辑。

  6. Windows 注册表导出将包含多个节(每个设备一个),如下所示(不用担心,我已经更改为伪造的 MAC 和密钥):

值 1 名称:0008e024d45e 类型:
REG_BINARY 数据:00000000 31 c0 08 fa 4f 7b d2 4c

  • 6f e1 7d ba 32 29 a9 a7 1À.ïO{ÒLoá}ºQ)©§
  1. 在“Name:”行中找到包含值的节,该节对应于您在第一个 (SU) 窗格中打开的文件的 MAC 地址。请注意,在 Windows 文件中,MAC 地址的格式使用小写字母而不是大写字母,并且没有冒号。

  2. 您的蓝牙配对密钥是行中以“00000000”开头并以一堆乱码结尾的字符串。不要复制零或乱码,只需复制中间包含 16 个十六进制代码且中间带有破折号的字符串即可。

  3. 将该密钥插入“info”文件中的“Key=”行。您可以根据需要复制并粘贴(我就是这么做的),但您需要将小写字母更改为大写,并删除所有空格和破折号。在上面的示例中,结果行将如下所示:

密钥=31C008FA4F7BD24C6FE17DBA3229A9A7

  1. 现在保存文件,对其他设备重复此操作。重新启动 Windows,您的设备现在应该可以正常工作。重新启动 Linux,它也应该可以正常工作。

祝你好运

答案2

这个问题有一个非常简单的解决方案。问题是:Windows 与这个蓝牙设备配对,因为它是笔记本电脑内部蓝牙模块的管理器,然而 linux 也是这么认为的。

它们都有不同的配对特征。

一个简单的解决方案,在 Linux 上更改蓝牙 mac 地址

sudo hciconfig hci0 down
sudo bluemoon -A
sudo hciconfig hci0 up
sudo systemctl restart bluetooth.service

现在您在 Linux 上有了一个新的身份。与您的设备配对,注意您必须在每次重新启动时执行此操作,当您返回 Windows 时,您不必再次修复。

答案3

问题在于您的蓝牙设备在 Linux 和 Windows 之间有不同的配对签名。

最简单的方法是购买一个蓝牙 USB 加密狗,在 Linux 中禁用内部蓝牙,并在 Windows 中禁用蓝牙 USB 加密狗。

在 Linux 中禁用内部蓝牙:

  • lsusb
  • 就我而言,我的内部蓝牙Bus 003 Device 008: ID 8087:0026 Intel Corp. AX201 Bluetooth
  • sudo vim /etc/udev/rules.d/81-bluetooth-hci.rules
  • SUBSYSTEM=="usb", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0026", ATTR{authorized}="0"

在 Windows 中禁用蓝牙 USB 加密狗:

  • 进入设备管理器
  • 展开“蓝牙”部分
  • 连接/断开您的蓝牙 USB 适配器以在列表中识别它
  • 右键单击它并禁用设备

现在您在 Windows/Linux 中拥有不同的蓝牙 MAC,并且自动配对应该可以轻松进行。

相关内容