共用方式為


如何將 USB 裝置連接到 Azure IoT Edge for Linux on Windows

適用於: IoT Edge 1.5 核取記號 IoT Edge 1.5 IoT Edge 1.4 核取記號 IoT Edge 1.4

重要

IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 為支援的版本。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge

在某些情況下,您的工作負載需要從 USB 裝置取得資料或與 USB 裝置通訊。 由於 Azure IoT Edge for Linux on Windows 以虛擬機器的形式執行,所以您必須將這些裝置連接到虛擬機器。 本文會指導您完成必要的步驟,利用名為 usbipd-win 的 USB/IP 開放原始碼專案將 USB 裝置連線到 EFLOW 虛擬機器。

在您的 Windows 電腦上安裝 USB/IP 專案可讓您執行常見的開發人員 USB 工作,例如刷新 Arduino、連接 USB 序列裝置,或直接從 EFLOW 虛擬機器存取智慧卡讀卡機。

警告

USB over IP 提供了一種通用機制,利用 Windows 主機 OS 與 EFLOW 虛擬機器之間的網路來重新導向 USB 裝置。 某些對於網路延遲較敏感的裝置可能會遇到問題。 此外,基於驅動程式相容性問題,某些裝置可能無法正常運作。 在部署並實際執行之前,請確定您的裝置可以正常運作。 如需測試過 USB/IP 的裝置的詳細資訊,請參閱 USBIP-Win - Wiki - 測試過的裝置

必要條件

  • Azure IoT Edge for Linux on Windows 1.3.1 更新或更新版本。 如需 EFLOW 版本資訊的詳細資訊,請參閱 EFLOW 版本
  • 您需要使用具備 x64/x86 處理器的電腦,因為 usbipd-win 不支援 ARM64。

注意

若要查看 Azure IoT Edge for Linux on Windows 的版本,請移至 [新增或移除程式],然後搜尋 Azure IoT Edge。 您安裝的版本會列在 Azure IoT Edge 下方。 如果您需要更新至最新版本,請參閱 Azure IoT Edge for Linux on Windows 更新

安裝 UsbIp-Win 專案

EFLOW 本身並不支援連接 USB 裝置。 您必須用下列步驟來安裝開放原始碼 usbipd-win 專案:

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

注意

或者,您也可以使用 Windows 套件管理員(winget) 來安裝 usbipd-win 專案。 如果您已安裝 winget,請使用命令:winget install --interactive --exact dorssel.usbipd-win 來安裝 usbipd-win。 如果您沒有使用 --interactive 參數,winget 可能會視需要立即重新開機以安裝驅動程式。

UsbIp-Win 會安裝:

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

此時,服務會在 Windows 上運行以分享 USB 裝置,而且必要的工具會安裝在 EFLOW 虛擬機器中以連結至共用的裝置。

警告

如果您有開啟的 PowerShell 工作階段,請務必將其關閉,並開啟新的工作階段以載入 usbipd 命令列工具。

將 USB 裝置連結至 EFLOW VM

下列步驟是一個將 USB 裝置連結至 EFLOW VM 的 EFLOW PowerShell Cmdlet 範例。 如果您想要手動執行必要的命令,請參閱如何使用 usbip-win

重要

下列函式為不適用於生產環境部署的範例。 若要在生產環境使用,請務必驗證其功能性,然後根據這些範例建立自己的函式。 這些範例函式日後可能會有所變更和被刪除。

  1. 移至 EFLOW-Util 並下載 EFLOW-USBIP 範例 PowerShell 模組。

  2. 以系統管理員身分執行開啟提高權限的 PowerShell 工作階段。

  3. 匯入下載的 EFLOW-USBIP 模組。

    Import-Module "<path-to-module>/EflowUtil-Usbip.psm1"
    
  4. 列出所有連接到 Windows 的 USB 裝置。

    Get-EflowUSBDevices
    
  5. 列出所有網路介面並取得 Windows 主機 OS 的 IP 位址

    ipconfig
    
  6. 選取您想要連結至 EFLOW 的裝置的「匯流排識別碼」

    Add-EflowUSBDevices -busid <busid> -hostIp <host-ip>
    
  7. 檢查裝置是否已正確連結至 EFLOW VM。

    Invoke-EflowVmCommand "lsusb"
    
  8. 在 EFLOW 中使用完裝置之後,您可以實際中斷 USB 裝置的連線,或用提升權限的 PowerShell 工作階段來執行此命令。

    Remove-EflowUSBDevices -busid <busid>
    

重要

EFLOW VM 和 USB 裝置的連結在重新開機後不會保留。 若要在重新開機後連結 USB 裝置,您可能需要建立在開機期間執行的 Bash 腳本,並使用 usbip Bash 命令來連結裝置。 如需如何在 EFLOW VM 端連結裝置的詳細資訊,請參閱 Add-EflowUSBDevices

若要深入了解 USB over IP,請參閱將 USB 裝置連線到 WSLGitHub 上的 usbipd-win 存放庫

下一步

請遵循如何利用 IoT Edge for Linux on Windows 開發具備 Linux 容器的 IoT Edge 模組中的步驟以利用 IoT Edge for Linux on Windows 進行模組開發和偵錯。