Windows和Linux Mint / Ubuntu双重启动时的蓝牙配对-无需配对设备


52

当双启动Windows 7/10和Linux Mint / Ubuntu时,您可能会发现自己不得不一次又一次地修复蓝牙设备。每次切换操作系统时都会发生这种情况。

现在,如何防止这种情况发生?

我正在用以下指南回答我自己的问题,该指南已经在Ubuntu 14.4和Linux Mint 17.2、17.3和现在的Linux Mint 18.x上进行了测试。


2
我已经做了很多次,而且步骤非常繁琐。我创建了这个脚本来帮助加快速度:github.com/LondonAppDev/dual-boot-bluetooth-pair
Mark Winterbottom

Answers:


96

为什么会这样?

基本上,当您与设备配对时,您的蓝牙服务会生成一组唯一的配对密钥。首先,您的计算机存储蓝牙设备的mac地址和配对密钥。其次,您的蓝牙设备存储您计算机的mac地址和匹配密钥。这通常可以正常工作,但是您的蓝牙端口的mac地址在Linux和Windows上都相同(在硬件级别上设置)。但是,当您在Windows或Linux中重新配对设备时,它将生成一个新密钥。该密钥将覆盖蓝牙设备上先前存储的密钥。Windows将覆盖Linux密钥,反之亦然。

怎么修

按照以下说明,我们首先将您的Bluetooth设备与Ubuntu / Linux Mint配对,然后将Windows配对。然后,我们将回到Linux系统,并将Windows生成的配对密钥复制到Linux系统中。

  1. 与薄荷/ ubuntu配对-所有设备
  2. 与Windows配对所有设备
  3. 以2种方式之一复制Windows配对密钥。

    • psexec -s -i regedit.exe从Windows 使用(更难)

      1. 转到“控制面板”中的“设备和打印机”,然后转到您的蓝牙设备的属性,然后在蓝牙部分中找到唯一的标识符,然后复制该标识符(以后将需要它)。
      2. http://technet.microsoft.com/zh-cn/sysinternals/bb897553.aspx下载psexec 。
      3. 解压缩下载的zip并以root身份打开cmd终端。(单击开始,搜索cmd,然后右键单击CMD并单击Run as Administrator
      4. cd到您解压缩下载文件的文件夹中。
      5. psexec -s -i regedit.exe
      6. 导航至“ LOCAL_MACHINE\CurrentControlSet\services\BTHPORT\Parameters\Keys如果没有CurrentControlSet尝试” 处找到的键Controlset001。在Windows 10上,您会在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\
      7. 您应该会看到一些带有MAC地址的密钥标签-写下与您之前复制的唯一标识符关联的MAC地址。您无法复制MAC地址,然后手工将其写出,保存在可以在Linux操作系统中访问的位置。
    • chntpw从Linux发行版(更轻松)中使用,请在终端中启动,然后:

      1. sudo apt-get install chntpw
      2. 挂载Windows系统驱动器
      3. cd /[windowsSystemDrive]/WINDOWS/System32/config -在Windows 10上,根文件夹为“ Windows”,在Win7上为“ WINDOWS”
      4. chntpw -e SYSTEM 打开一个控制台
      5. 在该控制台中运行这些命令

        > cd CurrentControlSet\Services\BTHPORT\Parameters\Keys
        > # if no CurrentControlSet then try ControlSet001
        > # on windows 7, "services" above is lowercased.
        > ls
        # shows you your bluetooth port's mac address
        Node has 1 subkeys and 0 values
          key name
          <aa1122334455>
        > cd aa1122334455  # CD into the folder
        > ls  
        # lists of existing devices' MAC addresses
        Node has 0 subkeys and 1 values
          size     type            value name             [value if type DWORD]
            16  REG_BINARY        <001f20eb4c9a>
        > hex 001f20eb4c9a
        => :00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX ...ignore..chars..
        # ^ the XXs are the pairing key
        
      6. 记下哪个蓝牙设备MAC地址与哪个配对密钥匹配。mint / ubuntu不需要它们之间的空格。忽略:00000

  4. 让我们回到Linux(如果不是在Linux中),然后将Windows键添加到我们的Linux配置条目中。只需注意,从Windows迁移到Linux时,蓝牙端口的mac地址的格式设置不同-在上面的示例中,Windows中称为aa1122334455。Linux版本大写,每2个字符后加':'-例如:AA:11:22:33:44:55。根据您的Linux版本,您可以执行以下操作之一:

    • 在Mint 18 / 16.04之前,您可以执行以下操作:

      1. sudo edit /var/lib/bluetooth/[mac address of Bluetooth]/linkkeys -[蓝牙的mac地址]应该是该蓝牙文件夹中的唯一文件夹。
      2. 该文件应如下所示

        [Bluetooth MAC]   [Pairing key]                 [digits in pin]  [0]
        AA:11:22:33:44:55 XXXXXXXXxxXXxXxXXXXXXxxXXXXXxXxX 5 0
        00:1D:D8:3A:33:83 XXXXXXXXxxXXxXxXXXXXXxxXXXXXxXxX 4 0
        
      3. 将Linux的配对密钥更改为Windows一对,减去空格。
    • 在Mint 18(和Ubuntu 16.04)中,您可能必须这样做:

      1. 切换到root su -
      2. cd到您的蓝牙配置位置 /var/lib/bluetooth/[bth port mac addresses)]
      3. 在这里,您将找到与之配对的每个设备的文件夹。文件夹名称是Bluetooth设备的mac地址,并且包含一个文件info。在这些文件中,您将看到需要用Windows替换的链接密钥。

        [LinkKey]
        Key=B99999999FFFFFFFFF999999999FFFFF
        
  5. 更新后,重新启动您的蓝牙服务sudo /etc/init.d/bluetooth restart或重新启动进入Linux-它起作用了!
  6. 重新启动进入Windows-它有效!
  7. 如果这对您有用,请支持!

1
这项工作谢谢你。伤心地说,蓝牙工作在Windows与没有什么大惊小怪的。Linux中的BT很烂。我正在使用Linux Mint 17.3,并且我的耳机已连接,然后几乎立即断开连接。每次我在Linux中尝试BT时,要使其正常工作都是一场战斗。
RyanNerd '16

2
我来到这里是刚刚安装了Ubuntu 16.04LTS(与Windows双重启动),并且已经将键盘和鼠标与之配对。与其将密钥从Windows复制到Ubuntu,没有相反地使用chntpw来完成它:安装Windows分区并完成所有chntpw的工作后,@ Mario Flores做了,在chntpw终端中执行了“值名称”。在Ubuntu上的蓝牙设备的信息文件中获取“ Key =“,并在chntpw中将其输入如下:”:XX XX XX XX XX ....“其中XX是密钥中的每2个字母/数字。然后输入s,它将被保存到注册表中。如果需要,请重复。
Sameer Puri

3
应该是:(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters这样HLKM)
TiloBunt

2
顺便说一句,如果您拥有Bluetooth LE设备,那么还有更多事情要做,unix.stackexchange.com / questions / 402488可能会为您提供帮助。
Frederick Zhang

4
在Windows 10中,您可以在“ Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ BTHPORT \ Parameters \ Keys”中找到密钥。
托马斯

0

一旦在Windows中获得了蓝牙设备的密钥,您就可以简单地转到设置,蓝牙并获取它们的密钥,这就是简单的部分。困难的部分是在linux上进行更改,我使用ubuntu,并且这样做的方式是:

安装gksu以获取管理员权限,只需输入以下命令:sudo apt-get install gksu

安装完成后,您必须按ALT + F2并键入gksu nautilus(请务必谨慎,仅更改您必须执行的操作,否则可能会损坏操作系统。)

现在,按照上述答案路径转到文件的特定位置,您将在其中找到一个名为Info的文件,将其打开并更改密钥。重新启动蓝牙或重新启动PC并完成。很抱歉,如果英语和语法不好,我懒得检查一下。


对于Windows 10,在哪里/如何找到密钥?
rickhg12hs
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.