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


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

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

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

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

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

Примечание.

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

Внимание

WSL теперь поддерживает Windows 10 и Windows 11 через Microsoft Store, что означает, что пользователи Windows 10 теперь имеют доступ к последним версиям ядра, не требуя компиляции из источника. Сведения о том, как обновить версию WSL, поддерживаемую магазином Магазина, теперь общедоступна в Windows 10 и 11 . Если вы не можете обновить версию 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, чтобы разрешить пользователям, не являющихся корневыми, получать доступ к устройству.

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

    usbipd detach --busid <busid>
    

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

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