本文首发于 少数派:macOS 与 BootCamp 双系统共用同一蓝牙设备指引 ,未经允许,禁止转载。
前言
因为需要部分工作需要在 BootCamp 中完成,手头上也只有一个蓝牙音箱,每次在 macOS 与 BootCamp 中切换时,蓝牙音箱需要重新配对才可连接。故在互联网上搜寻了解决方法。
下面以手上的华为蓝牙音箱为例,其它蓝牙设备连接方法类似。如果已经连接,建议删除配对记录,重新连接。(以下方案理论上在 macOS、Windows、Linux 系统中通用,部分路径可能存在差异)
感谢 @Newlearner365 的热心协助,成功在其电脑上复现。
温馨提示
以下操作涉及修改系统文件,食用前请注意 备份!备份!备份!因此造成的一切后果本人皆不负责。
便捷方法:借助 Hackintool 导入蓝牙链接密钥至 Windows
Hackintool 是由 @headkaze 开发,用于 Hackintosh 上的一款小工具。此处借助当中的功能,为 Windows 生成蓝牙设备配对密钥的注册表文件。
本人的系统版本与使用工具的版本(macOS:10.14.6;Windows:1909;HackinTool:3.4.0) ,不同电脑、系统可能会有一定差异。
1、将蓝牙音箱分别在 macOS 与 Windows 中配对
2、回到 macOS,打开 Hackintool
进入「工具」选项卡,点击下方的「蓝牙」图标,输入用户密码,随后在桌面上可找到一个注册表文件。
如果有不需要导入的设备,按 Option 键点击屏幕左上角的 图标,进入系统信息 → 蓝牙,找到对应设备的 MAC 地址,在注册表中删去该行即可。
3、进入 Windows,关闭蓝牙,导入注册表
进入系统设置,关闭电脑蓝牙与蓝牙音箱。
通过 U 盘或其它方式将注册表文件复制到 Windows 中,双击打开导入注册表。
导入完成后,进入系统设置 - 蓝牙和其他设备,打开电脑蓝牙与蓝牙音箱,此时蓝牙音箱可自动连接至电脑。
极客方法:手动修改 Windows 下的蓝牙设备密钥
此方法相对复杂,不推荐使用。 以下方法基于 pcbeta - lisai9093:解决 Windows 与 macOS 双系统下的蓝牙设备共用的问题 的教程整合而成。
1、打开终端,拷贝 macOS 中的蓝牙配对密钥
在终端中运行以下命令(命令中的「xw」需要更改为当前的用户名),输入用户密码,回车执行。
# macOS High Siera 以上
sudo defaults
执行后,找到 Link Keys 节点,拷贝对应设备的密钥。
2、重新排序、转换格式
打开文本编辑器,这里我们需要将密钥转换为 Big Endian 格式。关于大端格式与小端格式的区别可参考 维基百科:字节顺序 或 百度百科:Endian,此处不做过多讨论(我也不会 x。
3、导入密钥
进入系统设置 - 蓝牙和其它设备,关闭电脑蓝牙和蓝牙音箱。
下载 PsExec Tool,使用管理员身份在 Power Shell 或命令行中运行。
.PsExec.exe -s -i regedit
进入注册表 - HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesBTHPORTParametersKeys,展开当前电脑的蓝牙适配器,找到对应设备,右键 - 修改二进制数据,将刚才重新排序的密钥复制到这里,保存,关闭。
注:因在方法一中,已通过注册表修改,故此处的密钥无需修改。
4、连接
进入系统设置 - 蓝牙和其它设备,打开电脑蓝牙和蓝牙音箱,此时蓝牙音箱可自动连接至电脑。
其它方法
除了 Hackintool,还可使用 BT-LinkKeySync 来导出连接密钥,具体方法可以参照 GitHub 上的指引。不过很不幸,无法在我的电脑成功导出对应的 Plist 文件与注册表。
在覆盖顺序上,没有过多要求,使用 macOS 的 Link Key 覆盖 Windows 的,或者是使用 Windows 的 Link Key 覆盖 macOS 的,这两种方式皆可使蓝牙音箱在两边顺利连接。
原理
注:以下说法可能有误,希望各位带佬斧正,不胜感激
由于蓝牙耳机连接的是同一个蓝牙适配器(同一个 MAC 地址),先前在 macOS 配对时产生的密钥会被后面 Windows 配对的密钥暂时覆盖,因此将 A / B 的密钥覆盖至 B / A 中,便可相互连接。
相关链接
工具
- GitHub:HackinTool
- GitHub:BT-LinkKeySync - macOS Catalina Support
- Microsoft: PsExec Tool
教程
- CSDN - 飓风7494: Win 10 和 Ubuntu 共享蓝牙 4.0 连接配对
- 丰富/悠然:Windows + Linux + macOS 三大系统共用蓝牙鼠标
- InsanelyMac - camoguy: Dual Boot Bluetooth Pairing Solved
- 南浦月:Linux 与 Windows 双系统共享蓝牙鼠标
- pcbeta - lisai9093:解决 Windows 与 macOS 双系统下的蓝牙设备共用的问题
技术文档
- Bluetooth SIG, Inc - Kai Ren: Bluetooth Pairing Part