美文网首页
在 Windows 和 Archlinux 双系统中共享蓝牙键盘

在 Windows 和 Archlinux 双系统中共享蓝牙键盘

作者: Frederich | 来源:发表于2021-03-22 21:15 被阅读0次

    最近购买了一个罗技 Pebble 蓝牙鼠标和一个高斯 GS87D 蓝牙机械键盘,结果在双系统中就遇到了问题。一旦在其中一个系统中配对成功,在另一个系统中就没法使用了。在网上找了半天原因,才明白这是因为不同系统配对的时候生成的密钥,地址这些都会有所不同,造成了不能共享的问题。参考了网上的一些解决方案,终于实现了共享,现将过程记录如下。

    1. 首先需要下载 PSTools 工具,以访问注册表中一些需要超级管理员权限才能看到的东西。

    2. 在 Archlinux 中安装 bluez 和 bluemen,命令如下:

    sudo pacman -S bluez blueman
    sudo systemctl enable bluetooth.service
    

    重启后使用 blueman 图形界面配对蓝牙鼠标键盘,确保能够使用。

    1. 在 Windows 系统中将蓝牙键盘鼠标配对成功,并保证能够使用,此时 Linux 下的配置会失效。

    2. 将 PSTools 解压出来后,执行如下命令打开注册表:

    PsExec -s -i regedit
    
    1. 打开 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys 目录,找到下面的 {你的蓝牙适配器MAC地址} 的子目录,在其中找到名为蓝牙键盘的 MAC 地址的 REG_BINARY 键,记录下其值,如图所示:


      蓝牙键盘注册表
    2. 罗技 pebble 是LE(Low Energy)蓝牙设备,配对方式会略有不同。打开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys{你的蓝牙适配器MAC地址}{蓝牙鼠标MAC地址}目录,记录下其值,如图所示:


      蓝牙鼠标注册表
    3. 重启进入 Linux ,用 su 命令切换到 root 用户,进入 /var/lib/bluetooth/ 目录,找到你的蓝牙适配器MAC地址对应的目录,如图所示:


      Linux 蓝牙目录
    4. 首先将蓝牙设备对应的 MAC 地址的目录进行重命名,命名为跟 Windows 目录下地址相同的名字,如果已经相同则忽略这一步。

    5. 进入蓝牙键盘对应的 MAC 地址的目录,编辑 info 文件,修改 LinkKey 中的 KEY= 一项,与之前记录的值相同,注意这里要大写,例如:

    [General]
    Name=GS87-D Keyboard
    Class=0x000540
    SupportedTechnologies=BR/EDR;
    Trusted=true
    Blocked=false
    WakeAllowed=true
    Services=00001000-0000-1000-8000-00805f9b34fb;00001124-0000-1000-8000-00805f9b34fb;00001200-0000-1000-8000-00805f9b34fb;
    
    [LinkKey]
    Key=73E80723FBD1F6B978617D434D209CEB
    Type=4
    PINLength=0
    
    [DeviceID]
    Source=2
    Vendor=1452
    Product=544
    Version=1
    
    1. 进入蓝牙鼠标对应的目录,编辑 info 文件,如下所示:
    [General]
    Name=Logitech Pebble
    Appearance=0x03c2
    AddressType=static
    SupportedTechnologies=LE;
    Trusted=false
    Blocked=false
    WakeAllowed=true
    Services=00001800-0000-1000-8000-00805f9b34fb;00001801-0000-1000-8000-00805f9b34fb;0000180a-0000-1000-8000-00805f9b34fb;0000180f-0000-1000-8000-00805f9b34fb;00001812-0000-1000-8000-00805f9b34fb;00010000-0000-1000-8000-011f2000046d;
    
    [ConnectionParameters]
    MinInterval=6
    MaxInterval=9
    Latency=44
    Timeout=216
    
    [IdentityResolvingKey]
    Key=21DCF8B7E9CC09AA2726C7F9F9CADA16
    
    [LongTermKey]
    Key=DE782F2738D5652C84E06FE6382CF7AD
    Authenticated=0
    EncSize=16
    EDiv=54965
    Rand=8720642171819249024
    
    [DeviceID]
    Source=2
    Vendor=1133
    Product=45089
    Version=7
    

    这里我们要修改的是如下几项:

    • IdentityResolvingKey 中的 Key ,对应 Windows 中的 IRK,只是全大写
    • LongTermKey 中的 Key, 对应 Windows 中的 LTK,只是全大写
    • LongTermKey 中的 EDiv ,对应 Windows 中的 EDIV,只是需要把 Windows 中的十六进制转成十进制
    • LongTermKey 中的 EncSize ,对应 Windows 中的 KeyLength,只是需要把 Windows 中的十六进制转成十进制
    • LongTermKey 中的 Rand,对应 Windows 中的 ERand,但是比较麻烦的是首先要把 ERand 反过来(两位两位的来),再转成十进制。比如 ERand 是 80cd93f0d9f00579 ,反过来就是 7905f0d9f093cd80 ,转成十进制,就得到了 8720642171819249024 。其实在上面的截图里都能看到对应的十进制的值。
    1. 重启系统,就能完成双系统共享蓝牙鼠标键盘了。

    相关文章

      网友评论

          本文标题:在 Windows 和 Archlinux 双系统中共享蓝牙键盘

          本文链接:https://www.haomeiwen.com/subject/plsthltx.html