在同一台PC设备上安装两个系统,Windows和Linux系统,使用同一个蓝牙鼠标,在一个系统配对后需要在另一个系统再次配对,非常不方便,以下操作可以彻底解决该问题。
首先,计算机保存蓝牙设备的 MAC 地址和配对密钥;然后,蓝牙设备(如鼠标)保存计算机的 MAC 地址和配对密钥。这两步通常不会有问题,不过设备蓝牙端口的 MAC 地址在 Linux 和 Windows 上都是相同的 (这在硬件层面上就设定好了)。然而,当在 Windows 或 Linux 中重新配对设备时,它会生成一个新密钥,覆盖了蓝牙设备之前保存的密钥,即与 Windows 配对产生的密钥会覆盖原先与 Linux 配对的密钥,反之亦然。
在GUI界面连接蓝牙鼠标可能不成功,可以使用命令行连接蓝牙鼠标。如果已经通过GUI界面连接过且不成功,应该移除连接,并在/var/lib/bluetooth/${DEVICE}/${ADDRESS}/
下删除已有的${ADDRESS}
文件夹后,再进行以下操作
bluetoothctl
启动蓝牙管理工具power on
打开蓝牙scan on
打开蓝牙扫描devices
列出找到的蓝牙设备pair CC:C8:63:42:D9:EE
配对,此时可能会弹出窗口,选择Alowconnect CC:C8:63:42:D9:EE
,连接蓝牙,可能并不需要trust CC:C8:63:42:D9:EE
,这一步是必要的exit
退出蓝牙工具systemctl restart bluetooth.service
重启服务重新长按鼠标的蓝牙配对按钮,进入配对模式,通过windows的蓝牙设置界面连接蓝牙。
cmd
,通过cd C:\Users\lumin\Downloads\PSTools
命令进入到工具所在文件夹,执行PsExec.exe -s -i regedit.exe
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\0456e5e72330\ccc86342d9ee
,这里0456e5e72330
是电脑的蓝牙适配器地址,ccc86342d9ee
是蓝牙鼠标的地址CSRK -> LocalSignatureKey:Key
,使用十六进制大写;EDIV -> LongTermKey:EDiv
,使用十进制;ERand ->LongTermKey:Rand
,使用十进制;IRK -> IdentifyResolvingKey:Key
,使用十六进制大写;LTK -> LongTermKey:Key
,使用十六进制大写;/var/lib/bluetooth/${DEVICE}/${ADDRESS}/info
文件里去
CSRK -> LocalSignatureKey:Key
,使用十六进制大写;EDIV -> LongTermKey:EDiv
,使用十进制;ERand ->LongTermKey:Rand
,使用十进制;IRK -> IdentifyResolvingKey:Key
,使用十六进制大写;LTK -> LongTermKey:Key
,使用十六进制大写;mv CC:C8:63:42:D9:ED CC:C8:63:42:D9:EE
,改成和windows系统一样。通常前几位都是一样的,只有末位部分不同;使用命令修改,可能真实际的命令,需要给冒号:
前增加斜划线\
。systemctl restart bluetooth.service