带 USB 开关的 USB 蓝牙适配器:MacOS 至 Windows 10

带 USB 开关的 USB 蓝牙适配器:MacOS 至 Windows 10

我有两台电脑;一台是运行 MacOS 10.13.5 的 Macbook Pro,另一台是运行 Windows 10 的台式机。台式机没有自带蓝牙适配器,所以我从亚马逊购买了一个通过 USB 连接。为了方便在键盘和鼠标之间切换,我还买了一个Amazon 的 USB 开关

最近,为了尽可能多地练习和弦,我购买了一套蓝牙耳机也一样。我对刚刚列出的耳机和 USB 工具非常满意,只是当我使用 USB 开关时,耳机切换起来真的很困难。一旦我将耳机与其中一台电脑配对并使用开关,就会发生一些奇怪的事情。如果耳机之前与那台电脑配对过,我根本无法让它们连接,除非我从蓝牙设置中完全删除它们,然后在当前机器上重新完成配对过程。据我所知,这种情况不应该发生,那么可以修复吗?我已经禁用 Mac 上的原生蓝牙适配器并确认 Mac 现在使用 USB 适配器。

答案1

这是由蓝牙设备相互验证的方式引起的。
当进行初始(手动)验证时,两个设备都会存储一个“链接密钥”,它们会使用该密钥自动验证将来的连接。

注意:向下滚动到“简单的方法“如果您不关心发生了什么以及如何手动执行此操作,请参见此答案的底部。

发生了什么

  1. 您将耳机与电脑配对A
    • 这需要手动验证。
    • 生成了新的链接密钥。
    • 两个设备都存储此链接密钥。
  2. 你拨动 USB 开关,这样你的蓝牙适配器就连接到电脑了
  3. 您将耳机与电脑配对
    • 这需要手动验证。
    • 生成了新的链接密钥。
    • 由于计算机使用与电脑相同的蓝牙适配器A因为它们都有相同的地址,所以耳机会认为它们是同一台计算机,并且它丢失了原始链接密钥(例如,你告诉它“忘记”耳机),当它存储此链接密钥时,它会替换计算机A的链接密钥。
  4. 再次拨动 USB 开关,以便蓝牙适配器再次连接到计算机A
  5. 电脑A耳机尝试通信,但无法通信,因为它们具有不同的链接密钥,因此无法验证它们是否是最初被允许连接的同一设备。

您想要的是让耳机认为它们是同一台计算机,因此您需要两台计算机存储相同的链接密钥。

解决方案

假设您使用的是 Windows 内置的蓝牙堆栈,则链接密钥存储在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys以蓝牙地址命名的密钥下。
注意:除非您更改其权限或以 SYSTEM 帐户启动注册表编辑器,否则无法访问此注册表项。我推荐后者:

  1. 下载 PsExec来自 SysInternals
  2. 启动命令提示符。
  3. 执行X:\Path\to\psexec.exe -s -i regedit.exe

如果您在两台电脑上都使用 Windows,则只需将两台电脑配对,然后将链接密钥从最后一台复制到第一台即可。由于您的其中一台电脑是 Mac,因此您需要做更多工作,因为它们存储链接密钥的方式不同。

  1. 首先,您应该配对 Windows PC。
  2. 将蓝牙适配器移至 Mac。
  3. 从 Mac 获取最新的链接密钥:
    • 这应该存储在/private/var/root/Library/Preferences/blued.plist
    • 执行sudo defaults read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist以查找所有存储的链接密钥。
  4. 找到适合您的耳机的连接键。
  5. 将此链接密钥从 Mac 格式转换为 Windows 格式:
    • 有效地将其分成两个字符块,然后反转这些块。
    • 虽然此链接密钥不切实际,但如果 Mac 将其存储为1234567890ABCDEFGH,则 Windows PC 需要将其存储为GHEFCDAB9078563412
  6. 将这个新转换的链接密钥复制到 Windows PC 的注册表中,覆盖旧的链接密钥。

简单的方法

我还发现了“BT-LinkkeySync”,这是 Tobias Finke 的一个开源(MIT 许可)项目,它可以从 Mac 获取所有密钥并将其输出为文件,.reg以便轻松导入 Windows。以下是 GitHub 上的链接:https://github.com/digitalbirdo/BT-LinkkeySync

相关内容