在现代多操作系统环境中,经常需要在不同的操作系统之间无缝切换使用外设,例如蓝牙键盘。本文将分享如何在Windows 11和Ubuntu 22操作系统之间配置蓝牙键盘,以实现无缝切换使用。
首先,确保蓝牙键盘已经与Ubuntu 22成功配对,以创建必要的配置文件。然后,在Windows系统中重新配对键盘,以生成所需的注册表键值。最后,回到Ubuntu系统,更新蓝牙配置文件以反映Windows配对尝试的最新值。
大多数蓝牙设备在与新主机配对时会生成新的配对密钥,从而使得之前的配对连接失效。如果设备可以在不使现有连接失效的情况下与新主机配对,那么可以采用更简单的解决方案:在Ubuntu下正常配对设备,购买一个单独的蓝牙适配器,并配置Windows使用这个适配器而不是内置的蓝牙设备。
请注意,Ubuntu 22的默认安装可能在某些硬件上存在蓝牙键盘问题。如果是这样,请按照以下命令更新到最新的蓝牙内核:
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.66.tar.xz
tar xvf bluez-5.66.tar.xz
cd bluez-5.66
sudo apt-get update
sudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev python3-docutils
./configure --enable-library
make
sudo make install
reboot
为了将蓝牙配对密钥从Windows迁移到Ubuntu,遵循了这个GitHub上的说明,并根据安装情况进行了调整。由于Microsoft的安全策略,无法使用regedit查看包含蓝牙配对密钥的注册表分支。但是,可以使用Ubuntu的chntpw包来查看这些密钥。首先安装chntpw:
sudo apt-get install chntpw
然后,打开Windows注册表文件:
cd /[MountedDrive]/Windows/System32/config
chntpw -e SYSTEM
cd \ControlSet001\Services\BTHPORT\Parameters\Keys
ls
使用ls命令列出唯一ID并找到蓝牙控制器的MAC地址。接下来,确定键盘的MAC地址。如果遇到设备每次配对尝试都会生成新的MAC地址,需要仔细选择正确的地址。
一旦选择了正确的地址,切换到选定的注册表分支,并输入hex LTK来查看与配对相关的Long Term Key (LTK)的值。
cd [Controller MAC Address]
cd [Keyboard MAC Address]
hex LTK
现在已经确定了LTK值,将其迁移到Ubuntu,通过编辑蓝牙配置文件:
sudo nano /var/lib/bluetooth/[Controller Unique ID]/[Device Mac Address]/info
然后,将看到文件内容,需要将[LongTermKey]部分的Key值替换为从Windows注册表中获取的配对密钥。
保存配置文件并重启蓝牙服务:
sudo service bluetooth restart