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 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,此处不做过多讨论(我也不会 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 的,这两种方式皆可使蓝牙音箱在两边顺利连接。
原理
蓝牙设备的连接过程如上图所示,相关资料来源于 Bluetooth SIG, Inc
注:以下说法可能有误,希望各位带佬斧正,不胜感激
由于蓝牙耳机连接的是同一个蓝牙适配器(同一个 MAC 地址),先前在 macOS 配对时产生的密钥会被后面 Windows 配对的密钥暂时覆盖,因此将 A / B 的密钥覆盖至 B / A 中,便可相互连接。
littlelincoln
校验提示文案
王王锤子
校验提示文案
ffee200
校验提示文案
红色资本
校验提示文案
leogogh
校验提示文案
xyoknlg
校验提示文案
逍遥风雨10
校验提示文案
宅猫株式会社
校验提示文案
基佬紫
校验提示文案
Yang在买买买
校验提示文案
ych430
校验提示文案
leogogh
校验提示文案
得天独厚
校验提示文案
洗只狼
校验提示文案
差不多帅哥
校验提示文案
值友944093
校验提示文案
一件绿衬衣
校验提示文案
一件绿衬衣
校验提示文案
值友944093
校验提示文案
差不多帅哥
校验提示文案
基佬紫
校验提示文案
宅猫株式会社
校验提示文案
洗只狼
校验提示文案
逍遥风雨10
校验提示文案
xyoknlg
校验提示文案
得天独厚
校验提示文案
leogogh
校验提示文案
leogogh
校验提示文案
红色资本
校验提示文案
ffee200
校验提示文案
ych430
校验提示文案
Yang在买买买
校验提示文案
王王锤子
校验提示文案
littlelincoln
校验提示文案