Подключение USB-устройств

В этом руководстве описаны действия, необходимые для подключения USB-устройства к дистрибутиву Linux, работающему на WSL 2, с помощью проекта USB/IP с открытым кодом усбипд-Win.

настройка проекта usb/IP на компьютере Windows позволит использовать стандартные сценарии USB для разработчиков, такие как мигание Arduino или доступ к модулю чтения смарт-карты.

Предварительные условия

Примечание

Чтобы проверить версию и номер сборки Windows, нажмите клавиши WINDOWS+R, введите winver и щелкните ОК. вы можете обновить последнюю версию Windows, выбрав пускПараметрыЦентр обновления Windowsпроверить наличие обновлений. Чтобы проверить версию ядра Linux, откройте дистрибутив Linux и введите команду: uname -a . Чтобы вручную обновить ядро до последней версии, откройте PowerShell и введите команду "WSL--Update".

Важно!

Windows 11 рекомендуется использовать для подключения USB-устройств к дистрибутиву Linux, работающему на WSL 2. однако Windows 10 можно использовать для подключения USB-устройств путем создания собственного ядра усбип с поддержкой WSL 2, следуя инструкциям в репозитории проектов усбипд-WIN.

Установка проекта УСБИПД-WIN

Поддержка подключения USB-устройств изначально недоступна в WSL, поэтому необходимо установить проект усбипд-Win с открытым исходным кодом.

  1. Перейдите на последнюю страницу выпуска для проекта усбипд-Win.
  2. Выберите файл .msi, который будет скачивать установщик. (Вы можете получить предупреждение о том, что вы доверяете этой загрузке).
  3. Запустите скачанный файл установщика usbipd-win_x.msi.

Примечание

кроме того, можно также установить проект усбипд-win с помощью Диспетчер пакетов Windows (винжет). Если вы уже установили винжет, просто выполните команду: winget install --interactive --exact dorssel.usbipd-win для установки усбипд-Win. Если вы вышли из--Interactive, винжет может сразу перезапустить компьютер, если это необходимо для установки драйверов.

Будет установлено:

  • Служба с именем usbipd (отображаемое имя: узел устройства усбип). Состояние этой службы можно проверить с помощью приложения "службы" Windows.
  • Программа командной строки usbipd . Расположение этого средства будет добавлено в переменную среды PATH.
  • Правило брандмауэра с именем usbipd , разрешающее всем локальным подсетям подключаться к службе. Это правило брандмауэра можно изменить для точной настройки контроля доступа.

Установка УСБИП средств и базы данных оборудования в Linux

После завершения установки проекта USB/IP необходимо установить инструменты пространства пользователя и базу данных идентификаторов оборудования USB.

  1. В Ubuntu (или в предпочитаемом дистрибутиве Linux) выполните следующую команду:

    sudo apt install linux-tools-5.4.0-77-generic hwdata
    
  2. Вам потребуется изменить /etc/sudoers файл, связанный с дистрибутивом Linux. Этот файл управляет разрешениями на доступ, и дальнейшие действия позволяют корневому каталогу командной строки получить доступ к usbip команде. Откройте sudoers файл в Nano с помощью команды:

    sudo visudo
    
  3. В sudoers файле необходимо найти secure_path раздел и добавить путь к инструментам ( /usr/lib/linux-tools/5.4.0-77-generic ) в sudoers, поэтому строка должна выглядеть следующим образом:

    Defaults secure_path="/usr/lib/linux-tools/5.4.0-77-generic:/usr/local/sbin:..."
    

на этом этапе служба выполняется на Windows для совместного использования USB-устройств, а необходимые средства устанавливаются в WSL для подключения к общим устройствам.

Подключение USB-устройства

Перед подключением USB-устройства убедитесь, что Командная строка WSL открыта. Это позволит активировать WSL 2 облегченной виртуальной машины.

  1. перечислите все USB-устройства, подключенные к Windows, открыв PowerShell в режиме администратора и введя команду:

    usbipd wsl list
    
  2. Выберите идентификатор шины, которую вы d хотите ’ подключить к WSL, и выполните эту команду. Вам ’ будет предложено ввести пароль для выполнения команды sudo в WSL.

    usbipd wsl attach --busid <busid>
    
  3. Откройте Ubuntu (или предпочтительную командную строку WSL) и перечислите подключенные USB-устройства с помощью команды:

    lsusb
    

    Вы увидите только что подключенное устройство и сможете взаимодействовать с ним с помощью обычных средств Linux. В зависимости от приложения может потребоваться настроить правила udev, чтобы разрешить доступ к устройству пользователям, не являющимся корневыми пользователями.

  4. После завершения работы с устройством в WSL можно либо физически отключить USB-устройство, либо выполнить следующую команду из PowerShell в режиме администратора :

    usbipd wsl detach --busid <busid>
    

дополнительные сведения о том, как это работает, см. в блоге Windows командной строки и в репозитории усбипд-win на GitHub.

демонстрационные видеоролики см. в разделе WSL 2: Подключение USB devices (символы табуляции и пробелы).