多系統(tǒng)共享藍牙設(shè)備

1. 簡介

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

  • 如果在當前系統(tǒng)配對后,然后跑到另一個系統(tǒng)下配對,再回到當前系統(tǒng)下會發(fā)現(xiàn)藍牙無法自動連接,只能刪除配對并再次配對。然而這樣導(dǎo)致的結(jié)果就是在另一個系統(tǒng)下同樣無法自動連接。
  • 如此往復(fù),永遠無法實現(xiàn)能夠在兩個操作系統(tǒng)共享藍牙設(shè)備。

這種情況下你可能認為是系統(tǒng)的藍牙驅(qū)動有問題,然而并非如此。

2. 原理

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

  • 系統(tǒng)會保留藍牙設(shè)備的 MAC 地址和配對 Key。
  • 藍牙設(shè)備也會保留系統(tǒng)的藍牙適配器的 MAC 地址和配對 Key。

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

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

3. 解決

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

3.1 Windows 10

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

  • 定位 Windows 上配對的 Key 值:

  1. 首先需要安裝 psexec 工具,其一般在 Windows 上沒有安裝,點此跳轉(zhuǎn)下載
  2. 然后以管理員權(quán)限運行 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] 為藍牙設(shè)備的 MAC 地址)
    【注】如果在 [bth ada MAC] 下沒有找到 [bth dev MAC](比如藍牙耳機),則直接在 [bth ada MAC] 查找對應(yīng)的 Key 值。
  2. 最后找到 LTK 項,其對應(yīng)的數(shù)據(jù)值即為配對的 Key 值,只需要修改覆蓋掉該項即可。

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

  • 查找 Linux 上藍牙適配器的 MAC 地址:
bdaddr
  • 查找 Linux 上藍牙設(shè)備的 Mac 地址:利用 bluetoothctl 工具查找,具體參考 Deepin15.11下藍牙配對和連接。

  • 定位 Linux 上配對的 Key 值:

su
cd /var/lib/bluetooth/[bth ada MAC]/[bth dev MAC]
vim info

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

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

其中的 Key 對應(yīng)的即為配對的 Key 值,只需要修改覆蓋掉該項即可。

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

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

4. 參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android平臺支持藍牙網(wǎng)絡(luò)協(xié)議棧,實現(xiàn)藍牙設(shè)備之間數(shù)據(jù)的無線傳輸。本文檔描述了怎樣利用android平臺提供的...
    Camming閱讀 3,485評論 0 3
  • 最近項目使用藍牙,之前并沒有接觸,還是發(fā)現(xiàn)了很多坑,查閱了很多資料,說的迷迷糊糊,今天特查看官方文檔。 說下遇到的...
    King9527閱讀 1,924評論 0 1
  • Guide to BluetoothSecurity原文 本出版物可免費從以下網(wǎng)址獲得:https://doi.o...
    公子小水閱讀 8,780評論 0 6
  • 公司的項目最近需要用到藍牙開發(fā)的相關(guān)內(nèi)容,因此特地查閱了Google官方文檔的內(nèi)容并進行二次整理,希望能對需要學習...
    Chuckiefan閱讀 32,714評論 44 123
  • 姓名:于川皓 學號:16140210089 轉(zhuǎn)載自:http://blog.csdn.net/xubin34171...
    道無涯_cc76閱讀 8,577評論 0 11

友情鏈接更多精彩內(nèi)容