連線 USB 裝置

本指南將逐步解說使用 USB/IP 開放原始碼專案 usbipd-win,將 USB 裝置連線至執行於 WSL 2 上 Linux 發行版本所需的步驟。

在您的 Windows 電腦上設定 USB/IP 專案,可啟用常見的開發人員 USB 案例,例如快閃儲存 Arduino 或存取智慧卡讀卡機。

必要條件

  • 執行 Windows 11 (組建 22000 或更新版本)。 (可支援 Windows 10,請參閱下方附註)。
  • 需要具有 x64 處理器的電腦。 (x86 和 Arm64 目前不支援 usbipd-win)。
  • WSL 已安裝 並使用最新版本進行設定。
  • 已安裝 Linux 發行版本並設定為 WSL 2

注意

若要檢查您的 Windows 版本及組建號碼,請選取 [Windows 標誌鍵 + R]、輸入 winver,然後選取 [確定]。 您可以選取 [開始]>[設定]>[Windows Update]>[檢查更新],以更新至最新的 Windows 版本。 若要檢查 Linux 核心版本,請開啟您的 Linux 發行版本,然後輸入命令:uname -a。 若要手動更新至最新的核心,請開啟 PowerShell 並輸入命令:'wsl --update'。

重要

WSL 現在透過 Microsoft Store 同時支援 Windows 10 和 Windows 11,這表示 Windows 10 用戶現在可以存取最新的核心版本,而不需要從來源編譯。 如需如何更新至市集支援的 WSL 版本的資訊,請參閱 Windows 10 和 11 上的 WSL 現已正式推出。 如果您無法更新為市集支援的 WSL 版本並自動接收核心更新,請參閱 USBIPD-WIN 專案存放庫 ,以取得將 USB 裝置連線到 WSL 2 上執行的 Linux 散發套件的指示,方法是建置您自己的已啟用 USBIP 的 WSL 2 核心。

安裝 USBIPD-WIN 專案

不支援在 WSL 中原生使用連線 USB 裝置,因此您必須安裝開放原始碼 usbipd-win 專案。

  1. 移至 usbipd-win 專案的最新版本頁面
  2. 選取將下載安裝程式的 .msi 檔案。 (您可能會收到警告,要求您確認您信任此下載)。
  3. 執行下載的 usbipd-win_x.msi 安裝程式檔案。

注意

或者,您也可以使用 Windows 封裝管理員 (winget) 來安裝 usbipd-win 專案。 如果您已安裝 winget,只要使用命令 winget install --interactive --exact dorssel.usbipd-win 即可安裝 usbipd-win。 如果您不考慮互動式,則如果需要安裝驅動程式,winget 可能會立即重新啟動電腦。

這將會安裝:

  • 名為 usbipd 的服務 (顯示名稱:USBIP 裝置主機)。 您可以使用 Windows 的服務應用程式來檢查此服務的狀態。
  • 命令列工具 usbipd。 此工具的位置將會新增至 PATH 環境變數。
  • 稱為 usbipd 的防火牆規則,可允許所有本機子網連線至服務。 您可以修改此防火牆規則來微調存取控制。

附加 USB 裝置

附加 USB 裝置之前,請確定 WSL 命令列已開啟。 這會讓 WSL 2 輕量型 VM 保持作用中。

注意

此檔案假設您已安裝 usbipd-win 4.0.0 或更新版本

  1. 以系統管理員模式開啟 PowerShell 並輸入下列命令,列出所有連線到 Windows 的 USB 裝置。 列出裝置之後,請選取並複製您想要連結至 WSL 之裝置的總線標識碼。

    usbipd list
    
  2. 在連接 USB 裝置之前, usbipd bind 命令必須用來共用裝置,讓它能夠連接到 WSL。 這需要系統管理員許可權。 選取您想要在 WSL 中使用的裝置總線標識碼,然後執行下列命令。 執行命令之後,請再次使用 命令 usbipd list 確認裝置已共用。

    usbipd bind --busid 4-4
    
  3. 若要連接 USB 裝置,請執行下列命令。 (您不再需要使用提升許可權的系統管理員提示。)確定已開啟 WSL 命令提示字元,讓 WSL 2 輕量型 VM 保持作用中。 請注意,只要USB裝置連接到WSL,Windows 就無法使用它。 連結至 WSL 之後,任何以 WSL 2 身分執行的散發,都可以使用 USB 裝置。 確認裝置已使用 usbipd list連接。 從 WSL 提示字元中,執行 lsusb 以確認 USB 裝置已列出,而且可以使用 Linux 工具進行互動。

    usbipd attach --wsl --busid <busid>
    
  4. 開啟 Ubuntu (或您慣用的 WSL 命令列),並使用命令列出附加的 USB 裝置:

    lsusb
    

    您應該會看到您剛才附加的裝置,且能夠使用一般 Linux 工具與其互動。 視您的應用程式而定,您可能需要設定 udev 規則,以允許非根使用者存取裝置。

  5. 在 WSL 中使用裝置之後,您可以實際中斷 USB 裝置的連線,或從 PowerShell 執行此命令:

    usbipd detach --busid <busid>
    

若要深入了解其運作方式,請參閱 Windows 命令列部落格GitHub 上的 usbipd-win 存放庫

如需影片示範,請參閱 WSL 2:連線 USB 裝置 (分頁與空間展示)