1、Ubuntu 下配对蓝牙设备

会生成一个配置文件。

2、Windows 下再配对蓝牙设备

读取蓝牙配对信息,Windows下的蓝牙配对信息存储在注册表中,并且此信息需要使用特殊方法才能查看。

下载 PsTools,将PSTools.zip 中的 PsExec.exe 或 PsExec64.exe 解压出来,并以管理员权限运行 cmd,cdPsExec64.exe 所在目录,使用下面的命令启动regedit.exe

1
psexec64.exe -si regedit

找到下面的蓝牙配对信息

1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\【本机蓝牙 MAC】

image.png

可以看到其中有类型为REG_BINARY的值,每个值对应一个设备,将其名称和数据记下来,或者直接导出,我导出后用记事本打开如下:

1
2
3
4
5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\d4d853556b34]
"CentralIRK"=hex:38,a5,32,96,6c,bf,c2,31,7b,e9,43,e0,b9,cc,9d,d6
"6468761a6934"=hex:6b,bf,d8,14,d8,aa,2f,d8,f7,68,73,a7,83,64,6e,8f

此外如果是罗技设备,例如本人的罗技鼠标,则需要导出 【本机蓝牙 MAC】 下的子项,项名称为罗技鼠标的 MAC 地址,项中的各个值则是需要填写到 Ubunut 中的内容
image.png

3、修改Linux下的蓝牙配对信息

3.1 一般设备

Linux 下蓝牙设备的配对信息存储在 /var/lib/bluetooth/【本机蓝牙 MAC】目录下,例如 /var/lib/bluetooth/D4:D8:53:55:6B:34,MAC 地址中的字母全为大写,且含冒号分隔符。

进入该目录:

1
2
sudo su
cd /var/lib/bluetooth/D4\:D8\:53\:55\:6B\:34/

可以看到系统已配对的蓝牙设备:

1
2
3
4
5
6
7
8
9
10
root@Victus-Ubuntu:/var/lib/bluetooth/D4:D8:53:55:6B:34# ll
total 44
drwx------ 7 root root 4096 12月 13 22:19 ./
drwxr-xr-x 3 root root 4096 5月 13 2023 ../
drwx------ 2 root root 4096 12月 13 22:19 64:68:76:1A:69:34/
drwx------ 2 root root 4096 12月 13 22:19 A4:C1:38:AB:43:5C/
drwx------ 2 root root 16384 12月 13 22:20 cache/
drwx------ 2 root root 4096 12月 13 22:19 EC:B3:D5:3C:5F:92/
drwx------ 2 root root 4096 12月 13 22:20 F9:E7:70:AD:8C:64/
-rw------- 1 root root 50 12月 13 22:19 settings

根据我们导出的reg文件,可以知道进入我们要配置的蓝牙鼠标的目录:

1
cd 64\:68\:76\:1A\:69\:34/

我们需要修改的就是这个目录下的 info 文件,以我的为例,文件如下(这里已经改好了,只需要将Key换成windows下导出的注册表里面的key,具体就是win下的逗号删除小写变大写):

1
2
3
4
5
6
7
8
9
10
11
12
[General]
Name=EDIFIER W820NB 双金标版
Class=0x240404
SupportedTechnologies=BR/EDR;
Trusted=true
Blocked=false
Services=00001101-0000-1000-8000-00805f9b34fb;0000110b-0000-1000-8000-00805f9b34fb;0000110c-0000-1000-8000-00805f9b34fb;0000110d-0000-1000-8000-00805f9b34fb;0000110e-0000-1000-8000-00805f9b34fb;0000111e-0000-1000-8000-00805f9b34fb;66666666-6666-6666-6666-666666666666;edf00000-edfe-dfed-fedf-edfedfedfedf;

[LinkKey]
Key=6BBFD814D8AA2FD8F76873A783646E8F
Type=4
PINLength=0

3.2 罗技设备

将 Windows 下的 IRK 字符倒序大写删除逗号,即为 Ubuntu 下的 IdentityResolvingKey

1
2
3
4
"IRK"=hex:d3,1f,03,20,e5,be,13,64,33,8b,63,09,d3,01,bd,33

[IdentityResolvingKey]
Key=33BD01D309638B6413BEE520031FD3

Windows 下的 LTK 大写删除逗号,即为 Ubuntu 下的 LontermKey
EDIV 需要转换成 10 进制,为 Ubuntu 的 EDiv
ERand 需要删除逗号并转换成 10 进制,为 Ubuntu 的 Rand

1
2
3
4
5
6
7
8
9
10
"LTK"=hex:ae,4b,59,52,fa,32,7d,2b,aa,0a,a7,de,33,ac,2b,20
"ERand"=hex(b):cd,d7,f7,f8,01,f9,49,f2
"EDIV"=dword:00006f5f

[LongTermKey]
Key=AE4B5952FA327D2BAA0AA7DE33AC20
Authenticated=0
EncSize=16
EDiv=28511
Rand=14832596542325082602

然后重启电脑,可以直接连接蓝牙。