macOS 与 BootCamp 双系统共用同一蓝牙设备 | 一日一技
Matrix 精选
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
前言
因为我的部分工作需要在 BootCamp 中完成,手头上也只有一个蓝牙音箱,每次在 macOS 与 BootCamp 中切换时,蓝牙音箱需要重新配对才可连接。故在互联网上搜寻了解决方法。
有趣的是,MacBook 在电脑启动时,会自动连接蓝牙键盘,因此无论在 macOS,还是 BootCamp 中,无需做出修改,便可连接(我使用的是 Logitech K480)。除了 BootCamp 用户,此方法还适用于 Windows To Go 用户。Windows → Windows 的修改方法大致与方法二相同,在此便不做过多阐述。
下面以手上的华为蓝牙音箱为例,其它蓝牙设备连接方法类似。如果已经连接,建议删除配对记录,重新连接。(以下方案理论上在 macOS、Windows、Linux 系统中通用,部分路径可能存在差异)
感谢 @Newlearner365 的热心协助,成功在其电脑上复现。请大家的实际操作中 注意备份 。
便捷方法:借助 Hackintool 导入蓝牙链接密钥至 Windows
Hackintool 是由 @headkaze 开发,用于 Hackintosh 上的一款小工具。此处借助当中的功能,为 Windows 生成蓝牙设备配对密钥的注册表文件。
本人的系统版本与使用工具的版本 1 ,不同电脑、系统可能会有一定差异。
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 read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist # macOS High Siera 以下 sudo defaults read /private/var/root/Library/Preferences/blued.plist

执行后,找到 Link Keys 节点,拷贝对应设备的密钥。
2、重新排序、转换格式
打开文本编辑器,这里我们需要将密钥转换为 Big Endian 格式。关于大端格式与小端格式的区别可参考 维基百科:字节顺序 或 百度百科:Endian ,此处不做过多讨论。

3、导入密钥
进入系统设置 – 蓝牙和其它设备,关闭电脑蓝牙和蓝牙音箱。
下载 PsExec Tool ,使用管理员身份在 Power Shell 或命令行中运行。
.\PsExec.exe -s -i regedit

进入注册表 – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTHPORT\Parameters\Keys\
,展开当前电脑的蓝牙适配器,找到对应设备,右键 – 修改二进制数据,将刚才重新排序的密钥复制到这里,保存,关闭。

注:因在方法一中,已通过注册表修改,故此处的密钥无需修改。
4、连接
进入系统设置 – 蓝牙和其它设备,打开电脑蓝牙和蓝牙音箱,此时蓝牙音箱可自动连接至电脑。
其它方法
除了 Hackintool,还可使用 BT-LinkKeySync 来导出连接密钥,具体方法可以参照 GitHub 上的指引。不过很不幸,无法在我的电脑成功导出对应的 Plist 文件与注册表。
原理

由于蓝牙耳机连接的是同一个蓝牙适配器(同一个 MAC 地址),先前在 macOS 配对时产生的密钥会被后面 Windows 配对的密钥暂时覆盖,因此将 A / B 的密钥覆盖至 B / A 中,便可相互连接。说法可能有误,希望各位带佬斧正,不胜感激。
问答
Q:有没有更简单的方法?
A:可能……没有。在某宝 / 某东购买一个 USB 蓝牙适配器,专门给 BootCamp / WTG 使用,让蓝牙设备将电脑当作新设备连接,但切换系统后,需要在蓝牙设备中手动连接(macOS 用户可通过 OneSwitch 实现蓝牙设备的快速连接)。

Q:使用方法一更改密钥时,提示注册表被保护,无法更改?
A:可通过 PsExec 工具提权修改,具体操作参照方法二。
Q:使用的时候存在跳切的问题(在 Windows 中,蓝牙设备会不停地在 「已配对」、「已连接」 状态之间跳动)
A:这个问题我后来试验的时候遇到过。(可能)解决的方法是:
- 分别在 macOS、BootCamp 中取消该蓝牙设备的配对;
- 按照 macOS → BootCamp 的顺序重新配对;
- 使用文中方法修改配对密钥;
如果有问题和建议,欢迎在评论区中留言,我会尽快做出回复,谢谢。
相关链接
工具
教程
- CSDN – 飓风7494: Win 10 和 Ubuntu 共享蓝牙 4.0 连接配对
- 丰富/悠然:Windows + Linux + macOS 三大系统共用蓝牙鼠标
- InsanelyMac – camoguy: Dual Boot Bluetooth Pairing Solved
- 南浦月:Linux 与 Windows 双系统共享蓝牙鼠标
- pcbeta – lisai9093:解决 Windows 与 macOS 双系统下的蓝牙设备共用的问题
技术文档
温馨提示
以上操作涉及修改系统文件,食用前请注意 备份。 因此造成的一切后果,本人皆不负责。
感谢群友@SunsetYe 与@StevApple 的提醒,当修改的是 Windows 中的 Link Key 时(即文中的方法一), macOS 中操作无需关闭 SIP(系统完整性保护)。
虽然在覆盖顺序上,没有过多要求,使用 macOS 的 Link Key 覆盖 Windows 的,或者是使用 Windows 的覆盖 macOS 的,这两种方式皆可使蓝牙音箱在两边顺利连接,但因 macOS 中还涉及到隔空传送、接力和随行功能,一旦出错容易造成以上功能不可用。因此 更推荐按照「读取 macOS、修改 Windows」 的顺序进行。
> 下载少数派客户端、关注少数派公众号,了解更精彩的数字生活 :leaves: