关键在于同步Windows与Ubuntu的蓝牙密钥:先从Windows注册表提取LinkKey(或BLE设备的LTK等),再将其写入Ubuntu的/var/lib/bluetooth/对应设备info文件中[LinkKey]或[LongTermKey]字段,最后重启蓝牙服务并清除旧配对记录即可实现单次配对、双系统自动连接。

让同一把罗技蓝牙键盘在Windows和Ubuntu双系统里只配对一次就能自动连接,关键不是重装驱动或更新固件,而是把Windows注册表里生成的蓝牙密钥“抄”给Linux用——两边用同一串暗号,设备才认得你是同一个主人。
第一步:在Windows中获取蓝牙设备的LinkKey
先确保键盘已在Windows中成功配对并能正常使用。打开「设备管理器」→「蓝牙」→右键你的蓝牙适配器(如Intel Wireless Bluetooth)→「属性」→「高级」选项卡,记下「地址」那一行的MAC地址,格式类似AA:BB:CC:DD:EE:FF;再用同样方法查出键盘自身的MAC地址(例如11:22:33:44:55:66)。
下载PsTools工具包(含psexec.exe),解压到C:\pstools。以管理员身份运行CMD,执行:
cd C:\pstools → psexec -s -i regedit
在注册表编辑器中定位到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\【AA:BB:CC:DD:EE:FF】\【11:22:33:44:55:66】
双击右侧的LinkKey项,复制其「数值数据」的十六进制内容(共32位,如a1b2c3d4e5f678901234567890abcdef)。注意:如果该路径下没有LinkKey,说明设备走的是BLE 5.0协议,需改查LTK项;若连LTK也没有,可能是配对未完成或设备不支持经典蓝牙,需重新进入配对流程。
第二步:在Ubuntu中定位并替换对应密钥文件
重启进入Ubuntu,确认蓝牙服务已启用:
sudo systemctl status bluetooth
进入蓝牙配置目录:
ls /var/lib/bluetooth/
你会看到一个或多个以MAC地址命名的子目录(如AA:BB:CC:DD:EE:FF),这正是你的蓝牙适配器地址。进入该目录,再进入子目录11:22:33:44:55:66(即键盘MAC),找到文件info。
用sudo权限编辑该文件:
sudo nano /var/lib/bluetooth/AA:BB:CC:DD:EE:FF/11:22:33:44:55:66/info
查找[LinkKey]段落,将其中的Key=后的内容整行替换成你从Windows复制来的32位十六进制字符串。保存退出。如果设备是BLE 5.0(如K380、MX Master 3等),还需同步修改[LongTermKey]段下的Key值,并确保EncSize=16、EDiv和Rand字段与Windows注册表中LTK项的对应二进制值一致——这些字段缺失会导致连接失败但无报错提示。
第三步:强制刷新并验证连接
执行以下命令清除旧连接缓存:
sudo systemctl restart bluetooth → sudo btmgmt power off → sudo btmgmt power on
打开蓝牙设置界面,删除已存在的该键盘配对记录(即使显示为“已连接”,也要删掉重来)。
关闭键盘电源,再开机,等待约5秒——此时Ubuntu会尝试用新写入的LinkKey发起认证。若键盘右上角指示灯由快闪变常亮,且输入有响应,说明无缝切换已生效。无需重启、无需再点“配对”,下次从Windows切回Ubuntu时,键盘将在1秒内自动重连。


















