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


Подключение USB-устройств

В этом руководстве описаны действия, необходимые для подключения USB-устройства к дистрибутиву Linux, работающему в WSL 2 с помощью проекта с открытым исходным кодом USB/IP, usbipd-win.

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

Предпосылки

Замечание

Чтобы проверить версию Windows и номер сборки, выберите клавиши с логотипом Windows + R, введите winver, нажмите кнопку "ОК". Вы можете обновить до последней версии Windows, выбрав Пуск>Параметры>Центр обновления Windows>Проверить наличие обновлений. Чтобы проверить версию ядра Linux, откройте дистрибутив Linux и введите команду: uname -a Чтобы вручную обновить до последнего ядра, откройте PowerShell и введите команду: wsl --update

Это важно

WSL теперь поддерживает Windows 10 и Windows 11 через Microsoft Store, что означает, что пользователи Windows 10 теперь имеют доступ к последним версиям ядра, не требуя компиляции из источника. См. раздел WSL в Microsoft Store теперь доступен для систем Windows 10 и 11, чтобы получить информацию о том, как обновить до версии, поддерживаемой Microsoft Store. Если вы не можете обновить поддерживаемую магазином версию WSL и автоматически получать обновления ядра, см. в репозитории проектаUSBIPD-WIN инструкции по подключению USB-устройств к дистрибутиву Linux, работающему в WSL 2, путем создания собственного ядра WSL 2 с поддержкой USBIP.

Установка проекта USBIPD-WIN

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

Требования к ядру

Чтобы использовать USBIPD с подсистемой Windows для Linux (WSL), необходимо иметь ядро Linux версии 5.10.60.1 или более поздней. Если установленная версия ядра старше 5.10.60.1, ее можно обновить, сначала завершив работу всех запущенных экземпляров WSL, wsl --shutdownа затем выполните команду: wsl --update

Установка USBIPD в WSL

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

Замечание

Кроме того, можно установить проект usbipd-win с помощью диспетчера пакетов Windows (winget). Если вы уже установили winget, просто используйте команду: winget install --interactive --exact dorssel.usbipd-win чтобы установить usbipd-win. Если вы не используете режим --interactive, winget может немедленно перезагрузить компьютер, если это необходимо для установки драйверов.

Будет установлено следующее:

  • Служба называется usbipd (отображаемое имя: хост устройства USBIP). Вы можете проверить состояние этой службы с помощью приложения "Службы" из Windows.
  • Средство команднойusbipd строки. Расположение этого средства будет добавлено в переменную среды PATH.
  • Правило брандмауэра, называемое usbipd, для разрешения подключения всех локальных подсетей к службе. Это правило брандмауэра можно изменить, чтобы настроить управление доступом.

Подключение USB-устройства

Перед подключением USB-устройства убедитесь, что командная строка WSL открыта. Это приведет к активности упрощенной виртуальной машины WSL 2.

Замечание

В этом документе предполагается, что у вас установлен usbipd-win 4.0.0 или более поздняя версия.

  1. Список всех USB-устройств, подключенных к Windows, откройте PowerShell в режиме администратора и введите следующую команду. После перечисления устройств выберите и скопируйте идентификатор шины устройства, который вы хотите подключить к WSL.

    usbipd list
    
  2. Перед присоединением USB-устройства необходимо использовать команду usbipd bind для совместного использования устройства, что позволяет подключить его к WSL. Для этого требуются права администратора. Выберите идентификатор шины устройства, который вы хотите использовать в WSL, и выполните следующую команду. После выполнения команды убедитесь, что устройство используется совместно, повторно выполнив команду usbipd list.

    usbipd bind --busid 4-4
    
  3. Чтобы подключить USB-устройство, выполните следующую команду. (Вам больше не нужно использовать командную строку администратора с повышенными привилегиями.) Убедитесь, что командная строка WSL открыта, чтобы поддерживать работу легковесной виртуальной машины WSL 2. Обратите внимание, что до тех пор, пока USB-устройство подключено к WSL, оно не может использоваться Windows. После подключения к WSL USB-устройство может использоваться любым дистрибутивом, работающим как WSL 2. Убедитесь, что устройство подключено с помощью usbipd list. В командной строке WSL выполните команду lsusb , чтобы убедиться, что USB-устройство отображается и может взаимодействовать с помощью средств Linux.

    usbipd attach --wsl --busid <busid>
    
  4. Откройте Ubuntu (или предпочтительную командную строку WSL) и перечислите подключенные USB-устройства с помощью команды:

    lsusb
    

    Вы увидите только что подключенное устройство и сможете взаимодействовать с ним с помощью обычных средств Linux. В зависимости от вашего приложения может потребоваться настроить правила udev, чтобы разрешить пользователям без доступа root доступ к устройству.

  5. После завершения работы с устройством в WSL можно физически отключить USB-устройство или выполнить следующую команду из PowerShell:

    usbipd detach --busid <busid>
    

Дополнительные сведения о том, как это работает, см. в блоге командной строки Windows и репозитории usbipd-win на GitHub.

Для просмотра видео демонстрации см. WSL 2: Подключение USB-устройств (Tabs vs Spaces show).