同一个蓝牙设备在装有linux,windows双系统的电脑上使用,每次重新连接都会出现连接失败的问题,都需要移除蓝牙设备再次添加,比较麻烦。导致这个问题的原因是蓝牙设备第一次连接电脑的蓝牙时会随机生成连接秘钥,储存在电脑和蓝牙设备中,以后每次连接都会校验这个秘钥。问题就是linux,windows蓝牙地址一样,在linux下连接过这个蓝牙设备存储了秘钥,在windows下又会重新连接又会生成新的秘钥,蓝牙设备记录下这个蓝牙地址的新秘钥,所以交替使用两个系统连接这个设备总会不成功。

解决办法:

  1. 更改电脑蓝牙设备地址使两个系统下的不一样(这个没找到方法…)
  2. 更改蓝牙设备连接秘钥使两个系统下的一样
Linux

linux在/var/lib/bluetooth/$(电脑蓝牙地址)/$(蓝牙设备地址)/info 文件里,有个叫linkkey项目里的key就是秘钥。记录一下。

sample

Windows

windows的秘钥存储在注册表中,得先获得访问注册表编辑工具权限。运行gpedit.msc,依次展开用户配置->管理模板->系统,找到“阻止访问注册表编辑工具”,设置为禁止。然后下载个工具。

下载地址:https://technet.microsoft.com/en-us/sysinternals/bb897553

下载完成后所有的exe文件解压到/windows/system32/里。

以管理员身份运行cmd或powershell,输入psexec -s -i regedit ,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTHPORT\Parameters\Keys\”,找到电脑蓝牙地址下的以蓝牙设备地址为名的键(需要先前连接过),把那个键值改为和linux的一致就可以了。