Поделиться через


Подключение USB-устройства к Azure IoT Edge для Linux в Windows

Область применения:Отметка IoT Edge 1.5 IoT Edge 1.5

Внимание

IoT Edge 1.5 LTS является поддерживаемым выпуском. IoT Edge 1.4 LTS заканчивается жизнью с 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.

В некоторых сценариях рабочие нагрузки должны получать данные или взаимодействовать с USB-устройствами. Так как Azure IoT Edge для Linux в Windows (EFLOW) выполняется как виртуальная машина, необходимо подключить эти устройства к виртуальной машине. В этой статье описаны действия, необходимые для подключения USB-устройства к виртуальной машине EFLOW с помощью проекта с открытым кодом USB/IP с именем usbipd-win.

Настройка проекта USB/IP на компьютере Windows позволяет использовать распространенные сценарии USB разработчика, такие как мигание Arduino, подключение usb-устройства или доступ к средству чтения смарт-карт непосредственно из виртуальной машины EFLOW.

Предупреждение

USB-адрес по IP-адресу предоставляет универсальный механизм перенаправления USB-устройств с помощью сети между ОС узла Windows и виртуальной машиной EFLOW. Некоторые устройства, чувствительные к задержке сети, могут возникнуть проблемы. Кроме того, некоторые устройства могут не работать должным образом из-за проблем совместимости драйверов. Убедитесь, что устройства работают должным образом перед развертыванием в рабочей среде. Дополнительные сведения о тестируемых устройствах USB/IP см. в статье USBIP-Win — Wiki - Tested Devices.

Необходимые компоненты

  • Обновление Azure IoT Edge для Linux в Windows 1.3.1 или более поздней версии. Дополнительные сведения о заметках о выпуске EFLOW см. в разделе "Выпуски EFLOW".
  • Требуется компьютер с процессором x64/x86, usbipd-win не поддерживает ARM64.

Примечание.

Чтобы проверить версию Azure IoT Edge для Linux, перейдите к разделу "Добавить или удалить программы " и найдите Azure IoT Edge. Установленная версия указана в разделе Azure IoT Edge. Если необходимо обновить до последней версии, ознакомьтесь с обновлениями Azure IoT Edge для Linux в Windows.

Установка проекта UsbIp-Win

Поддержка подключения USB-устройств в собственном коде недоступна с помощью EFLOW. Необходимо установить проект usbipd-win с открытым исходным кодом, выполнив следующие действия:

  1. Перейдите на последнюю страницу выпуска для проекта usbipd-win .
  2. Выберите и скачайте файл usbipd-win_x.y.z.msi . (Вы можете получить предупреждение с просьбой подтвердить, что вы доверяете скачанный установщик).
  3. Запустите скачанный файл установщика usbipd-win_x.y.z.msi .

Примечание.

Кроме того, можно установить проект usbipd-win с помощью Диспетчер пакетов Windows (winget). Если вы уже установили 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

Ниже приведен пример командлета EFLOW PowerShell для подключения USB-устройства к виртуальной машине EFLOW. Если вы хотите вручную выполнить необходимые команды, см. инструкции по использованию usbip-win.

Внимание

Ниже приведены примеры, которые не предназначены для использования в рабочих развертываниях. Для использования в рабочей среде убедитесь, что вы проверяете функциональные возможности и создаете собственные функции на основе этих примеров. Примеры функций подлежат изменению и удалению.

  1. Перейдите к EFLOW-Util и скачайте пример модуля PowerShell EFLOW-USBIP.

  2. Откройте сеанс PowerShell с повышенными привилегиями, начиная с запуска от имени администратора.

  3. Импортируйте скачанный модуль EFLOW-USBIP.

    Import-Module "<path-to-module>/EflowUtil-Usbip.psm1"
    
  4. Список всех USB-устройств, подключенных к Windows.

    Get-EflowUSBDevices
    
  5. Вывод списка всех сетевых интерфейсов и получения IP-адреса ОС узла Windows

    ipconfig
    
  6. Выберите идентификатор шины устройства, которое вы хотите подключить к EFLOW.

    Add-EflowUSBDevices -busid <busid> -hostIp <host-ip>
    
  7. Проверьте, правильно ли подключено устройство к виртуальной машине EFLOW.

    Invoke-EflowVmCommand "lsusb"
    
  8. Завершив работу с устройством в EFLOW, вы можете физически отключить USB-устройство или выполнить эту команду из сеанса PowerShell с повышенными привилегиями.

    Remove-EflowUSBDevices -busid <busid>
    

Внимание

Вложение виртуальной машины EFLOW на USB-устройство не сохраняется во время перезагрузки. Чтобы подключить USB-устройство после перезагрузки, может потребоваться создать скрипт bash, который выполняется во время запуска и подключает устройство с помощью usbip команды Bash. Дополнительные сведения о подключении устройства на стороне виртуальной машины EFLOW см. в разделе Add-EflowUSBDevices.

Дополнительные сведения о том, как USB-подключение USB-устройств к WSL и репозиторию usbipd-win на GitHub см. в статье о подключении USB-устройств к WSL и репозиторию usbipd-win.

Следующие шаги

Выполните инструкции по разработке модулей IoT Edge с контейнерами Linux с помощью IoT Edge для Linux в Windows. Для разработки и отладки модуля с помощью IoT Edge для Linux в Windows.