现在,如何防止这种情况发生?
我正在用以下指南回答我自己的问题,该指南已经过测试Ubuntu 14.4和Linux Mint 17.2、17.3以及现在的Linux Mint 18.x.
#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
评论
我已经做了很多次,而且步骤非常繁琐。我创建了这个脚本来帮助加快速度:github.com/LondonAppDev/dual-boot-bluetooth-pair对于Arch Linux用户,它位于wiki wiki.archlinux.org/index.php/Bluetooth#Dual_boot_pairing
整齐。看起来是谁在下面的答案中添加了借来内容的人。很高兴我可以帮助别人。