Подсистема Windows для Linux (WSL) — это функция Windows, которая позволяет разработчикам тестировать и запускать двоичные файлы Linux прямо со своего рабочего стола. Прелесть WSL в том, что нет необходимости переключаться между рабочим столом Windows и виртуальной машиной (ВМ) для разработки кода Linux.
Например, вы можете открыть оболочку Linux в терминале Windows или использовать Visual Studio Code для создания, отладки и запуска приложений Linux без установки самой Linux на виртуальную машину. WSL предоставляет разработчикам удобство Windows и мощь Linux для разработки приложений.
Если вы новичок в WSL, узнайте здесь, как установить подсистему Windows для Linux и Ubuntu.
Разработчики в целом тепло встретили WSL. И для большинства он оказался более чем достаточным для их потребностей в разработке под Windows. Но разработчики, работающие над устройствами IoT, где приложения разрабатываются для встроенных дистрибутивов Linux, остались в стороне, потому что эти устройства подключаются к ПК через USB, который до сих пор не поддерживался WSL.
Ранее в этом месяце Microsoft объявила, что теперь WSL поддерживает сквозную передачу USB-устройств, хоть и не встроенными средствами. Функциональность была включена в проект с открытым исходным кодом под названием usbipd-win-project, который позволяет разработчикам использовать WSL в распространенных сценариях, требующих подключения USB, таких как перепрошивка Arduino или использование устройства чтения смарт-карт.
Первоначально проект был начат Франсом ван Дорсселером, системным архитектором из Голландии. Затем его подхватил стажер в Microsoft Нельсон Даниэль Тронкосо, исследователь и аспирант Пенсильванского государственного университета, который отвечает за проект в его нынешней форме.
Как работает поддержка сквозной передачи USB-устройств для WSL 2 и Hyper-V?
USBIPD работает, используя протокол USB/IP для отправки USB-трафика через виртуальный сетевой интерфейс между Windows и WSL 2 или Hyper-V. Microsoft заявляет, что поддержка USB/IP присутствует в ядре Linux с 2009 года, но недавние обновления Linux упростили использование USB/IP в WSL.
Linux включает клиент USB/IP, но в Windows изначально нет сервера USB/IP. USBIPD заполняет этот пробел. Microsoft внесла в проект инструмент командной строки USBIPD для обеспечения совместного использования USB-устройств в Windows и для подключения устройств в WSL.
Как использовать USB-устройства в Hyper-V и WSL 2
Согласно странице проекта на GitHub, USBIPD работает в Windows 8 и Windows Server 2012 или новее. Расширение устанавливает службу USBIPD Device Host, инструмент командной строки и правило брандмауэра Windows.
Установить расширение так же просто, как запустить команду менеджера пакетов winget, указанную ниже:
winget install --interactive --exact dorssel.usbipd-win
Возможно, вам потребуется перезагрузить компьютер.

По умолчанию USB-устройства не используются совместно с USBIPD. Чтобы предоставить общий доступ к USB-устройству, вы должны запустить инструмент usbipd в командной строке с правами администратора.
usbipd --help
usbipd list
usbipd bind --busid=<BUSID>
Совместное использование и подключение USB-устройств WSL 2
Приведенная выше команда работает для гостевых виртуальных машин Hyper-V. Но если вы хотите поделиться и подключить USB-устройство к WSL 2, это немного сложнее. Microsoft предоставляет подробные инструкции для Windows 11 на своем веб-сайте по настройке поддержки сквозной передачи USB-устройств в WSL 2.
Чтобы получить полное представление о том, как подключить USB-устройства к WSL 2, посмотрите видео от Microsoft ниже.
WSL 2: Connect USB devices — YouTube