- Saved searches
- Use saved searches to filter your results more quickly
- License
- dorssel/usbipd-win
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Подключение USB устройств в WSL (Windows для Linux) и Hyper-V
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Windows software for sharing locally connected USB devices to other machines, including Hyper-V guests and WSL 2.
License
dorssel/usbipd-win
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Windows software for sharing locally connected USB devices to other machines, including Hyper-V guests and WSL 2.
This software requires Microsoft Windows 8.1 x64 / Microsoft Windows Server 2012 or newer; it does not depend on any other software.
Run the installer (.msi) from the latest release on the Windows machine where your USB device is connected.
Alternatively, use the Windows Package Manager:
- A service called usbipd (display name: USBIP Device Host).
You can check the status of this service using the Services app from Windows. - A command line tool usbipd .
The location of this tool will be added to the PATH environment variable. - A firewall rule called usbipd to allow all local subnets to connect to the service.
You can modify this firewall rule to fine tune access control.
ℹ️
If you are using a third-party firewall, you may have to reconfigure it to allow incoming connections on TCP port 3240.
By default devices are not shared with USBIP clients. To lookup and share devices, open a command prompt as an Administrator and use the usbipd tool. For example:
usbipd --help usbipd list usbipd bind --busid=BUSID>
From another (possibly virtual) machine running Linux, use usbip to claim the USB device:
usbip list --remote=HOST> sudo usbip attach --remote=HOST> --busid=BUSID>
A list of tested devices can be found on the wiki. Please file an issue if your device is not working.
You can use the usbipd wsl subcommand to share and connect a device with a single command. For example, open a command prompt:
usbipd wsl --help usbipd wsl list usbipd wsl attach --busid=BUSID>
ℹ️
Currently, WSL 2 does not support USB devices by default.
As a workaround, instructions on how to setup a USBIP client for WSL 2 can be found on the wiki.
Andrew Leech has created a convenient GUI for those who prefer that over a CLI, see his GitLab project.
Uninstall via Add/Remove Programs or via Settings/Apps.
Alternatively, use the Windows Package Manager:
There should be no left-overs; please file an issue if you do find any.
About
Windows software for sharing locally connected USB devices to other machines, including Hyper-V guests and WSL 2.
Подключение USB устройств в WSL (Windows для Linux) и Hyper-V
13.09.2022
itpro
Linux, Windows 10, Windows 11
Комментариев пока нет
Для получения прямого доступа к физическим 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). С помощью встроенных средств Hyper-V ранее можно было пробрасывать только USB накопители или другие виды USB устройства через довольно ограниченный режим Enhanced Session Mode.
Проект 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):
Теперь нужно установить инструменты для работы с 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
$ sudo apt-get install usbip hwdata usbutils
Установка USB/IP утилит в WSL образа на базе rpm (CentOS/Oracle Linux):
$ sudo rpm —import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ sudo rpm -ivh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
$ sudo yum install kmod-usbip
$ sudo yum install usbip-utils
$ sudo yum install hwdata
Теперь откройте командную строку с правами администратора на хостовом Windows компьютере и выведите список USB устройств:
Как вы видите, ни одно из USB устройств не опубликовано (Not shared). Вы можете предоставить общий доступ к USB устройству по его BUSID. В моем примере я хочу прокинуть в WSL флешку (USB Mass Storage Device) с BUISID 4-2.
usbipd wsl attach —busid 4-2
- Если вы используете WSL 1 (не поддерживается в usbip), появится ошибка: sbipd: error: The specified WSL distribution is using WSL 1, but WSL 2 is required. Learn how to upgrade at https://docs.microsoft.com/windows/wsl/basic-commands#set-wsl-version-to-1-or-2.
- Если появится ошибка: usbipd: error: WSL kernel is not USBIP capable, обновите WSL систему командой:
wsl —update
Проверьте, что ваша флешка была подключена к WSL:
Если вы хотите прокинуть ваше 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
Таким образом usbipd-win можно использовать для сквозной передачи физических USB устройств из Windows в WSL, в виртуальные машину или физические компьютер с Linux по сети с помощью USBOverIP
Предыдущая статья Следующая статья
Mailcow: готовый почтовый сервер на postfix+dovecot+SOGo на Docker контейнерах
Установка KMS сервера vlmcsd на Linux для активации Windows и Office
Установка и настройка прокси сервера Squid в Linux
Настройка аутентификации в Nginx через Active Directory (LDAP)