ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

多系统下的蓝牙设备共用配对问题之 IRK、LTK、EDIV、ERAND.以 Manjaro、Debian、Windows10 为例

2021-09-05 12:01:36  阅读:336  来源: 互联网

标签:Manjaro ERAND 为例 蓝牙 Linux LTK 配对 ID 设备


多系统下的蓝牙设备共用配对问题之 IRK、LTK、EDIV、ERAND.以 Manjaro、Debian、Windows10 为例

简介

多系统下的蓝牙设备配对问题的解决办法,以 Windows 10 + Manjaro + Debian 为例。尤其适合双(多)系统下的蓝牙设备不支持多配对的时候(有的蓝牙设备是可以进行多主机配对的),同理适合 win + linux 双系统的用户,mac 同理(本人暂无法验证,见参考中大佬的解决办法)。

本文不涉及 Mac 以及需要 CSRK 的设备(原因是我没有这样的设备,有需要的可以去参考中看相关资料)。

大纲

  1. linux 下进行蓝牙配对
  2. windwnows 下进行蓝牙配对
  3. 用 PStool导出 windows 的蓝牙配置信息
  4. 用 sudo 修改 linux 的蓝牙配置信息

实操

linux 下进行蓝牙配对

我这里使用的是 Manjaro,配对了两个蓝牙设备,鼠标(MiMouse)和键盘(KB),并且使用上是正常的。在系统托盘中的蓝牙管理可点击对应的设备展开更多信息可以看到设备对于的物理地址分别是 EB、D1 打头(方便起见,这个需要记一下,太长且不可复制,记一下开头就行,后面介绍咋复制)。

暂时我们记录的信息如下所示:

设备名称:鼠标 MiMouse
Linux 蓝牙 ID:EB

设备名称:键盘 KB
Linux 蓝牙 ID:D1

蓝牙设备的地址信息

windows 下进行蓝牙配对

配对蓝牙设备这个没啥好说的哈,配对完之后我们需要记录一下配对蓝牙设备的设备 ID。方法是在蓝牙设置界面中的 “相关设置” 选择 “更多蓝牙选项”;在弹出的 “蓝牙设置“ 窗口中的菜单栏选择 “硬件” ,在设备中选中刚才配对的某个设备,如键盘 KB;然后点击 “属性“;咋对应的 “属性窗口的菜单栏“ 选择 “事件“,在底部的 “信息” 展示中先是着 “已配置设备 BTHLE\DEV_id\“,这个 DEV_id 中的 id 就是该蓝牙设备的设备 ID。记录下来,之后对另一个蓝牙设备也这样操作获取其 ID.

蓝牙配置-等多蓝牙选项

蓝牙属性获取-硬件-属性-事件-信息

暂时我们记录的信息如下所示:

设备名称:鼠标 MiMouse
Linux 蓝牙 ID:EB
win 设备 ID:e35d79da5272

设备名称:键盘 KB
Linux 蓝牙 ID:D1
win 设备 ID:d118ff200048

用 PStool导出 windows 的蓝牙配置信息

PsExec 官网下载其压缩包,提取其中的 PsExec64.exec://windows/system32,然后鼠标右键菜单标志(默认菜单栏最左边),选择以管理员身份打开 powershell,输入psexec64.exe -si regedit 后回车会打开注册表编辑器。(32位PC就提取PsExec.exe,powershell的命令改为psexec.exe -si regedit)。

在注册表上方的地址栏粘贴下面一行后回车转到蓝牙配置: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTHPORT\Parameters\Keys\

可以在左侧看到 Keys 下面有一个文件夹,这个文件夹代表你的电脑,点击展开它,里面的文件夹的名称刚好对应我们在上一步获取到的蓝牙设备的设备 ID。

d11的全部参数

e35的全部参数

复制 ERand 的十进制数据示意图,右键选中修改

复制 ERand 的十进制数据示意图,勾选十进制基数后复制

选中一个蓝牙设备的文件夹,右键导出,保存为 txt 文件,名称为这个设备的 ID,我们需要复制并记录其中的 IRK 和 LTK。之后获取 EDIV 和 ERAND 的十进制数值,数值在右侧可以看到,但不可以复制。复制的解决办法是右键这个参数的名称,点击修改,然后在弹出的窗口显示的是十六进制,在其右侧勾选十进制就会自动转换为十进制,复制保存下来。

复制 IRK 和 LTK 的时候需要注意两侧的不需要复制,只需要复制中间的就行,复制得到的结果和注册表中右侧显示的应该是一样的。

导出示意图,注意保存类型为 txt

LIK 复制例子

暂时我们记录的信息如下所示:

设备名称:鼠标 MiMouse
Linux 蓝牙 ID:EB
win 设备 ID:e35d79da5272
IRK:24 8c 97 e7 8c 9f c7 ba - 5a 52 4a cf 20 c6 86 93
LTK:04 29 6f 8e 03 bb 5c 13 - f1 4c 6d ba fe 45 d8 a4
EDIV:33544
ERAND:8341617009900789008

设备名称:键盘 KB
Linux 蓝牙 ID:D1
win 设备 ID:d118ff200048
IRK:11 02 77 86 cb 19 27 1e - f3 18 c0 8f 44 56 55 33
LTK:0f d1 d2 cf 06 33 24 d1 - 47 4e a5 71 e3 3a 09 2d
EDIV:12016
ERAND:12806037061999603757

格式转换

Linux 下的配置格式和刚才获取的有一丢丢差距,大小写和空格等,对 RK、LTK 需要转大写并且去掉其中的空格和短线;对设备 ID 则需要转大写并手动插入英文冒号。

这是两个简单在线工具网站,字母大写去空格,去短线和加入冒号需要自己操作,还没发现好工具。

暂时我们记录的信息如下所示:

设备名称:鼠标 MiMouse
Linux 蓝牙 ID:EB
win 设备 ID:EB:FE:DC:C0:E6:CE
IRK:248C97E78C9FC7BA5A524ACF20C68693
LTK:04296F8E03BB5C13F14C6DBAFE45D8A4
EDIV:33544
ERAND:8341617009900789008

设备名称:键盘 KB
Linux 蓝牙 ID:D1
win 设备 ID:D1:18:FF:20:00:48
IRK:11027786CB19271EF318C08F44565533
LTK:0FD1D2CF063324D1474EA571E33A092D
EDIV:12016
ERAND:12806037061999603757

用 root 权限修改 linux 的蓝牙配置信息

重新进入到 Manjaro。到这里我们还需要本机的蓝牙 ID 和 Linux 系统下对应的蓝牙设备 ID,分别在下面第 1、2 条命令获取。

# 获取本机的蓝牙 ID
$ sudo ls /var/lib/bluetooth
28:CD:C4:BA:BB:2C

# 获取已经配对的蓝牙设备 ID,后面那串 28:...:2C 是上面获取到的“本机的蓝牙 ID” 
$ sudo ls /var/lib/bluetooth/28:CD:C4:BA:BB:2C
cache  D1:17:FF:20:00:48  EB:FE:DC:C0:E6:CE  settings
# 从上面的输出就知道鼠标和键盘的具体ID,而且可以复制

到这里我们可以更新小本本中 Linux 蓝牙 ID 并增加本机 ID了。现在我们记录的信息如下所示:

本机的蓝牙 ID: 28:CD:C4:BA:BB:2C
设备名称:鼠标 MiMouse
Linux 蓝牙 ID:EB:FE:DC:C0:E6:CE
win 设备 ID:E3:5D:79:DA:52:72
IRK:248C97E78C9FC7BA5A524ACF20C68693
LTK:04296F8E03BB5C13F14C6DBAFE45D8A4
EDIV:33544
ERAND:8341617009900789008

设备名称:键盘 KB
Linux 蓝牙 ID:D1:17:FF:20:00:48
win 设备 ID:D1:18:FF:20:00:48
IRK:11027786CB19271EF318C08F44565533
LTK:0FD1D2CF063324D1474EA571E33A092D
EDIV:12016
ERAND:12806037061999603757

现在我们该更改 Linux 的蓝牙配置信息了。其中要修改的配置有

winlinux备注
IRKIdentityResolvingKey转大写,去掉空格、短线
LTKLongTermKey转大写,去掉空格、短线
EDIVLTK.EDiv十进制
ERandLTK.Rand十进制

有的设备配置文件有 [SlaveLongTermKey],其也有 Ediv、Rand 的属性,不要动它,只需要改 [LongTermKey] 下的 Ediv、Rand。不然结果就是疯狂的连接与掉线。。。

# 以下指令需要修改对应的路径才能使用

# 修改鼠标的配置信息
$ sudo nano /var/lib/bluetooth/28:CD:C4:BA:BB:2C/EB:FE:DC:C0:E6:CE/info
# 更新配置的蓝牙 ID,这一步很重要。相当于重命名
# 将旧的 “Linux 蓝牙 ID“ 修改为 “win 设备 ID”
$ sudo mv /var/lib/bluetooth/28:CD:C4:BA:BB:2C/EB:FE:DC:C0:E6:CE/ /var/lib/bluetooth/28:CD:C4:BA:BB:2C/E3:5D:79:DA:52:72

# 修改键盘的配置信息
$ sudo nano /var/lib/bluetooth/28:CD:C4:BA:BB:2C/D1:17:FF:20:00:48/info
$ sudo mv /var/lib/bluetooth/28:CD:C4:BA:BB:2C/D1:17:FF:20:00:48/ /var/lib/bluetooth/28:CD:C4:BA:BB:2C/D1:18:FF:20:00:48

# 重启蓝牙服务,使设置生效
$ sudo systemctl restart bluetooth 

# 将 Manjaro 的蓝牙配置复制到 Debian 中,多 Linux 系统下可以这样操作,亲测有效。(双系统可以跳过)
# Debian 的路径与你挂载的路径和名称有关 - /run/media/kearney/Debian/
$ sudo cp -r /var/lib/bluetooth/28:CD:C4:BA:BB:2C/ /run/media/kearney/Debian/var/lib/bluetooth/

键盘原配置

键盘更新之后的配置

鼠标原配置

鼠标更新之后的配置

总结

在最后的步骤 “用 root 权限修改 linux 的蓝牙配置信息” 中,其实可以用 root 账户登陆桌面,操作就会是图形化操作,当然也可以在管理员用户下用 su root 切换到 root 账户,这样不需要记录本机 ID 和 Linux 蓝牙 ID,因为可以用 tab 自动补全,但想了一下能用 sudo 解决的话,就先用着吧见仁见智。

平实主要是用 Manjaro, Debian 没法用 AUR,下载了也涉及依赖问题,社区推的 DUR 还不成熟,先留着,之后估计会砍掉 Debian 装 BSD 玩一下。

参考

标签:Manjaro,ERAND,为例,蓝牙,Linux,LTK,配对,ID,设备
来源: https://blog.csdn.net/weixin_43031092/article/details/120112317

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有