В принципе, когда вы сопрягаете свое устройство, служба Bluetooth генерирует уникальный набор ключей сопряжения. Во-первых, ваш компьютер сохраняет MAC-адрес устройства Bluetooth и ключ сопряжения. Во-вторых, устройство Bluetooth сохраняет MAC-адрес вашего компьютера и ключ сопряжения. Обычно это работает нормально, но MAC-адрес вашего порта Bluetooth будет одинаковым как в Linux, так и в Windows (он задается на аппаратном уровне). Таким образом, когда вы повторно сопрягаете устройство в Windows или Linux и генерируется новый ключ, этот ключ перезаписывает ранее сохраненный ключ на устройстве Bluetooth. Windows перезаписывает ключ Linux и наоборот.
Используя инструкции ниже, мы сначала сопряжем устройства Bluetooth в Ubuntu/Linux Mint, а затем в Windows. Затем мы вернемся в нашу систему Linux и скопируем ключ(и) сопряжения, созданный(ые) Windows, в нашу систему Linux.
Скопируйте ключи сопряжения Windows одним из двух способов:
Используйте psexec -s -i regedit.exe
из Windows (более жесткий)
cmd
, затем щелкните CMD правой кнопкой мыши и выберите "Запуск от имени администратора")psexec -s -i regedit.exe
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTHPORT\Parameters\Keys
.
Если нет CurrentControlSet
, попробуйте ControlSet001
. -->используйте chntpw
из вашего дистрибутива Linux (проще). Запустите терминал:
sudo apt-get install chntpw
cd /[WindowsSystemDrive]/Windows/System32/config
chntpw -e SYSTEM
откроет консольвыполните эти команды в консоли:
> cd CurrentControlSet\Services\BTHPORT\Parameters\Keys
> # если нет CurrentControlSet, то попробуйте ControlSet001
> # в Windows 7 слово "services" выше написано со строчной буквы.
> ls
# показывает MAC-адрес вашего порта Bluetooth.
Узел имеет 1 подключ и 0 значений
имя ключа
> cd aa1122334455 # cd в папку
> ls
# список MAC-адресов существующих устройств
Узел имеет 0 подключей и 1 значение
размер тип значение имя [значение если тип DWORD]
16 REG_BINARY
> hex 001f20eb4c9a
=> :00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX ...игнорировать...символы...
# ^ XX - это ключ сопряжения.
Запишите, какой MAC-адрес устройства Bluetooth соответствует какому ключу сопряжения. Для Mint/Ubuntu пробелы между ними не нужны. Игнорируйте :00000
.
Вернитесь в Linux (если не в Linux) и добавьте наш ключ Windows в записи конфигурации Linux. Обратите внимание, что MAC-адрес порта Bluetooth форматируется по-разному при переходе от Windows к Linux - в моем примере выше он указан как aa1122334455 в Windows. Версия для Linux будет написана заглавными буквами и с пунктуацией ':' после каждых двух символов - например, AA:11:22:33:44:55. Исходя из вашей версии Linux, вы можете сделать следующее:
До Mint 18/16.04 вы могли сделать следующее:
sudo edit /var/lib/bluetooth/[MAC адрес Bluetooth]/linkkeys
- [MAC адрес Bluetooth] должен быть единственной папкой в этой папке Bluetooth. Этот файл должен выглядеть примерно так
[MAC-адрес Bluetooth] [Ключ сопряжения] [цифры в пин-коде] [0]
AA:11:22:33:44:55 XXXXXXXXXXxxxxxxXXXXXXXXXXXXXXXXXXX 5 0
00:1D:D8:3A:33:83 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 4 0
В Mint 18 (и Ubuntu 16.04) вам может потребоваться сделать следующее:
su -
/var/lib/bluetooth/[bth port MAC addresses]
Здесь вы найдете папки для каждого устройства, с которым вы сопряжены. Имена папок - это MAC-адреса устройств Bluetooth, и они содержат один файл info
. В этих файлах вы увидите ключи связи, которые нужно заменить на ваши Windows-ключи, например, так:
[LinkKey]
Key=B99999999FFFFFFFFF999999999FFFFF
sudo /etc/init.d/bluetooth restart
или перезагрузите Linux - это работает!