Необходимо подключить Bluetooth устройство к нескольким операционным системам без необходимости повторного сопряжения при переключении между ними.
Общий алгоритм действий:
- Подключить устройство в одну ОС
- Подключить устройство в другую ОС
- Узнать MAC-адреса Bluetooth устройств
- Узнать ключ последнего сопряжения
- Изменить ключи предыдущих сопряжений
В зависимости от устройств, последовательность непосредственных действий может незначительно изменяться. Рассмотрим на примере подключения двух мышей к одному компьютеру с установленными параллельно Windows и Linux.
HP Mouse Z5000
- Подключить устройство в Windows
- Подключить устройство в Linux
- Узнать MAC компьютера
ls /var/lib/bluetooth/
A4:02:B9:83:C8:3F
- Узнать MAC устройства

98:FD:B4:5C:AA:85
- Узнать ключ сопряжения
KEY_DST=/var/lib/bluetooth/A4:02:B9:83:C8:3F/98:FD:B4:5C:AA:85/info sudo cat $KEY_DST |grep Key= |cut -d= -f2
DB0CA2E4CA8647C3B15D0D9AAF72381F
- Смонтировать раздел с Windows

sudo mkdir /mnt/WIN && sudo mount /dev/nvme0n1p2 /mnt/WIN
- Установить утилиту chntpw
sudo apt-get install -y chntpw
- Изменить ключ сопряжения
cd /mnt/WIN/Windows/System32/config chntpw -e SYSTEM
hex ControlSet001\Services\BTHPORT\Parameters\Keys\a402b983c83f\98fdb45caa85 ed ControlSet001\Services\BTHPORT\Parameters\Keys\a402b983c83f\98fdb45caa85 :00000 DB 0C A2 E4 CA 86 47 C3 B1 5D 0D 9A AF 72 38 1F

- Размонтировать раздел с Windows
sudo umount /dev/nvme0n1p2 && sudo rmdir /mnt/WIN
- Готово
MS Modern Mobile Mouse
- Подключить устройство в Linux
- Узнать MAC компьютера
ls /var/lib/bluetooth/
A4:02:B9:83:C8:3F
- Узнать MAC устройства

EF:7E:3F:7B:FC:9B
- Подключить устройство в Windows
- Выполнить с правами администратора PsExec64.exe -s -i regedit
Оказывается, при каждом новом сопряжении меняется MAC мыши. Помимо использования последнего ключа сопряжения, необходимо использовать последний MAC устройства.
- Экспортировать ветку реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\a402b983c83f\ef7e3f7cfc9b

- Загрузить Linux
- Изменить имя конфигурации устройства
sudo mv \ /var/lib/bluetooth/A4:02:B9:83:C8:3F/EF:7E:3F:7B:FC:9B/ \ /var/lib/bluetooth/A4:02:B9:83:C8:3F/EF:7E:3F:7C:FC:9B
- Изменить ключ сопряжения
KEY_DST=/var/lib/bluetooth/A4:02:B9:83:C8:3F/EF:7E:3F:7C:FC:9B/info KEY_OLD=$(sudo cat $KEY_DST | grep Key=) KEY_NEW=4EA644C94D332335271D1BB1A5EEE4B9 sudo sed -i "s/$KEY_OLD/Key=$KEY_NEW/" $KEY_DST
- Перезагрузить демон управления bluetooth
sudo /etc/init.d/bluetooth restart
- Готово