当双启动Windows 7/10和Linux Mint / Ubuntu时,您可能会发现自己不得不一次又一次地重新配对蓝牙设备。

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

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

评论

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

对于Arch Linux用户,它位于wiki wiki.archlinux.org/index.php/Bluetooth#Dual_boot_pairing

整齐。看起来是谁在下面的答案中添加了借来内容的人。很高兴我可以帮助别人。

#1 楼

为什么会发生这种情况?
基本上,当您与设备配对时,蓝牙服务会生成一组唯一的配对密钥。首先,您的计算机存储蓝牙设备的MAC地址和配对密钥。其次,您的蓝牙设备存储您计算机的MAC地址和匹配密钥。这通常可以正常工作,但是您的蓝牙端口的MAC地址在Linux和Windows上都是相同的(在硬件级别上设置)。因此,当您在Windows或Linux中重新配对设备并生成新密钥时,该密钥会覆盖蓝牙设备上先前存储的密钥。 Windows会覆盖Linux密钥,反之亦然。
蓝牙LE设备:它们的配对可能不同。我尚未进行自我调查,但这可能有助于Dual Boot Bluetooth LE(低能耗)设备配对
如何修复
使用以下说明,我们首先将您的Bluetooth设备与Ubuntu / Linux Mint配对,然后将Windows配对。然后,我们将回到Linux系统,并将Windows生成的配对密钥复制到Linux系统中。

将所有设备与Mint / Ubuntu配对
对所有设备与/ Windows
通过以下两种方式之一复制Windows配对密钥:


使用Windows的psexec -s -i regedit.exe(更严格)

转到“设备和打印机” ”,然后转到您的蓝牙设备的属性。然后,在“蓝牙”部分中,您可以找到唯一标识符。复制该副本(以后将需要)。
从http://technet.microsoft.com/zh-cn/sysinternals/bb897553.aspx下载PsExec。
解压缩下载的zip并打开一个cmd具有提升特权的窗口。 (单击“开始”菜单,搜索cmd,然后右键单击CMD并单击“以管理员身份运行”。)cd进入解压缩下载的文件夹。
运行psexec -s -i regedit.exe

导航到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTHPORT\Parameters\Keys上的密钥。
如果没有CurrentControlSet,请尝试ControlSet001
您应该会看到一些带有MAC地址的按键标签-写下与您之前复制的唯一标识符关联的MAC地址。



使用Linux发行版中的chntpw(更便捷)。从终端启动,然后:


sudo apt-get install chntpw


安装Windows系统驱动器


cd /[WindowsSystemDrive]/Windows/System32/config


chntpw -e SYSTEM打开控制台


在该控制台中运行以下命令:
> cd CurrentControlSet\Services\BTHPORT\Parameters\Keys
> # if there is 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 the 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



记下哪个蓝牙设备的MAC地址与哪个配对密钥相匹配。 Mint / Ubuntu不需要在它们之间的空格。忽略:00000。返回Linux(如果不是在Linux中),然后将Windows密钥添加到Linux配置条目中。请注意,从Windows迁移到Linux时,蓝牙端口的MAC地址格式不同-在上面的示例中Windows中被称为aa1122334455。
Linux版本将全部大写并每两个字符后加':' -例如AA:11:22:33:44:55。
基于您的Linux版本,您可以执行以下操作之一:

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


sudo edit /var/lib/bluetooth/[MAC address of Bluetooth]/linkkeys- [Bluetooth的MAC地址]应该是该Bluetooth文件夹中的唯一文件夹。


此文件应如下所示:
[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



将Linux的配对密钥更改为Windows,减去空格。



在Mint 18(和Ubuntu 16.04)中,您可能必须这样做:


切换到根目录:su -


cd到您的蓝牙配置位置/var/lib/bluetooth/[bth port MAC addresses]


这里,会找到与您配对的每个设备的文件夹。文件夹名称是Bluetooth设备的MAC地址,并且包含一个文件info。在这些文件中,您将看到需要用Windows替换的链接密钥,如下所示:
[LinkKey]
Key=B99999999FFFFFFFFF999999999FFFFF






更新后,可以通过以下方式之一重新启动蓝牙服务,然后它就可以工作!


Ubuntu,Mint,Arch:
sudo systemctl restart Bluetooth 



或者,将您的计算机重新启动到Linux。



重新启动到Windows-它起作用!


评论


我来到这里是刚刚安装了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
16 Sep 17'3:07



应该是:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ BTHPORT \ Parameters(so HLKM)

– TiloBunt
16 Sep 18'0:44



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

–张F
18年5月20日在11:39

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

–托马斯
18年8月16日在22:27

请注意,如果您是从Linux上进行操作,但目标是最新的Windows 10,则正确的路径是\ ControlSet001 \ Services \ BTHPORT \ Parameters \ Keys。

–达利伯·卡洛维奇(DaliborKarlović)
19年8月2日在8:48