Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описаны действия, необходимые для подключения 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 в Microsoft Store теперь доступен для систем Windows 10 и 11, чтобы получить информацию о том, как обновить до версии, поддерживаемой Microsoft Store. Если вы не можете обновить поддерживаемую магазином версию 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
- Перейдите на страницу последнего релиза проекта usbipd-win.
- Выберите файл .msi, который загрузит установщик. (Вы можете получить предупреждение с просьбой подтвердить, что вы доверяете этому скачиванию).
- Запустите скачанный файл установщика 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
или более поздняя версия.
Список всех 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, чтобы разрешить пользователям без доступа root доступ к устройству.
После завершения работы с устройством в WSL можно физически отключить USB-устройство или выполнить следующую команду из PowerShell:
usbipd detach --busid <busid>
Дополнительные сведения о том, как это работает, см. в блоге командной строки Windows и репозитории usbipd-win на GitHub.
Для просмотра видео демонстрации см. WSL 2: Подключение USB-устройств (Tabs vs Spaces show).
Windows Subsystem for Linux