笔记:Linux Windows双系统下蓝牙4.0连接配对的问题

在同计算机双系统使用场景下经常出现蓝牙设备配对的问题,即时无线蓝牙键盘支持多设备配对也会存在在一个系统下正常使用,而切换到另一系统后必须重新配对的问题。

当您与设备配对时,蓝牙服务将生成一组唯一的配对密钥。首先,计算机存储蓝牙设备的MAC地址和配对密钥。同时,蓝牙设备也会存储与计算机的MAC地址匹配的密钥。但是在双系统情况下,蓝牙端口的MAC地址在Linux和Windows上都将相同,即使在罗技K380支持多设备的蓝牙键盘上,使用了两个不同的存储器,似乎也会因为相同的计算机MAC地址,而覆盖之前的密钥设置。

但是,由于在Windows或Linux上配对设备生成的是不同的新密钥。如果需要在另一个操作系统内使用,也必须用新密钥覆盖先前存储在蓝牙设备上的密钥。

了解了原因之后,问题的解决方向也就清晰可见了,通过在两个操作系统内使用相同的密钥来实现保持蓝牙设备的跨系统连接。

同理也适用于同计算机下的多个Windows环境/Linux环境下的连接。在这里假设使用的是Linux Windows双系统下的连接。

准备工作

作为准备工作,请从sysinternals下载pstools并获取PsExec。

此时解决方案考虑的是蓝牙设备已经在两个系统环境下配对,且最后配对的设备是Windows操作系统。

在Windows环境下进行操作

在“控制面板”中,转到“设备和打印机”,转到蓝牙设备属性,在“蓝牙”部分中找到唯一标识符(即蓝牙设备的MAC地址),然后将其记录下来(稍后将会需要)。

解压缩下载的zip并以管理员身份打开运行CMD。

cd指令到解压的文件夹目录下 运行命令

psexec -s -i regedit.exe

Widows10环境下,密钥通常位于

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys

Keys文件夹下的子文件夹就是你的计算机蓝牙MAC地址,将其记录下来,然后展开它。

将会看到几个带有MAC地址的键标签,找到与先前复制的唯一标识符相同的MAC地址,然后可以笔记或拍照记录下后面的密钥

在Linux环境下进行操作

以管理员权限运行命令

$ sudo vi /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/YY:YY:YY:YY:YY:YY/info

其中XX:XX:XX:XX:XX:XX和YY:YY:YY:YY:YY:YY分别是你计算机的蓝牙MAC地址和先前复制的标识符(蓝牙设备的MAC地址)。

将其中的KEY修改成和Windows密钥一样

之后重启蓝牙服务

$ service bluetooth restart

如果能够成功连接则已大功告成了。

同时可以配置Linux自动连接蓝牙设备。

$ sudo bluetoothctl
[bluetooth]# trust YY:YY:YY:YY:YY:YY
[bluetooth]# quit

YY:YY:YY:YY:YY:YY是你先前复制的标识符的蓝牙设备的MAC地址。

 

Leave a Reply

召唤伊斯特瓦尔