Linux和Win10共用一个蓝牙4.0设备

发布 | 2017-09-29 | Linux,Windows

装双系统的朋友都应该尝试过,在一台电脑的L和W双系统上使用同一个蓝牙设备,但是总是失败。
网上有人已经总结出原理:同一个蓝牙设备在与不同系统进行配对的时候会生成不同的认证信息,但蓝牙设备只能存储一个认证~
知道了原理所以解决方案也很简单:使得两个系统都使用同一认证即可。

针对蓝牙3.0版本,可以参考这篇文章:http://www.linuxdiyf.com/linux/29086.html

本次我介绍的是蓝牙4.0版本,对应双系统为 Windows 10 和 Linux Mint 18.2

教程开始:
0.删除两个系统中所有曾经连接过的蓝牙设备,方便接下去操作~~

1.在Linux下进行蓝牙配对(目的是生成蓝牙配置文件)

  • 启动Linux,修改/etc/bluetooth/main.conf文件【sudo】;

  • 去掉行[Policy]和AutoEnable前的注释;

  • 将 AutoEnable=false 改为 AutoEnable=true;

  • 然后搜索到蓝牙鼠标后配对,开机或唤醒后都可以自动连接;

2.在Windows下进行蓝牙配对

  • 在蓝牙鼠标配对完成后,从这里下载PSEXEC工具,解压;

  • 管理员打开CMD或者管理员打开PowerShell,进入解压目录,执行命令`psexec.exe -s -i
    regedit`之后会自动打开windows的注册表(64位系统使用:psexec64.exe -s -i regedit);

  • 打开注册表如下节点
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesBTHPORTParametersKeysxxxxxxxxxxxxyyyyyyyyyyyy

,
其中xxxxxxxxxxxxyyyyyyyyyyyy是代表电脑端蓝牙和蓝牙鼠标的地址,不同电脑不同,(如果电脑连接过多个蓝牙设备,xxxxxxxxxxxx下可能有多个地址,此时可用设备管理器中蓝牙设备的硬件ID作为唯一值来找,将此蓝牙地址记录下来备用;(比如我的蓝牙地址为:C2E1D27ABB7B)
111.png

3.记录下如下几个参数的值:
微软Designer鼠标,罗技:CSRK, IRK, LTK, EDIV, ERand,其中EDIV和ERand需要10进制;
小米:IRK, LTK, EDIV, ERand,其中EDIV和ERand需要10进制;
2222.png

4.重启进入linux(此时之前生效的鼠标应该是变得无法使用了),需要做出如下修改,
以下操作需要超级权限,请先su获取权限:
打开/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为电脑端蓝牙地址和鼠标蓝牙地址),一般蓝牙鼠标重新配对之后蓝牙地址会发生变化,所以此时的蓝牙地址可能和windows下的地址有所不同,需要修改成和windows下相同的蓝牙地址。(我的就改成C2:E1:D2:7A:BB:7B)

修改info文件中如下几个参数的值:

[IdentityResolvingKey]Key=(数值等于Windows下的IRK值的大写)
[LocalSignatureKey]Key=(数值等于Windows下的CSRK值的大写(小米鼠标无此项))
Counter=0
Authenticated=false
[LongTermKey]Key=(数值等于Windows下的LTK值的大写)
Authenticated=0
EncSize=16
EDiv=(数值等于Windows下的EDIV值的10进制)
Rand=(数值等于Windows下的ERand值的10进制)

3333.png
5.修改完成,保存,重启,即可在两个系统中使用蓝牙鼠标了

标签
没有标签

© 著作权归作者所有

本文由 梦缘逸飞 创作,采用 知识共享署名4.0 国际许可协议进行许可,本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。

吐槽一下吧

*选项为必填