我有一台 iMac,上面安装了 macOS 和 Ubuntu。我希望能够在两个操作系统上使用我的蓝牙鼠标和键盘,而无需在每次切换操作系统时重新配对。
有谁遇到过这个问题并找到了解决办法吗?
答案1
这个问题的答案给你一个大概的概念,虽然在 macOS 方面有点模糊,所以我会详细说明我所使用的程序。
操作系统版本如下。文件名和位置似乎会根据版本而变化,所以这对我有用。
- MacOS High Sierra 10.13.1
- Ubuntu 17.04
我假设你有一个文件系统(USB 密钥或其他),它至少在 MacOS 中可读写,在 Ubuntu 中可读。
总体思路是,当您将设备与操作系统配对时,会生成一个唯一的链接密钥,下次配对激活时,该密钥是身份验证所必需的。您可以将这些链接密钥从 MacOS 配对转移到 Ubuntu 配对,这样配对就可以在两个操作系统中工作。
- 启动 Ubuntu
- 照常配对设备
- 重新启动进入 MacOS
- 照常配对设备
- 在终端窗口中输入:
sudo defaults read com.apple.bluetoothd.plist LinkKeys
。这将给出类似以下内容的输出:
{ “a0-99-9b-16-43-d2” = { “00-1f-20-47-e5-22” = <4d6b002f 37584c09 ee219365 b78ba03e>; “04-0c-ce-3d-15-4d” = <fe998c62 4bb29a7c 40b2e670 10db71ed>; }; }
这a0-99-9b-16-43-d2
是我的系统上蓝牙适配器的 MAC 地址。
接下来是我已经配对的设备的 MAC 地址(00-1f-20-47-e5-22
和)04-0c-ce-3d-15-4d
以及与这些配对关联的链接密钥(分别是4d6b002f 37584c09 ee219365 b78ba03e
和fe998c62 4bb29a7c 40b2e670 10db71ed
)。
- 将此输出重定向到 MacOS 和 Ubuntu 均可见的文件:
sudo defaults read com.apple.bluetoothd.plist LinkKeys > /Volumes/4T/linkkeys.txt
- 关掉所有已配对的设备
- 重新启动进入 Ubuntu。 请勿开启您的蓝牙设备尚未连接。希望您此时可以使用有线键盘和鼠标
- 打开终端窗口
- 停止蓝牙服务:
sudo 服务蓝牙停止
- 查看目录
/var/lib/bluetooth
。您应该会看到一个蓝牙适配器 MAC 地址的子目录条目,格式如下A0:99:9B:16:43:D2
。在其中,您应该会看到每个设备 MAC 地址的子目录,如00:1F:20:47:E5:22
和04:0C:CE:3D:15:4D
。在这些目录中,您将找到名为的文件info
。使用您最喜欢的编辑器编辑这些文件:
sudo gedit /var/lib/bluetooth/A0:99:9B:16:43:D2/00:1F:20:47:E5:22/info sudo gedit /var/lib/bluetooth/A0:99:9B:16:43:D2/04:0C:CE:3D:15:4D/info
- 在这些文件中,您将找到一个
Key
条目。此键需要与 MacOS 中找到的键相同,但有一些重要的格式差异:- 删除了空格
- 大写的十六进制数字
- 字节交换的 128 位整数(即分成 2 个十六进制数字块并反转)
您可以按照如下方式实现此目的:
$ echo 4d6b002f 37584c09 ee219365 b78ba03e | sed's/ //g;s/../\U&\n/g' | tac | tr -d'\n'; echo 3EA08BB7659321EE094C58372F006B4D $ echo fe998c62 4bb29a7c 40b2e670 10db71ed | sed's/ //g;s/../\U&\n/g' | tac | tr -d'\n'; echo ED71DB1070E6B2407C9AB24B628C99FE $
将这些重新格式化的密钥编辑到相应信息文件的密钥条目中。很可能sudo
需要这样做。
- 重新启动蓝牙服务:
sudo 服务蓝牙启动
- 现在打开您的蓝牙设备。它们应该被识别,并且配对在 MacOS 和 Ubuntu 中都处于活动/有效状态。
更新:配对似乎在 MacOS 和 Ubuntu 升级后仍然存在。我现在分别运行 10.13.6 和 18.04,尚未重做此过程。