Подсистема Windows для Linux и Hyper-V: поддержка сквозной передачи USB

Подсистема 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 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.