WSL2 поддерживает lsusb?

Вопрос или проблема

Я пытаюсь выполнить команду lsusb в wsl2 с Ubuntu 20.04, но ничего не выводится

  • lsusb -V выводит – lsusb (usbutils) 012
  • lsusb -t выводит – /sys/bus/usb/devices: Не такой файл или каталог

Теперь вы можете использовать usbipd, чтобы получить доступ к usb-устройству из WSL, смотрите официальную документацию.

У меня все еще есть проблемы, но мы движемся в правильном направлении.

WSL2 – это по сути “облегченная” виртуальная машина Ubuntu на Hyper-V, так что никаких низкоуровневых действий там не поддерживается.

В настоящее время это не поддерживается, хотя проблема отслеживается в репозитории WSL на GitHub.

@estani предоставил обновленный ответ сегодня, который правильный, но “полный” (надеюсь) ответ – это сочетание всех трех ответов, плюс дополнительная информация. Тем не менее, у нас еще нет полного решения для всех сценариев использования.

В настоящее время WSL2 по-прежнему не имеет прямой поддержки USB-аппаратного обеспечения, подключенного к хост-компьютеру. Он также не предоставляет виртуализированной поддержки “проброса”, как это можно найти в многих других продуктах виртуализации.

Как отметил @estani, теперь существует некоторый обходной путь, поскольку Microsoft добавила поддержку USB/IP в ядро WSL2. На самом деле это было возможно и ранее, но требовало сборки собственного ядра с этой функцией.

После того как вы обновите ядро WSL2 с поддержкой USB/IP, вам также необходимо установить usbipd-win на хост-компьютере Windows. Это проект с открытым исходным кодом третьих сторон. Он не предоставляется Microsoft, но они явно поддерживают его, включая его в качестве рекомендации в официальной документации Microsoft.

usbipd-win предоставляет тесную интеграцию с WSL, так что выполнение одной команды на хосте Windows (в учетной записи администратора) свяжет USB на обоих концах – как на Windows, так и на WSL. Однако его также можно использовать в традиционном подходе “клиент/сервер” в два этапа.

Одно большое предупреждение заключается в том, что в ядре WSL2 все еще может не быть поддержки для фактического устройства, которое вы подключаете. Например, USB-камеры потребуют дополнительных драйверов (обычно USB Video Class или UVC). Даже тогда, как упомянул @estani, существуют неразрешенные проблемы. Смотрите следующие вопросы:

Большая часть моего исследования по этому вопросу находится в первом вопросе на Stack Overflow, но если мы решим это один раз, это надеюсь исправит проблемы с OpenCV, Cheese, ffmpeg и т.д.

Когда я пытаюсь запустить lsusb -t и lsusb -v в WSL2 на экземпляре Ubuntu 20.04 LTS, я получаю следующий вывод:

user@PC:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 480M
    |__ Port 1: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 1: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
user@PC:~$ lsusb -v

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0
  bDeviceProtocol         3
  bMaxPacketSize0         9
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            5.15
  iManufacturer           3
  iProduct                2
  iSerial                 1
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2

< вывод обрезан >
    

Я использую пользовательское ядро Linux, которое я собрал с помощью скрипта install.sh по адресу https://github.com/randomwons/WSL2-USB-Camera.git. Это пользовательское ядро 5.15.167.4-microsoft-standard-WSL2.

Ответ или решение

Поддерживает ли WSL2 команду lsusb?

WSL2 (Windows Subsystem for Linux 2) — это более совершенная версия WSL, предоставляющая более полную виртуализацию Linux в среде Windows. Однако, несмотря на свои преимущества, WSL2 сталкивается с ограничениями, связанными с доступом к USB-устройствам, что напрямую влияет на выполнение команды lsusb.

Описание работы lsusb в WSL2

Команда lsusb используется для отображения информации о USB-устройствах, подключенных к системе. На системах Linux она зависит от доступа к системным файлам, связанным с USB-устройствами, находящимися в /sys/bus/usb/devices. В вашем случае выполнение команды lsusb -t возвращает ошибку: No such file or directory. Это указывает на отсутствие доступа к файловой системе USB в WSL2.

Что можно сделать для решения проблемы

На данный момент WSL2 не предоставляет встроенную поддержку для USB-устройств. Однако недавно появилась возможность использовать пакет usbip, который позволяет пользователям использовать USB-устройства через WSL. Это было встроено в ядро WSL2, что позволяет с некоторыми ограничениями подключать USB-устройства.

Шаги для подключения USB-устройств через usbip:
  1. Обновление ядра WSL2: Убедитесь, что вы используете последнюю версию ядра WSL2 с поддержкой USB/IP. Обновление ядра можно выполнить через официальные средства Windows.

  2. Установка usbipd-win: Необходимо установить usbipd-win на хост-систему Windows. Это сторонний проект с открытым исходным кодом, который обеспечивает интеграцию между Windows и WSL.

  3. Подключение устройств: После установки usbipd-win, вы можете использовать его команды для подключения USB-устройств к WSL. Один из них позволяет привязывать USB-устройства к обеим средам (Windows и WSL), что обеспечит доступ к ним в вашем окружении Ubuntu 20.04.

Ограничения

Стоит отметить, что некоторым устройствам может требоваться дополнительная поддержка драйверов, таких как USB Video Class (UVC) для веб-камер. Это может ограничить функциональность, и могут возникнуть проблемы, такие как невозможность получения доступа к оборудованию, подключенному к WSL2. На данный момент существуют открытые вопросы и проблемы, связанные с использованием USB-устройств, и разработчикам придется решать их постадийно.

Вывод

Таким образом, WSL2 не поддерживает lsusb в полном объеме, что препятствует возможностям работы с USB-устройствами напрямую в этой среде. Однако за счет использования дополнительных инструментов, таких как usbipd-win, пользователи могут добиться некоторого уровня функциональности, хотя и с ограничениями. Следите за обновлениями и новыми релизами WSL, так как Microsoft активно развивает эту платформу, и возможно, в будущем мы увидим более полную поддержку USB-устройств и lsusb.

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

Капча загружается...