多系統共享藍牙設備

1. 簡介

當我們在一臺電腦上安裝了多個操作系統,且電腦只有一個藍牙適配器時,如果此時使用藍牙設備(比如藍牙鼠標),且希望切換系統時能自動連接,則會發現問題:

  • 如果在當前系統配對後,然後跑到另一個系統下配對,再回到當前系統下會發現藍牙無法自動連接,只能刪除配對並再次配對。然而這樣導致的結果就是在另一個系統下同樣無法自動連接。
  • 如此往復,永遠無法實現能夠在兩個操作系統共享藍牙設備。

這種情況下你可能認爲是系統的藍牙驅動有問題,然而並非如此。

2. 原理

藍牙適配器、藍牙設備在實際通信過程中,都是靠其唯一的 MAC 地址來匹配的。當系統和藍牙設備配對時:

  • 系統會保留藍牙設備的 MAC 地址和配對 Key。
  • 藍牙設備也會保留系統的藍牙適配器的 MAC 地址和配對 Key。

當同一臺電腦上的多個系統分別和同一個藍牙設備進行配對時,藍牙設備中保留的系統藍牙適配器的信息會被覆蓋,即此次配對信息會覆蓋上一次的配對信息。因爲藍牙設備是根據 MAC 地址來標識不同的藍牙適配器的,同一 MAC 地址的藍牙適配器在藍牙設備裏只會有一個配對 Key。

【注】Mac 地址爲 48 位長度,其一般格式爲 xx:xx:xx:xx:xx:xx

3. 解決

解決思路很簡單,就是將當前系統下配對好的 Key 值覆蓋其他已經配對的系統上的 Key 值。

3.1 Windows 10

  • 查找 Windows 上藍牙適配器和藍牙設備的 Mac 地址:「開始菜單右鍵 -> 設備管理器 -> 藍牙」,分別找到系統的藍牙適配器和藍牙設備,「右鍵屬性 -> 高級」,記錄下它們各自對應的 Mac 地址。

  • 定位 Windows 上配對的 Key 值:

  1. 首先需要安裝 psexec 工具,其一般在 Windows 上沒有安裝,點此跳轉下載
  2. 然後以管理員權限運行 CMD(具體做法:組合鍵 Win+R,輸入 cmd,最後 Ctrl+Shift+Enter)。
  3. 接着在 CMD 下以運行以下命令:
psexec -s -i regedit.exe
  1. 在打開的註冊表中查找 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTHPORT\Parameters\Keys\[bth ada MAC]\[bth dev MAC](其中,[bth ada MAC] 爲藍牙適配器的 MAC 地址,[bth dev MAC] 爲藍牙設備的 MAC 地址)
    【注】如果在 [bth ada MAC] 下沒有找到 [bth dev MAC](比如藍牙耳機),則直接在 [bth ada MAC] 查找對應的 Key 值。
  2. 最後找到 LTK 項,其對應的數據值即爲配對的 Key 值,只需要修改覆蓋掉該項即可。

3.2 Linux(Ubuntu 20.04、LinuxMint 20.0、Manjaro 20.2)

  • 查找 Linux 上藍牙適配器的 MAC 地址:
bdaddr
su
cd /var/lib/bluetooth/[bth ada MAC]/[bth dev MAC]
vim info

其中,[bth ada MAC] 爲藍牙適配器的 MAC 地址,[bth dev MAC] 爲藍牙設備的 MAC 地址。在打開的 info 文件中找到:

[LongTermKey]   # 有的是 [LinkKey]
Key=C10C22EB648541239C3A3857784A6130

其中的 Key 對應的即爲配對的 Key 值,只需要修改覆蓋掉該項即可。

【注】如果是 Linux 多系統,其實最簡便的方法就是將已經配對好的系統上的 /var/lib/bluetooth/[bth ada MAC]/[bth dev MAC] 直接複製到其他 Linux 系統的 /var/lib/bluetooth/[bth ada MAC] 中,這樣其他 Linux 系統都不需要事先和藍牙設備進行配對就能使用藍牙設備。如果是 Windows 和 Linux 多系統,由於 Windows 系統增刪改註冊表比較麻煩,所以最好就是解決順序是:

  1. 先在一個 Linux 系統上配對。
  2. 接着到所以 Windows 系統上依次配對。
  3. 然後記錄下最後一個配對的 Windows 系統的 Key 值。
  4. 接着覆蓋之前配對的 Windows 系統的 Key 值,以及最初的 Linux 系統的 Key 值。
  5. 最後將最初的 Linux 系統上的配對信息文件夾 /var/lib/bluetooth/[bth ada MAC]/[bth dev MAC] 直接拷貝到其他 Linux 系統的藍牙適配器文件夾 /var/lib/bluetooth/[bth ada MAC] 下。
  6. 這樣就完成了多 Windows 和 Linux 系統共享藍牙設備。

4. 參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章