这个问题的答案为您提供了总体思路,尽管在macOS方面有点模糊,所以我将阐明我使用的过程。
操作系统版本如下。文件名和位置可能会根据版本而更改,所以这对我来说很有效。
- MacOS High Sierra 10.13.1
- Ubuntu 17.04
我假设您拥有一个文件系统(USB密钥或其他),至少在MacOS中是可读写的,而在Ubuntu中则是可读的。
通常的想法是,当您将设备与OS配对时,会生成一个唯一的链接密钥,这对于下次激活配对时的身份验证是必需的。您可以将这些链接密钥从MacOS配对转移到Ubuntu配对,这样配对可以在两个OS中使用。
- 启动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默认读取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
。使用您喜欢的编辑器编辑这些文件:
须藤gedit / var / lib / bluetooth / A0:99:9B:16:43:D2 / 00:1F:20:47:E5:22 / info
须藤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'; 回声
3EA08BB7659321EE094C58372F006B4D
$ echo fe998c62 4bb29a7c 40b2e670 10db71ed | sed's / //g;s/../\U&\n/g'| tac | tr -d'\ n'; 回声
ED71DB1070E6B2407C9AB24B628C99FE
$
将这些重新格式化的键编辑到适当的信息文件的键条目中。最有可能sudo
需要。
- 重新启动蓝牙服务:
sudo服务蓝牙启动
- 现在打开您的蓝牙设备。它们应该被识别,并且配对在MacOS和Ubuntu中均有效/有效。
更新:配对似乎在MacOS和Ubuntu上都通过升级得以持续。我现在分别运行10.13.6和18.04,还没有需要重做此过程。