首页 > 代码库 > 解决Windows 与Mac 双系统下的蓝牙设备共用的问题
解决Windows 与Mac 双系统下的蓝牙设备共用的问题
不知道有多少人和我一样用的蓝牙鼠标或者键盘,有的话应该都会遇到同一个问题:即在一个系统下配好对后在另一个系统必须重新配对才能使用,很是麻烦.还要将蓝牙设备进入发现模式,OS下搜索,连接....终于昨天在一个老外网上看到了解决方法,写出来分享一下.
原贴地址:http://www.insanelymac.com/forum/index.php?showtopic=268837
原作者已经写的很详细了,我这里就只做翻译~
原理:这个问题的实质原因是,由于蓝牙是一对一传输,当OS连接蓝牙设备的时候,会随机生成一个link ID(可以理解为连接识别码),Win 和Mac 用的是不同的link ID。而每次配对都会改变其link ID,所以才导致不同OS的蓝牙不能公用,即使是一个电脑的蓝牙芯片也不可以。P.S: 不过Ubuntu 就没有这个问题,不管win/mac 的蓝牙都能用,赞一个!
问题本质清楚了,解决方法就很简单了。首先需要在两个系统下都要对蓝牙设备配对,用来生成同一设备的不同link ID,然后把两个系统的ID改成一样的就好了~ 原贴是先在Windows 下配对,然后去Mac 配对。这里的顺序一定不能变,因为我们最后要在Windows 下改link ID。(当然你如果知道怎么在Mac 改可以无视这句)
连蓝牙我就不多说了,Windows 下配完对,重启进Mac 系统,再配对。所以现在你可以在Mac 下用你的蓝牙设备。
Mac 下查看link ID:
打开终端,输入以下口令
- sudo defaults read /private/var/root/Library/Preferences/blued.plist
然后屏幕上会出现几行代码,我们要找的link ID 是32位的16进制数字(比如:98542ff9 88e19449 475250e1 3943255b)
Little Ending to Big Ending:
这一步极其重要。因为Mac是以Little Ending 储存数据,而Windows 是以Big Ending 储存的。所以我们要进行数据格式的转换。其实规则很简单,原则就是从右往左读,一次两个16进制数。比如Mac 下显示ID 为
- 98542ff9 88e19449 475250e1 3943255b
则转换成 Big Ending 就是
- 5b 25 43 39 e1 50 52 47 49 94 e1 88 f9 2f 54 98
这里空格可以忽略,只是为了大家看着方便。现在Link ID 已经到手,重启进Windows~
Windows 下修改Link ID:
我们最开始已经连过蓝牙设备到Windows 了,所以现在设备那里会显示你的鼠标或键盘。但是因为我们之后又连过Mac,所以现在应该是不能用的(不然我也没必要写这篇文章)。下一步我们要修改Link ID,而它就在注册表里。但是这个Link ID是被保护的,如果直接打开注册表是不能编辑的,甚至看都看不到。所以这里需要另外一个工具 PSTools
<ignore_js_op> PSTools.zip
随便下到哪里都行,解压缩。然后以管理员身份运行命令行,cd 到解压缩之后的 PSTools 文件夹,输入以下口令:
- psexec -s -i regedit
然后在打开的注册表里找到
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTHPORT\Parameters\Keys\(蓝牙适配器地址,不是你蓝牙鼠标/键盘的地址)
<ignore_js_op>
在右边的注册表项点右键-〉修改二进制值
<ignore_js_op>
把原来的数值全部删除先,然后输入你转换过得Big Ending 格式的Link ID,点OK。你的设备就可以用了!(不需要重启)
次方法非一劳永逸,每次添加新的蓝牙设备都必须重新按此文章修改一次~ 如果有更好方法欢迎分享~~
解决Windows 与Mac 双系统下的蓝牙设备共用的问题