蓝牙设备连接双(多)系统(windows和archlinux)

起因

因为我在一台机器上装了两种不同的系统,windows和archlinux系统,在切换系统的时候,蓝牙键盘和蓝牙鼠标会失效,也就是在其中一个系统配对使用后,切换到另一个系统鼠标和键盘会用不了,为了解决这个问题,我查看了archlinux的wiki,和搜索了其他的经验,发现并不是很好理解。所以自己编写了这篇文章以供自己和后来人参考

archlinux 官方wiki关于蓝牙的介绍:https://wiki.archlinuxcn.org/wiki/%E8%93%9D%E7%89%99

设备型号

设备说明蓝牙5.0
系统Windows10 ,Arch Linux/
键盘罗技k380
鼠标acer M115

为什么要关注 蓝牙的频率呢?
因为后面的配置文件一样,bt5.0要稍微复杂一下,这个也不用自己查询, 通过archlinux配对蓝牙生成的文件就可以看出来

配对双系统步骤

一、archlinux 配对蓝牙设备

我安装了图形化界面,对于配对蓝牙比较方便,这个过程不再演示,

如果你是无图形化界面,请参考https://wiki.archlinuxcn.org/wiki/蓝牙

配对成功后,打开终端,在 /var/lib/bluetooth 下可以看到 蓝牙设备的mac地址,继续进入蓝牙的mac地址,可以看到已经配对的蓝牙设备的mac地址,每个人的mac地址不一样,请根据自己情况操作
比如我的如下:
在这里插入图片描述34开头的对应的是我的键盘k380,C8开头的对应的是鼠标m115

让我们来看看他们各自的配置文件是怎样的

键盘k380
在这里插入图片描述上图的info内容对应的就是一个蓝牙2.4G的设备,后续的更改只需要修改 [LinkKey]标签下的Key即可。

接着来看看鼠标的配置文件
acer m115鼠标
在这里插入图片描述通过图中的配置文件就可以看出,配置多了许多,这是蓝牙5.0的配置文件,我们需要修改的内容大概有

[IdentityResolvingKey]
Key=75543290F900B56B68F2EA4EF34A2DA9

[LongTermKey]
Key=0932311C7550DDE3A0D73A479A521187
EncSize=16
EDiv=35838
Rand=220192556329416

这里面的内容对应windows的内容,稍后你就一目了然。

了解了archlinux的配置文件之后,让我们切换系统到windows,查看windows下的对应的配置

二、Windows配对蓝牙设备

在windows的环境下配对蓝牙设备,这个过程不再演示

三、修改 archlinx对应的配置文件

1)根据前文的知识,我们需要知道archlinux需要配置的值对应windows下是什么,这个值需要通过注册表查看。
2)为了查看这些值,还需要准备一个软件,正常查看注册表是看不到的,还需要下载微软提供 PsTool ,下载地址为:https://download.sysinternals.com/files/PSTools.zip,解压软件
3)解压软件之后,在加压的目录执行 .\PsExec64.exe -s -i regedit.exe,接着会打开注册表。
4)在注册表的地址找到

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys 

5)在keys下面有子项,子项的数据对应的是键盘的mac地址和linkkey,这是蓝牙2.4G,把mac地址对应的值记录下来,替换archlinux键盘的linkkey的key,只需要重启蓝牙,重启蓝牙的命令为 : sudo systemctl restart bluetooth,这样就实现了键盘在双系统的无缝切换。

6)对于鼠标,他的项根据我这边的情况,在键盘的项的下面,也就是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys 的子项的子项,点开可以看到一列些熟悉的值,
比如 EDIV,IRK,ERand,LTK等值,我们可以把项导出为 .reg文件,通过记事本也可以打开,内容大致如下

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\1063c8401130\c843931a29c8]
"LTK"=hex:09,32,31,1c,75,50,dd,e3,a0,d7,3a,47,9a,52,11,87
"KeyLength"=dword:00000010
"ERand"=hex(b):41,e3,51,ff,06,be,fd,2c
"EDIV"=dword:00008bfe
"IRK"=hex:75,54,32,90,f9,00,b5,6b,68,f2,ea,4e,f3,4a,2d,a9
"Address"=hex(b):c8,29,1a,93,43,c8,00,00
"AddressType"=dword:00000001
"AuthReq"=dword:0000002d

但是我并不建议导出来,因为archlinux的值是十进制的,windows到处的值是十六进制,后续还要转换进制,稍显麻烦,你细心 的话在注册表里就可以看到转换过的值,也就是括号里面的内容,如图:
在这里插入图片描述

这图是网上其他人分享的图,编辑这篇文章时是在archlinux下编写的,切换个系统截图太麻烦了,所以偷个懒

请记录下括号里面的内容,替换archlinux下对应的值,前文已经看过配置文件,在修改LTK,IRK的时候,请把小写字母转换成大写。全部替换完成之后,重启蓝牙,应该也是可以的。

重启蓝牙的命令为 : sudo systemctl restart bluetooth

根据我的经验来看,来记录window注册表蓝牙对应的值的时候,请仔细小心,不必转换,如果不行,再考虑转换,转换请参考官方wili

https://wiki.archlinuxcn.org/wiki/蓝牙

至此,完结撒花 。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值