前言
在使用windows+linux双系统时,直接连接蓝牙鼠标的话就会遇到配对问题,在一个系统配对后,使用另一个系统时,需要再次配对,而且每次都需要重新配对。
之所以会发生这个问题,是因为Windows与Linux保存的蓝牙信息不同,而蓝牙鼠标保存的是最近一次的配对信息。
由于Linux下蓝牙配对信息相对容易修改,为了解决这个问题,我们可以把Windows下的蓝牙配对信息迁移到Linux上,这样就可以两个系统都配对了。
流程
1.准备
首先,一定要确保蓝牙鼠标都连接过windows与linux,并且保证最后连接的是windows
配对过windows与linux是为了有信息可以查询修改
最后连接的是windows,是为了把Windows配对的信息迁移到Linux
其次需要下载PsExec,因为Windows下,蓝牙配对信息只有SYSTEM权限才能查看,所以我们需要微软的官方工具PsExec获取SYSTEM权限(当然,也有其它获取SYSTEM权限的方案,PsExec相对简便)
2.Windows端操作
以管理员身份运行,通过psexec开启一个具有SYSTEM权限的powershell,这样才能查看蓝牙信息
./psexec.exe-s-ipowershell接下来到HKLM:\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys查看蓝牙信息:
cdHKLM:\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\KeysKeys路径下是电脑蓝牙驱动的MAC地址,进入后,则是各个设备的MAC地址,可以通过设备管理器找到蓝牙鼠标的具体MAC地址:
通过cd进入设备对应的路径下:
然后就可以运行Get-ItemProperty获取蓝牙设备信息了
Get-ItemProperty.
我们需要的信息是:
设备MAC,LTK,ERand,EDIV
其中ERand,EDIV的信息无需更改设备Mac(d10938302161)需要改为大写,并用冒号分隔D1:09:38:30:21:61
LTK则需要转换为16进制,可以通过执行这个,直接转换
(Get-ItemProperty.).LTK.ForEach{'{0:X2}'-f$_}-join''LTK最终得到BC4AF702DCDD925997BC9F53191E97EB
最终得到信息
设备Mac>D1:09:38:30:21:61ERand>4857315185773509896EDIV>46403LTK>BC4AF702DCDD925997BC9F53191E97EB
2.Linux端操作
来到Linux下,修改蓝牙配对信息
注:因为过程需要root权限,建议先sudo -i获取root权限
首先,先cd到蓝牙配置目录,找到配对过的蓝牙鼠标,一般可以通过蓝牙面板看到设备MAC
蓝牙鼠标MAC是作为一个文件夹存在的,直接把这个文件夹改名为从Windows得到的MAC地址
注:千万别修改电脑蓝牙MAC,如下图78:XX是电脑蓝牙MAC,里面的D1:XX才是鼠标的MAC,修改鼠标对应的MAC!!!
cd/var/lib/bluetooth/电脑蓝牙MACmv原本MAC 从Windows得到的MAC
然后进入这个文件夹,可以看到info配置文件,接下来把[LongTermKey]中的内容修改为Windows得到的数据就行了:
其中,
Rand对应ERandEDiv对应EDIVKey对应LTK
修改后重启,就可以看到效果了