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

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

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

Предварительные требования

  • Выполнение Windows 11 (сборка 22000 или более поздняя версия). (Windows 10 поддержка возможна, см. примечание ниже.
  • Требуется компьютер с процессором x64/x86. (Arm64 в настоящее время не поддерживается с usbipd-win).
  • Дистрибутив Linux установлен и установлен в WSL 2.
  • Запуск ядра Linux 5.10.60.1 или более поздней версии.

Примечание

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

Важно!

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

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

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

  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 для разрешения подключения всех локальных подсетей к службе. Это правило брандмауэра можно изменить, чтобы настроить управление доступом.

Установка средств USBIP и аппаратной базы данных в Linux

После завершения установки проекта USB/IP необходимо установить средства пользовательского пространства и базу данных идентификаторов оборудования USB. Эти инструкции предназначены для Ubuntu— для других дистрибутивов может потребоваться другой пакет клиента USBIP.

В Ubuntu выполните следующую команду:

sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20

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

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

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

  1. Выведите список всех USB-устройств, подключенных к Windows, открыв PowerShell в режиме администратора и введя команду:

    usbipd wsl list
    
  2. Выберите идентификатор шины устройства, которое вы хотите подключить к WSL, и выполните следующую команду. WSL запросит пароль для выполнения команды sudo. Подключенный дистрибутив Linux должен быть дистрибутивом по умолчанию. (Чтобы изменить дистрибутив по умолчанию, ознакомьтесь с основными comands for WSL .

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

    lsusb
    

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

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

    usbipd wsl detach --busid <busid>
    

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

Демонстрацию видео см. в статье WSL 2: Подключение USB-устройства (вкладки и пробелы).