15

macOS 与 BootCamp 双系统共用同一蓝牙设备 | 一日一技

 3 years ago
source link: https://sspai.com/post/60724
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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 中配对

RF7vIvU.jpg!web macOS:打开系统偏好设置 → 蓝牙 MBF3eyu.jpg!web Windows:打开系统偏好设置 → 蓝牙

2、回到 macOS,打开 Hackintool

Aveiemz.jpg!web Hackintool 导出配对密钥

进入「工具」选项卡,点击下方的「蓝牙」图标,输入用户密码,随后在桌面上可找到一个注册表文件。

IFj6rqr.jpg!web 配对密钥

如果有不需要导入的设备,按 Option 键点击屏幕左上角的  图标,进入系统信息 → 蓝牙,找到对应设备的 MAC 地址,在注册表中删去该行即可。

euUZB3v.jpg!web 选择需要导入的设备

3、进入 Windows,关闭蓝牙,导入注册表

进入系统设置,关闭电脑蓝牙与蓝牙音箱。

通过 U 盘或其它方式将注册表文件复制到 Windows 中,双击打开导入注册表。

vERbuiu.jpg!web 导入注册表

导入完成后,进入系统设置 - 蓝牙和其他设备,打开电脑蓝牙与蓝牙音箱,此时蓝牙音箱可自动连接至电脑。

aIjENz6.jpg!web 连接蓝牙音箱

极客方法:手动修改 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
YfANbea.jpg!web 查询蓝牙设备配对密钥

执行后,找到 Link Keys 节点,拷贝对应设备的密钥。

2、重新排序、转换格式

打开文本编辑器,这里我们需要将密钥转换为 Big Endian 格式。关于大端格式与小端格式的区别可参考 维基百科:字节顺序百度百科:Endian ,此处不做过多讨论。

AvaUNbn.jpg!web 重新排序

3、导入密钥

进入系统设置 - 蓝牙和其它设备,关闭电脑蓝牙和蓝牙音箱。

下载 PsExec Tool ,使用管理员身份在 Power Shell 或命令行中运行。

.\PsExec.exe -s -i regedit
6J7Rnqy.jpg!web 通过提权工具 PsExec 运行注册表编辑工具

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

JfQzAj7.jpg!web 导入配对密钥

注:因在方法一中,已通过注册表修改,故此处的密钥无需修改。

4、连接

进入系统设置 - 蓝牙和其它设备,打开电脑蓝牙和蓝牙音箱,此时蓝牙音箱可自动连接至电脑。

其它方法

除了 Hackintool,还可使用 BT-LinkKeySync 来导出连接密钥,具体方法可以参照 GitHub 上的指引。不过很不幸,无法在我的电脑成功导出对应的 Plist 文件与注册表。

原理

RBZveme.jpg!web 蓝牙设备的连接过程如上图所示,相关资料来源于 Bluetooth SIG, Inc

由于蓝牙耳机连接的是同一个蓝牙适配器(同一个 MAC 地址),先前在 macOS 配对时产生的密钥会被后面 Windows 配对的密钥暂时覆盖,因此将 A / B 的密钥覆盖至 B / A 中,便可相互连接。说法可能有误,希望各位带佬斧正,不胜感激。

问答

Q:有没有更简单的方法?

A:可能……没有。在某宝 / 某东购买一个 USB 蓝牙适配器,专门给 BootCamp / WTG 使用,让蓝牙设备将电脑当作新设备连接,但切换系统后,需要在蓝牙设备中手动连接(macOS 用户可通过 OneSwitch 实现蓝牙设备的快速连接)。

VFZnI3R.jpg!web OneSwitch 快捷操作

Q:使用方法一更改密钥时,提示注册表被保护,无法更改?

A:可通过 PsExec 工具提权修改,具体操作参照方法二。

Q:使用的时候存在跳切的问题(在 Windows 中,蓝牙设备会不停地在 「已配对」、「已连接」 状态之间跳动)

A:这个问题我后来试验的时候遇到过。(可能)解决的方法是:

  1. 分别在 macOS、BootCamp 中取消该蓝牙设备的配对;
  2. 按照 macOS → BootCamp 的顺序重新配对;
  3. 使用文中方法修改配对密钥;

如果有问题和建议,欢迎在评论区中留言,我会尽快做出回复,谢谢。

相关链接

工具

教程

技术文档

温馨提示

以上操作涉及修改系统文件,食用前请注意 备份。 因此造成的一切后果,本人皆不负责。

感谢群友@SunsetYe 与@StevApple 的提醒,当修改的是 Windows 中的 Link Key 时(即文中的方法一), macOS 中操作无需关闭 SIP(系统完整性保护)。

虽然在覆盖顺序上,没有过多要求,使用 macOS 的 Link Key 覆盖 Windows 的,或者是使用 Windows 的覆盖 macOS 的,这两种方式皆可使蓝牙音箱在两边顺利连接,但因 macOS 中还涉及到隔空传送、接力和随行功能,一旦出错容易造成以上功能不可用。因此 更推荐按照「读取 macOS、修改 Windows」 的顺序进行。

> 下载少数派客户端、关注少数派公众号,了解更精彩的数字生活 :leaves:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK