Подключение USB устройств в WSL (Windows для Linux) и Hyper-V
Для получения прямого доступа к физическим USB устройствам компьютера из подсистемы Windows для Linux (WSL2) или виртуальной машины Hyper-V вы можете open-source проект usbipd-win. Это проект позволяет настроить сквозную передачу внешнего USB устройства, подключенного к хостовой Windows, в любой дистрибутив Linux, запущенный в виде WSL или в виртуальные машины. Это позволяет выполнять любые действия с USB устройствами из Linux (прошивка Android устройств/ADB/Fastboot, доступ к смарт-картам, работа с оборудованием Arduino и т.д.).
В usbipd-win используется протокол USB/IP для перенаправления USB трафика через виртуальный сетевой интерфейс между WSL и хостовой Windows. Сначала мы настроим клиент USB/IP в Linux (WSL), и затем установим и установим и запустим серверную часть usbipd-win на Windows и прокинем USB устройство в Linux.
Usbipd-win поддерживает версии, начиная с Windows 8.1 x64 и Windows Server 2012 R2, и позволяет предоставить общий доступ к локальным USB устройствам Windows другим виртуальным машинам (включая WSL2 и гостевые ОС Linux на Hyper-V).
Проект usbipd-win доступен на GitHub (https://github.com/dorssel/usbipd-win). Вы можете скачать и установить его вручную (доступен установочный MSI файл), но гораздо быстрее установить приложение с помощью встроенного менеджера пакетов winget.
winget install --interactive --exact dorssel.usbipd-win
Программа создаст в Windows отдельную службу usbipd (USBIP Device Host): "C:\Program Files\usbipd-win\usbipd.exe" server,
которая слушает на порту TCP 3240
Для программы usbipd.exe в Windows Defender Firewall создано правило ( usbipd
), разрешающее доступ на порт TCP 3240 с компьютеров в локальной сети.
Теперь настроим поддержку USBIP в среде Windows Subsystem for Linux. Проверьте, что версия ядра в вашем образе не ниже 5.10.60.1 (в нашем примере для демонстрации используется WSL 2 с образом Ubuntu 22. 04 LTS):
$ uname -a
Теперь нужно установить инструменты для работы с USB/IP и базу с идентификаторами USB устройств.
$ sudo apt install linux-tools-virtual hwdata
$ sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20
Теперь откройте командную строку с правами администратора на хостовом Windows компьютере и выведите список USB устройств:
usbipd wsl list
Как вы видите, ни одно из USB устройств не опубликовано (Not shared). Вы можете предоставить общий доступ к USB устройству по его BUSID. В моем примере я хочу прокинуть в WSL флешку (USB Mass Storage Device) с BUISID 4-2.
usbipd wsl attach --busid 4-2
Проверьте, что ваша флешка была подключена к WSL:
dmesg | tail
lsusb
Если вы хотите прокинуть ваше USB устройство на другой компьютер с Linux ОС по сети (это может быть виртуальная машина с гостевой Linux на Hyper-V, или любом другом гипервизоре), сначала получить список опубликованных USB устройств:
$ usbip list --remote=192. 168.31.20
Теперь можно подключить нужное USB по его ID:
$ sudo usbip attach -remote=192.168.31.20 --busid=4-2
В этом примере указан IP адрес хоста Windows, где запущен сервер usbipd-win.
Теперь ваши Linux утилиты должны увидеть подключенное USB устройство.
Чтобы отключить общий доступ к USB устройству в Windows:
usbipd wsl detach --busid 4-2
Обратите внимание, что подключенные таким образом USB накопители не определяются как блочные устройства в WSL. Проверьте это командой lsblk. Дело в том, что в ядре WSL отсутствует драйвера для USB накопителей (чтобы добавить их придется пересобрать ядро).
В обычных дистрибутивах Linux вы сможете смонтировать файловую систему прокинутых USB накопителей стандартным образом.
Поэтому, если вам нужно смонтировать внешнюю USB флешку, диск, SD карту в WSL, нужно использовать такие команды:
$ sudo mkdir /mnt/f
$ sudo mount -t drvfs f: /mnt/f
WSL может смонтировать таким образом диски с FAT, ExFAT, ReFs или NTFS, а также VHD образы.
Таким образом usbipd-win можно использовать для сквозной передачи физических USB устройств из Windows в WSL, в виртуальные машину или физические компьютер с Linux по сети с помощью USBOverIP
Также вам может быть полезна статья по переносу WSL на другой диск.
утилита для подключения удаленных USB-устройств
2.7.18 USBIP — утилита для подключения удаленных USB-устройств
Скачать документ
Настройка на сервере
Настройка на клиенте
Графическая утилита usbip-gui
USBIP — это утилита, направленная на предоставление в общий доступ USB-устройств через IP-сеть для совместного использования. Чтобы совместно использовать USB-устройства между компьютерами с их полной функциональностью, USBIP преобразует «сообщения ввода-вывода USB» в полезные данные TCP / IP и передает их между компьютерами. Оригинальные драйверы и приложения для USB-устройств также могут использоваться для удаленных USB-устройств без их модификации. Компьютер может использовать удаленные USB-устройства, как если бы они были напрямую подключены.
Устройства, которые можно подключить через утилиту:
- Запоминающие устройства USB: fdisk, mkfs, монтирование / размонтирование, файловые операции, воспроизведение DVD-фильмов и запись DVD-R.
- USB-клавиатуры и USB-мыши: можно использовать с Linux-консолью и X Windows System.
- Веб-камеры USB и динамики USB: просмотр веб-камер, запись видео и воспроизведение музыки.
- USB-принтеры, USB-сканеры, последовательные USB-преобразователи и интерфейсы USB-Ethernet.
На нашем Youtube-канале вы можете подробнее ознакомиться с установкой и настройкой утилиты USBIP, просмотрев видео Подключение удаленных USB устройств. USBIP, а также найти много другой полезной информации.
Настройка на сервере
Для начала работы необходимо установить утилиту USBIP командой:
- для РЕД ОС 7. 2 и младше:
yum install usbip
- для РЕД ОС 7.3 и старше:
dnf install usbip
Следующим этапом требуется установить дополнительные модули:
modprobe usbip-core modprobe usbip-host modprobe vhci-hcd lsmod | grep usbip
Чтобы модули загружались автоматически, необходимо в /etc/modules добавить следующие строки:
usbip-core usbip-host vhci-hcd
Затем следует запустить сервер для работы утилиты:
usbipd -D
Перед тем как открыть доступ к какому-либо usb-устройству, нужно узнать его ID. Сделать это можно командой:
usbip list -l
Доступ к устройству открывается с помощью команды:
usbip bind --busid=1-1
где 1-1 — это ID устройства.
Для закрытия доступа к устройству необходимо ввести команду:
usbip unbind -b 1-1
Настройка на клиенте
Для начала работы необходимо установить утилиту USBIP командой:
- для РЕД ОС 7. 2 и младше:
yum install usbip
- для РЕД ОС 7.3 и старше:
dnf install usbip
Следующим этапом требуется установить дополнительные модули:
modprobe usbip-core modprobe usbip-host lsmod | grep usbip
Чтобы модули загружались автоматически, необходимо в /etc/modules добавить следующие строки:
usbip-core usbip-host vhci-hcd
Для подключения открытого в общий доступ устройства на сервере к компьютеру-клиенту надо знать его ID и IP-адрес сервера. Для этого необходимо выполнить команду:
usbip attach --remote=xx.xx.xx.xx --busid=1-1
где 1-1 — это ID устройства, а xx.xx.xx.xx — это IP-адрес сервера.
После подключения USB-устройства оно должно отображаться после выполнения команды:
lsusb
Для того чтобы отключить устройство из общего доступа, необходимо узнать его порт:
usbip port
После того, как порт определен, можно отсоединить устройство:
usbip detach 00
Графическая утилита usbip-gui
В РЕД ОС также существует графическая утилита для предоставления в общий доступ USB-устройств через IP-сеть — usbip-gui.
Установить программу можно либо через графический менеджер пакетов, либо через терминал.
Для установки программы через графический менеджер пакетов dnfdragora перейдите в «Главное меню» — «Администрирование» — «Управление пакетами dnfdragora», выполните поиск необходимого пакета по ключевому слову «usbip-gui» и отметьте флагом пакет последней версии. После этого нажмите кнопку «Применить» и дождитесь окончания установки пакетов.
Для установки программы через терминал перейдите в сеанс пользователя root:
su -
и выполните команду:
dnf install usbip-gui -y
После установки программа будет доступна из «Главного меню» — «Администрирование» — «Управление USBIP». Обратите внимание, что для работы с программой необходимы права администратора или суперпользователя системы.
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
QGIS — геоинформационная система
Специальные возможности в РЕД ОС
4 Полезный способ узнать имя подключенного USB-устройства в Linux
Как новичок, одна из многих вещей, которую вы должны освоить в Linux, — это идентификация устройств, подключенных к вашей системе. Это может быть жесткий диск вашего компьютера, внешний жесткий диск или съемный носитель, такой как USB-накопитель или карта памяти SD.
Использование USB-накопителей для передачи файлов сегодня очень распространено, и для тех (новых пользователей Linux), которые предпочитают использовать командную строку, очень важно изучить различные способы определения имени USB-устройства, когда вам нужно его отформатировать.
Рекомендуем прочитать: 3 способа удалить все файлы в каталоге
После подключения устройства к вашей системе, например USB, особенно на рабочем столе, оно автоматически монтируется в заданный каталог, обычно в / media /username/device-label , и вы сможете получить доступ к файлам в нем из этого каталога. Однако это не относится к серверу, где вам нужно вручную монтировать устройство и указывать его точку монтирования.
Linux идентифицирует устройства, используя специальные файлы устройств, хранящиеся в /dev
каталог. Некоторые из файлов, которые вы найдете в этом каталоге, включают
или /dev/hda
, которые представляют ваш первый главный диск, каждый раздел будет представлен номером, например /dev/sda1
или /. dev/hda1
для первого раздела и так далее.
$ лс /dev/sda*Список всех имен устройств Linux
Теперь давайте узнаем имена устройств с помощью различных инструментов командной строки, как показано ниже:
Узнайте имя подключенного USB-устройства с помощью команды df
Чтобы просмотреть каждое устройство, подключенное к вашей системе, а также его точку подключения, вы можете использовать команду df (проверяет использование дискового пространства Linux), как показано на рисунке ниже:
$ df -hНайдите имя USB-устройства с помощью команды df
Используйте команду lsblk для поиска имени USB-устройства
Вы также можете использовать команду lsblk (список блочных устройств), которая выводит список всех блочных устройств, подключенных к вашей системе, например:
$ lsblkСписок блочных устройств Linux
Определение имени USB-устройства с помощью утилиты fdisk
fdisk — мощная утилита, которая распечатывает таблицу разделов на всех ваших блочных устройствах, включая USB-накопитель, вы можете запустить ее с правами суперпользователя следующим образом:
$ sudo fdisk -lСписок таблиц разделов блочных устройств
Определение имени USB-устройства с помощью команды dmesg
dmesg — важная команда, которая печатает или управляет кольцевым буфером ядра, структурой данных, в которой хранится информация об операциях ядра.
Запустите команду ниже, чтобы просмотреть сообщения о работе ядра , которые также будут печатать информацию о вашем USB-устройстве:
$ dmesgdmesg — выводит имя USB-устройства
На этом пока все. В этой статье мы рассмотрели различные подходы к тому, как узнать имя USB-устройства из командной строки. Вы также можете поделиться с нами любыми другими методами для той же цели или, возможно, поделиться своими мыслями о статье в разделе ответов ниже.
Отзывы об учебнике…
Была ли эта статья полезной? Если вы не нашли эту статью полезной или обнаружили устаревшую информацию, проблему или опечатку, оставьте ценный отзыв или предложения в комментариях, чтобы помочь улучшить эту статью…Если вы цените то, что мы делаем здесь, на TecMint, вам следует подумать:
TecMint — это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! искать или просматривать тысячи опубликованных статей, доступных всем БЕСПЛАТНО.
Если вам нравится то, что вы читаете, пожалуйста, купите нам кофе (или 2) в знак признательности.
Мы благодарны за вашу бесконечную поддержку.
Как загрузить и запустить версию USBView для Windows (средство просмотра USB-устройств)
спросил
Изменено 3 года, 8 месяцев назад
Просмотрено 48 тысяч раз
Я установил версию USBView для Windows (средство просмотра USB-устройств) как часть гораздо большего набора инструментов. Установщик установил на мой компьютер глубокое дерево из множества каталогов, но, похоже, не добавил USBView в мое меню «Пуск». Совершенно не очевидно, как запустить утилиту.
Как правильно загрузить и установить версию USBView для Windows (средство просмотра USB-устройств)? Кроме того, как я могу запустить его?
- windows
- usb
- загрузка
- аппаратное обнаружение
1
Нет необходимости устанавливать какой-либо Microsoft DDK или SDK или какой-либо другой пакет средств разработки Microsoft. Существует бесплатная производная программа, поддерживаемая Уве Зибером, под названием USBTreeView. Зайдите туда, скачайте, разархивируйте и просто запустите. Это всего ~ 300 килобайт. Он основан на том же открытом исходном коде Microsoft, но намного лучше, с большей функциональностью и меньшим количеством ошибок.
5
Загрузите и установите средства отладки для Windows. Этот набор инструментов занимает несколько сотен мегабайт, но он также включает в себя другие полезные инструменты, такие как WinDbg.