В этом руководстве описаны действия, необходимые для подключения USB-устройства к дистрибутиву Linux, работающему в WSL 2 с помощью проекта с открытым исходным кодом USB/IP, usbipd-win.
Настройка проекта USB/IP на компьютере с Windows позволяет использовать распространенные сценарии USB разработчика, такие как мигание Arduino или доступ к средству чтения смарт-карт.
Необходимые компоненты
Под управлением Windows 11 (сборка 22000 или более поздняя версия). (Поддержка Windows 10 возможна, см. примечание ниже).
Требуется компьютер с процессором x64. (x86 и Arm64 в настоящее время не поддерживаются с usbipd-win).
Чтобы проверить версию и номер сборки 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-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.
Список всех USB-устройств, подключенных к Windows, откройте PowerShell в режиме администратора и введите следующую команду. После перечисления устройств выберите и скопируйте идентификатор шины устройства, который вы хотите подключить к WSL.
usbipd list
Перед присоединением USB-устройства необходимо использовать команду usbipd bind для совместного использования устройства, что позволяет подключить его к WSL. Для этого требуются права администратора. Выберите идентификатор шины устройства, который вы хотите использовать в WSL, и выполните следующую команду. После выполнения команды убедитесь, что устройство используется повторно с помощью команды usbipd list .
usbipd bind --busid 4-4
Чтобы подключить USB-устройство, выполните следующую команду. (Вам больше не нужно использовать запрос администратора с повышенными привилегиями.) Убедитесь, что командная строка WSL открыта, чтобы обеспечить активную виртуальную машину WSL 2. Обратите внимание, что до тех пор, пока USB-устройство подключено к WSL, оно не может использоваться Windows. После подключения к WSL USB-устройство может использоваться любым дистрибутивом, работающим как WSL 2. Убедитесь, что устройство подключено с помощью usbipd list. В командной строке WSL выполните команду lsusb , чтобы убедиться, что USB-устройство отображается и может взаимодействовать с помощью средств Linux.
usbipd attach --wsl --busid <busid>
Откройте Ubuntu (или предпочтительную командную строку WSL) и перечислите подключенные USB-устройства с помощью команды:
lsusb
Вы увидите только что подключенное устройство и сможете взаимодействовать с ним с помощью обычных средств Linux. В зависимости от приложения может потребоваться настроить правила udev, чтобы разрешить пользователям, не являющихся корневыми, получать доступ к устройству.
После завершения работы с устройством в WSL можно физически отключить USB-устройство или выполнить следующую команду из PowerShell:
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о Windows Subsystem for Linux
Windows Subsystem for Linux — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
В этом модуле вы узнаете, как использовать подсистема Windows для Linux (WSL) с Visual Studio Code (VS Code). Мы рассмотрим процесс установки и основы использования WSL. Кроме того, мы устанавливаем и используем расширение WSL Visual Studio Code. Наконец, мы покажем, как отлаживать и запускать код Python в VS Code в нашей среде WSL.