前言
因為需要部分工作需要在 BootCamp 中完成,手頭上也只有一個藍牙音箱,每次在 macOS 與 BootCamp 中切換時,藍牙音箱需要重新配對才可連接。故在網際網路上搜尋了解決方法。
下面以手上的華為藍牙音箱為例,其它藍牙設備連接方法類似。如果已經連接,建議刪除配對記錄,重新連接。(以下方案理論上在 macOS、Windows、Linux 系統中通用,部分路徑可能存在差異)
感謝 @Newlearner365 的熱心協助,成功在其電腦上復現。
溫馨提示
以下操作涉及修改系統文件,食用前請注意 備份!備份!備份!因此造成的一切後果本人皆不負責。
便捷方法:藉助 Hackintool 導入藍牙連結密鑰至 Windows
Hackintool 是由 @headkaze 開發,用於 Hackintosh 上的一款小工具。此處藉助當中的功能,為 Windows 生成藍牙設備配對密鑰的註冊表文件。
本人的系統版本與使用工具的版本1 ,不同電腦、系統可能會有一定差異。
1、將藍牙音箱分別在 macOS 與 Windows 中配對
2、回到 macOS,打開 Hackintool
進入「工具」選項卡,點擊下方的「藍牙」圖標,輸入用戶密碼,隨後在桌面上可找到一個註冊表文件。
如果有不需要導入的設備,按 Option 鍵點擊屏幕左上角的 圖標,進入系統信息 → 藍牙,找到對應設備的 MAC 地址,在註冊表中刪去該行即可。
3、進入 Windows,關閉藍牙,導入註冊表
進入系統設置,關閉電腦藍牙與藍牙音箱。
通過 U 盤或其它方式將註冊表文件複製到 Windows 中,雙擊打開導入註冊表。
導入完成後,進入系統設置 - 藍牙和其他設備,打開電腦藍牙與藍牙音箱,此時藍牙音箱可自動連接至電腦。
極客方法:手動修改 Windows 下的藍牙設備密鑰
此方法相對複雜,不推薦使用。以下方法基於pcbeta - lisai9093:解決 Windows 與 macOS 雙系統下的藍牙設備共用的問題 的教程整合而成。
1、打開終端,拷貝 macOS 中的藍牙配對密鑰
在終端中運行以下命令(命令中的「xw」需要更改為當前的用戶名),輸入用戶密碼,回車執行。
# macOS High Siera 以上
sudo defaults read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist
# macOS High Siera 以下
sudo defaults read /private/var/root/Library/Preferences/blued.plist
執行後,找到 Link Keys 節點,拷貝對應設備的密鑰。
2、重新排序、轉換格式
打開文本編輯器,這裡我們需要將密鑰轉換為 Big Endian 格式。關於大端格式與小端格式的區別可參考 維基百科:字節順序 或 百度百科:Endian,此處不做過多討論(我也不會 x。
3、導入密鑰
進入系統設置 - 藍牙和其它設備,關閉電腦藍牙和藍牙音箱。
下載 PsExec Tool,使用管理員身份在 Power Shell 或命令行中運行。
.\PsExec.exe -s -i regedit
進入註冊表 - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTHPORT\Parameters\Keys\,展開當前電腦的藍牙適配器,找到對應設備,右鍵 - 修改二進位數據,將剛才重新排序的密鑰複製到這裡,保存,關閉。
註:因在方法一中,已通過註冊表修改,故此處的密鑰無需修改。
4、連接
進入系統設置 - 藍牙和其它設備,打開電腦藍牙和藍牙音箱,此時藍牙音箱可自動連接至電腦。
其它方法
除了 Hackintool,還可使用 BT-LinkKeySync 來導出連接密鑰,具體方法可以參照 GitHub 上的指引。不過很不幸,無法在我的電腦成功導出對應的 Plist 文件與註冊表。
在覆蓋順序上,沒有過多要求,使用 macOS 的 Link Key 覆蓋 Windows 的,或者是使用 Windows 的 Link Key 覆蓋 macOS 的,這兩種方式皆可使藍牙音箱在兩邊順利連接。
原理
註:以下說法可能有誤,希望各位帶佬斧正,不勝感激
由於藍牙耳機連接的是同一個藍牙適配器(同一個 MAC 地址),先前在 macOS 配對時產生的密鑰會被後面 Windows 配對的密鑰暫時覆蓋,因此將 A / B 的密鑰覆蓋至 B / A 中,便可相互連接。