Linux-Mint

Windows 和 Linux Mint/Ubuntu 雙啟動時的藍牙配對 - 無需配對設備

  • February 14, 2022

當雙啟動 Windows 7/10 和 Linux Mint/Ubuntu 時,您可能會發現自己不得不一次又一次地重新配對您的藍牙設備。每次切換作業系統時都會發生這種情況。

現在,您如何防止這種情況發生?

我正在使用以下指南迴答我自己的問題,該指南已在 Ubuntu 14.4 和 Linux Mint 17.2、17.3 以及現在的 Linux Mint 18.x 上進行了測試

為什麼會這樣?

基本上,當您配對您的設備時,您的藍牙服務會生成一組獨特的配對密鑰。首先,您的電腦會儲存藍牙設備的 MAC 地址和配對密鑰。其次,您的藍牙設備會儲存您電腦的 MAC 地址和匹配的密鑰。這通常可以正常工作,但是您的藍牙埠的 MAC 地址在 Linux 和 Windows 上將是相同的(它是在硬體級別設置的)。因此,當您在 Windows 或 Linux 中重新配對設備並生成新密鑰時,該密鑰會覆蓋藍牙設備上先前儲存的密鑰。Windows 會覆蓋 Linux 密鑰,反之亦然。

**藍牙 LE 設備:**這些設備的配對方式可能不同。我沒有調查過自己,但這可能有助於雙啟動藍牙 LE(低功耗)設備配對

怎麼修

使用下面的說明,我們將首先將您的藍牙設備與 Ubuntu/Linux Mint 配對,然後我們將配對 Windows。然後我們將回到我們的 Linux 系統並將 Windows 生成的配對密鑰複製到我們的 Linux 系統中。

  1. 將所有設備與 Mint/Ubuntu 配對
  2. 將所有設備與 Windows 配對
  3. 通過以下兩種方式之一複制您的 Windows 配對密鑰:
  • 從 Windows使用psexec -s -i regedit.exe(更難)。您需要psexec正常 regedit 沒有足夠的權限來顯示此值。

    1. 轉到控制面板中的“設備和列印機”,然後轉到藍牙設備的屬性。然後,在藍牙部分,您可以找到唯一標識符。複製它(稍後您將需要它)。
    2. 從http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx下載 PsExec 。
    3. 解壓縮您下載的 zip 並使用提升的權限打開一個 cmd 視窗。(點擊開始菜單,搜尋cmd,然後右鍵點擊 CMD 並點擊“以管理員身份執行”。)
    4. cd 進入您解壓縮下載的文件夾。
    5. psexec -s -i regedit.exe
    6. 導航以在 處找到密鑰HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BTHPORT\Parameters\Keys。如果沒有CurrentControlSet,請嘗試ControlSet001
    7. 您應該會看到一些帶有 MAC 地址的鍵標籤 - 記下與您之前複製的唯一標識符相關聯的 MAC 地址。
  • chntpw從您的 Linux 發行版中使用(更容易)。然後在終端中啟動:

    1. sudo apt-get install chntpw
    2. 以讀寫模式安裝 Windows 系統驅動器
    3. cd /[WindowsSystemDrive]/Windows/System32/config
    4. chntpw -e SYSTEM打開一個控制台
    5. 在該控制台中執行這些命令:
    > cd CurrentControlSet\Services\BTHPORT\Parameters\Keys
    > # if there is no CurrentControlSet, then try ControlSet001
    > # on Windows 7, "services" above is lowercased.
    > ls
    # shows you your Bluetooth port's MAC address
    Node has 1 subkeys and 0 values
      key name
      <aa1122334455>
    > cd aa1122334455  # cd into the folder
    > ls  
    # lists the existing devices' MAC addresses
    Node has 0 subkeys and 1 values
      size     type            value name             [value if type DWORD]
        16  REG_BINARY        <001f20eb4c9a>
    > hex 001f20eb4c9a
    => :00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX ...ignore..chars..
    # ^ the XXs are the pairing key
    
     記下哪個藍牙設備 MAC 地址與哪個配對密鑰匹配。Mint/Ubuntu 不需要中間的空格。忽略`:00000`.
    
  1. 返回 Linux(如果不在 Linux 中)並將我們的 Windows 密鑰添加到我們的 Linux 配置條目中。請注意,當從 Windows 遷移到 Linux 時,藍牙埠的 MAC 地址的格式不同 - 在我上面的範例中,在 Windows 中引用為 aa1122334455。Linux 版本將全部大寫,並在每兩個字元後用“:”標點 - 例如 AA:11:22:33:44:55。根據您的 Linux 版本,您可以執行以下操作之一:
  • 在 Mint 18/16.04 之前,您可以這樣做:

    1. sudo edit /var/lib/bluetooth/[MAC address of Bluetooth]/linkkeys-

    $$ the MAC address of Bluetooth $$應該是該藍牙文件夾中的唯一文件夾。 2. 該文件應如下所示:

    [Bluetooth MAC]   [Pairing key]                 [digits in pin]  [0]
    AA:11:22:33:44:55 XXXXXXXXxxXXxXxXXXXXXxxXXXXXxXxX 5 0
    00:1D:D8:3A:33:83 XXXXXXXXxxXXxXxXXXXXXxxXXXXXxXxX 4 0
    
     將 Linux 配對密鑰更改為 Windows 配對密鑰,減去空格。
    
  • 在 Mint 18(和 Ubuntu 16.04)中,您可能必須這樣做:

    1. 切換到 root:(su -在更現代的 Ubuntu 版本中,‘sudo -i’)
    2. cd 到您的藍牙配置位置/var/lib/bluetooth/[bth port MAC addresses]
    3. 您可以在此處找到已配對的每台設備的文件夾。文件夾名稱是藍牙設備的 MAC 地址,包含一個文件info。在這些文件中,您將看到需要用 Windows 替換的連結密鑰,如下所示:
    [LinkKey]
    Key=B99999999FFFFFFFFF999999999FFFFF
    
  1. 更新後,通過以下方式之一重新啟動您的藍牙服務,然後它就可以工作了!
  • Ubuntu,薄荷,拱:
sudo systemctl restart bluetooth 
或者,將您的機器重新引導到 Linux。
6. 重新啟動到 Windows - 它的工作原理!

引用自:https://unix.stackexchange.com/questions/255509