Usb ip vhci что это
USB/IP for Windows
- This project aims to support both a USB/IP server and a client on Windows platform.
- Build is tested on Windows 10 x64 and the projects are configured for this target by default.
- x86/x64 platforms should be supported. However, we don't have an x86 setup for testing at the moment.
- For Windows 7 users, change usbip_stub and usbip_vhci projects' Target OS version to Windows 7.
- Right-click on the project > Properties > Driver Settings > Target OS version > Windows 7
- Visual Studio 2019 Community(v142)
- Build with VS 2017(v141) is also possible if platform toolset in setting is configured to v141
- VS 2019(v142): requires >= 10.0.17xxx
- VS 2017(v141): requires >= 10.0.18xxx
- WDK 10.0.17134(1803), 10.0.17763(1809), 10.0.18346 are also tested
If VS 2017 is used, SDK version for userspace projects(usbip, usbip_common, usbipd, stubctl) should be adjusted.
Set certificate driver signing for usbip_stub and usbip_vhci projects.
- Right-click on the project > Properties > Driver Signing > Test Certificate
- Browse to driver/usbip_test.pfx
Build solution or desired project.
All output files are created under / folder
Windows USB/IP server
Prepare a linux machine as a USB/IP client
Install USB/IP test certificate
- Install driver/usbip_test.pfx (password: usbip)
- Certificate should be installed into "Trusted Root Certification Authority" and "Trusted Publishers" on local machine (not current user)
Enable test signing
- bcdedit.exe /set TESTSIGNING ON
- reboot the system to apply
Copy usbip.exe, usbipd.exe, usb.ids, usbip_stub.sys, usbip_stub.inx into a folder in target machine
- You can find usbip.exe, usbipd.exe, usbip_stub.sys in output folder.
- userspace/usb.ids
- driver/stub/usbip_stub.inx
Find USB device id
- You can get device id from usbip listing
- usbip.exe list -l
Bind USB device to usbip stub
- This command replaces an existing function driver with usbip stub driver
- This should be executed using administrator privilege
- usbip_stub.inx and usbip_stub.sys files should be in the same folder as usbip.exe
- usbipd.exe -d -4
- TCP port 3240 should be allowed by firewall
Attach USB/IP device on linux machine
Windows USB/IP client
Prepare a linux machine as a USB/IP server
Run usbipd on a USB/IP server(Linux)
Install USB/IP test certificate
- Install driver/usbip_test.pfx(password: usbip)
- Certificate should be installed into "Trusted Root Certification Authority" on local machine(not current user)
Enable test signing
- bcdedit.exe /set TESTSIGNING ON
- reboot the system to apply
Copy usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat into a folder in target machine
- You can find usbip.exe, usbip_vhci.sys, usbip_vhci.cer, usbip_vhci.inf in output folder.
- usbip_vhci.cat can be found from usbip_vhci subfolder of output folder
Install USB/IP vhci driver
- Start Device manager
- Choose "Add Legacy Hardware" from the "Action" menu.
- Select 'Install the hardware that I manually select from the list'.
- Click 'Next'.
- Click 'Have Disk', click 'Browse', choose the copied folder, and click OK.
- Click on the 'USB/IP VHCI, and then click Next.
- Click Finish at 'Completing the Add/Remove Hardware Wizard.'
Attach a remote USB device
- usbip-win is not yet ready for production use. We could find problems with more detailed logs.
How to get windows kernel log
- Set registry key to enable a debug filter
- usbip-win uses DbgPrintEx API for kernel logging.
- save following as .reg and run or manually insert a registry key
- restart is required
Run a debugging log viewer program before you test
If your testing machine suffer from BSOD(blue screen on death), you should get it via remote debugging.
- WinDbg on virtual machines would be good to get logs
How to get usbip forwarder log
- usbip-win transmits usbip packets via a userland forwarder.
- forwarder log is the best to look into usbip packet internals.
How to get linux kernel log
This project was supported by Basic Science Research Program through the National Research Foundation of Korea(NRF) funded by the Ministry of Education(2016R1A6A3A11930295).
USB/IP for Windows
- This project aims to support both a USB/IP server and a client on Windows platform.
- Build is tested on Windows 10 x64 and the projects are configured for this target by default.
- x86/x64 platforms should be supported. However, we don't have an x86 setup for testing at the moment.
- For Windows 7 users, change usbip_stub and usbip_vhci projects' Target OS version to Windows 7 .
- Right-click on the Project > Properties > Driver Settings > Target OS version > Windows 7
- The recent tag version which supports is v0.1.0. All versions after v0.1.0 do not support Windows 7 or 8 because usbip-win started to use kernel libraries of Windows 10.
- Visual Studio 2019 Community (v142)
- Build with VS 2017 (v141) is also possible if Platform Toolset in Setting is configured to v141.
- VS 2019 (v142): requires >= 10.0.18xxx
- VS 2017 (v141): requires >= 10.0.17xxx
- WDK 10.0.17134 (1803), 10.0.17763 (1809) and 10.0.18346 are also tested.
- Open usbip_win.sln
- If VS 2017 is used, SDK version for userspace projects ( usbip , usbip_common , usbipd , stubctl ) should be adjusted.
- Set certificate driver signing for usbip_stub and usbip_vhci projects
- Right-click on the Project > Properties > Driver Signing > Test Certificate
- Browse to driver/usbip_test.pfx (password: usbip)
Windows USB/IP server
Windows USB/IP client
- usbip-win is not yet ready for production use. We could find the problems with detailed logs.
How to get Windows kernel log for vhci(wdm)
- Set registry key to enable a debug filter
- usbip-win uses DbgPrintEx API for kernel logging.
- save following as .reg file and run or manually insert the registry key
- reboot the system to apply
- Run a debugging log viewer program before you test.
-
is a good tool to view the logs.
- WinDbg on virtual machines would be good to get logs.
How to get Windows kernel log for vhci(ude)
- A new vhci(ude) implementation uses WPP SW tracing instead of DbgPrintEx.
- DebugView.exe cannot catch a VHCI debug message
- TraceView.exe is a good utility for a new approach, which is included in WDK.
- Choose PDB file radio button in "Provider Control GUID Setup" popup dialog
- Specify usbip_vhci_ude.pdb as a PDB file
- WinDbg on virtual machines would be good to get logs
How to get usbip forwarder log
- usbip-win transmits usbip packets via a userland forwarder.
- forwarder log is the best to look into usbip packet internals.
How to get linux kernel log
This project was supported by Basic Science Research Program through the National Research Foundation of Korea(NRF) funded by the Ministry of Education(2020R1I1A1A01066121).
Устройства, которые можно подключить через утилиту:
- Запоминающие устройства USB: fdisk, mkfs, монтирование / размонтирование, файловые операции, воспроизведение DVD-фильмов и запись DVD-R.
- USB-клавиатуры и USB-мыши: можно использовать с Linux-консолью и X Windows System.
- Веб-камеры USB и динамики USB: просмотр веб-камер, запись видео и воспроизведение музыки.
- USB-принтеры, USB-сканеры, последовательные USB-преобразователи и интерфейсы USB-Ethernet.
Настройка клиента
Выполним настройку на базе операционной системы Windows.
Скачиваем драйвер и утилиту для Windows. Распаковываем архив usbip.zip.
Открываем диспетчер устройств (команда devmgmt.msc или правой кнопкой по Этот компьютер в проводнике - Управление - Диспетчер устройств).
Кликаем по Действие - Установить старое устройство:
Выбираем ручную установку устройства - показать все устройства - Установка с диска и выбираем файл USBIPEnum.inf (находится в каталоге usbip, который мы распаковали ранее).
Будет обнаружено устройство USB/IP Enumerator - кликаем Далее, чтобы его установить. Мы должны его увидеть среди системных устройств.
Теперь открываем командную строку (cmd.exe) и переходим в распакованный каталог, например:
* где C:\Users\user\Downloads\usbip — полный путь до папки.
Смотрим список расшаренных USB устройств на сервере:
usbip -l 192.168.0.15
* где 192.168.0.15 — IP-адрес сервера USB.
Мы получим ответ, на подобие этого:
C:\Users\user\Downloads\usbip>usbip -l 192.168.0.15
- 192.168.0.15
2-1.3: unknown vendor : unknown product (8564:1000)
: /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3
: (Defined at Interface level) (00/00/00)Теперь можно примонтировать устройство:
usbip.exe -a 192.168.0.15 2-1.3
* если увидим ошибку . cannot find device, переходим к решению.
Автозапуск клиента Windows
Пишем небольшой батник:
cd C:\Users\user\Downloads\usbip
usbip.exe -a 192.168.0.15 2-1.3* C:\Users\user\Downloads\usbip — путь, где хранится распакованная утилита; 192.168.0.15 — адрес сервера USB; 2-1.3 — идентификатор USB устройства на сервере.
Сохраняем скрипт с расширением bat или cmd. Запускаем планировщик заданий и добавляем новую задачу.
На вкладке Общие отмечаем Выполнять вне зависимости от регистрации пользователя и ставим галочку Выполнить с наивысшими правами:
В триггерах выбираем При запуске системы:
На вкладке Действия выбираем Запуск программы и прописываем путь до скрипта, который мы сохранили ранее:
На вкладке Параметры ставим галочку При сбое выполнения перезапускать через и снимаем галочку Останавливать задачу, выполняемую дольше:
Для проверки, можно запустить вручную задачу на исполнение или перезагрузить компьютер.
Политика в отношении обработки персональных данных Общества с ограниченной ответственностью «Ред Софт» (ООО «Ред Софт»)
Использование Пользователем Сайта означает безоговорочное согласие с настоящей Политикой и указанными в ней условиями обработки персональных данных. В случае несогласия с данной Политикой использование Сайта должно быть немедленно прекращено.
При заполнении формы на Сайте Пользователь тем самым подтверждает:
- что все указанные им данные принадлежат лично ему;
- что им внимательно и в полном объеме прочитаны условия настоящей Политики в отношении обработки его персональных данных, и они ему понятны;
- на обработку Сайтом предоставляемых в составе информации персональных данных;
- на передачу своих персональных данных партнерам Компании;
- дает согласие на получение информационной рассылки Сайта.
2. Согласие Пользователя признается бессрочным и исполненным в простой письменной форме, на обработку следующих персональных данных:
- фамилия, имя, отчество;
- год рождения;
- место проживания (город, область);
- номер телефона;
- адрес электронной почты (E-mail).
Пользователь предоставляет Компании право осуществлять следующие действия с персональными данными:
- сбор и накопление;
- хранение;
- уточнение (обновление, изменение);
- использование;
- уничтожение;
- обезличивание.
3. Пользователь имеет право отозвать свое согласие посредством составления соответствующего письменного документа, который может быть направлен Пользователем в адрес Компании по электронной почте/по почте заказным письмом с уведомлением о вручении либо вручен лично под расписку уполномоченному представителю Компании. В случае получения письменного заявления об отзыве согласия на обработку персональных данных Компания обязана прекратить их обработку.
4. Компания обязуется приложить все усилия для обеспечения конфиденциальности данных, размещенных Пользователем посредством Сайта, на весь период использования Сайта Пользователем.
5. Персональные данные Пользователя никогда, ни при каких условиях не будут переданы третьим лицам, за исключением случаев, связанных с исполнением действующего законодательства.
6. Пользователь осознает, что в результате сбоя, технических неисправностей, действий третьих лиц, в том числе (но не ограничиваясь) вирусной или хакерской атаки, данные Пользователя, размещенные на Сайте, могут стать доступны третьим лицам. Пользователь обязуется не предъявлять требований к Компании о возмещении убытков (ущерба), возникших в связи с этим.
8. Компания имеет право вносить изменения в настоящую Политику. При внесении изменений в актуальной редакции указывается дата последнего обновления. Новая редакция Политики вступает в силу с момента ее размещения, если иное не предусмотрено новой редакцией.
USB/IP for Windows
- This project aims to support both a USB/IP server and a client on Windows platform.
- Build is tested on Windows 10 x64 and the projects are configured for this target by default.
- x86/x64 platforms should be supported. However, we don't have an x86 setup for testing at the moment.
- For Windows 7 users, change usbip_stub and usbip_vhci projects' Target OS version to Windows 7.
- Right-click on the project > Properties > Driver Settings > Target OS version > Windows 7
- Visual Studio 2019 Community(v142)
- Build with VS 2017(v141) is also possible if platform toolset in setting is configured to v141
- VS 2019(v142): requires >= 10.0.18xxx
- VS 2017(v141): requires >= 10.0.17xxx
- WDK 10.0.17134(1803), 10.0.17763(1809), 10.0.18346 are also tested
If VS 2017 is used, SDK version for userspace projects(usbip, usbip_common, usbipd, stubctl) should be adjusted.
Set certificate driver signing for usbip_stub and usbip_vhci projects.
- Right-click on the project > Properties > Driver Signing > Test Certificate
- Browse to driver/usbip_test.pfx
Build solution or desired project.
All output files are created under / folder
Windows USB/IP server
Prepare a linux machine as a USB/IP client
Install USB/IP test certificate
- Install driver/usbip_test.pfx (password: usbip)
- Certificate should be installed into
- "Trusted Root Certification Authority" in "Local Computer" (not current user) and
- "Trusted Publishers" in "Local Computer" (not current user)
Enable test signing
- > bcdedit.exe /set TESTSIGNING ON
- reboot the system to apply
Copy usbip.exe , usbipd.exe , usb.ids , usbip_stub.sys , usbip_stub.inx into a folder in target machine
- You can find usbip.exe , usbipd.exe , usbip_stub.sys in output folder after build or on release page.
- userspace/usb.ids
- driver/stub/usbip_stub.inx
Find USB device id
- You can get device id from usbip listing
- > usbip.exe list -l
Bind USB device to usbip stub
- This command replaces an existing function driver with usbip stub driver
- This should be executed using administrator privilege
- usbip_stub.inx and usbip_stub.sys files should be in the same folder as usbip.exe
- > usbipd.exe -d -4
- TCP port 3240 should be allowed by firewall
Attach USB/IP device on linux machine
Windows USB/IP client
Prepare a linux machine as a USB/IP server
Run usbipd on a USB/IP server (Linux)
Install USB/IP test certificate
- Install driver/usbip_test.pfx (password: usbip)
- Certificate should be installed into
- "Trusted Root Certification Authority" in "Local Computer" (not current user) and
- "Trusted Publishers" in "Local Computer" (not current user)
Enable test signing
- > bcdedit.exe /set TESTSIGNING ON
- reboot the system to apply
Copy usbip.exe , usbip_vhci.sys , usbip_vhci.inf , usbip_vhci.cer , usbip_vhci.cat into a folder in target machine
- You can find all files in output folder after build or on release page.
Install USB/IP VHCI driver
- Command line install
- Run PowerShell as an Administrator
- call > usbip.exe install
- Start Device manager
- Choose "Add Legacy Hardware" from the "Action" menu.
- Select "Install the hardware that I manually select from the list".
- Click "Next".
- Click "Have Disk", click "Browse", choose the copied folder, and click "OK".
- Click on the "USB/IP VHCI", and then click "Next".
- Click Finish at "Completing the Add/Remove Hardware Wizard".
Attach a remote USB device
- usbip-win is not yet ready for production use. We could find problems with more detailed logs.
How to get windows kernel log
- Set registry key to enable a debug filter
- usbip-win uses DbgPrintEx API for kernel logging.
- save following as .reg and run or manually insert a registry key
- restart is required
Run a debugging log viewer program before you test
If your testing machine suffer from BSOD (blue screen on death), you should get it via remote debugging.
- WinDbg on virtual machines would be good to get logs
How to get usbip forwarder log
- usbip-win transmits usbip packets via a userland forwarder.
- forwarder log is the best to look into usbip packet internals.
How to get linux kernel log
This project was supported by Basic Science Research Program through the National Research Foundation of Korea(NRF) funded by the Ministry of Education(2016R1A6A3A11930295).
В инструкции описан процесс настройки бесплатного решения для редиректа USB устройства с сервера на любой другой компьютер сети. Это может пригодиться, например, для проброса USB токена на виртуальную машину или несетевого принтера. В рамках примера сервер будет на Linux Ubuntu, клиент — на Windows (проверено на 7, 10, Server 2008 и 2012).
3. usbip: error: failed to open /usr/share/hwdata//usb.ids
Выскакивает при попытке посмотреть список устройств командой usbip list -l.
Причина: необходимый файл usb.ids находится в другой директории.
Решение: создаем каталог /usr/share/hwdata:
Создаем симлинк на существующий файл:
ln -s /usr/share/misc/usb.ids /usr/share/hwdata/usb.ids
Заявка на приобретение технической поддержки
Автозапуск сервера
Добавляем модули в автозапуск:
usbip-core
usbip-host
vhci-hcdСоздаем юнит в systemd:
[Service]
ExecStart=/scripts/usbipd
Type=oneshot
RemainAfterExit=yesПеречитываем конфигурацию systemd и разрешаем запуск созданного нами юнита:
systemctl enable usbipd
Создаем каталог хранения скрипта и сам скрипт:
usbipd -D
usbip bind -b $bindIDusbip attach --remote=localhost --busid=$bindID
sleep 2
usbip detach --port=00Разрешаем запуск скрипта:
chmod +x /scripts/usbipd
systemctl start usbipd
systemctl status usbipd
Для окончательного тестирования можно перезагрузить сервер.
Настройка на сервере
Для начала работы необходимо установить утилиту USBIP командой:
- для РЕД ОС версии 7.2 и младше:- для РЕД ОС версии 7.3 и старше:
Следующим этапом требуется установить дополнительные модули:
Чтобы модули загружались автоматически необходимо в /etc/modules добавить следующие строки:
Затем следует запустить сервер для работы утилиты:
Перед тем как открыть доступ к какому-либо usb-устройству, нужно узнать его ID. Сделать это можно командой:
Доступ к устройству открывается с помощью команды:
где 1-1 - это ID устройства.
Для закрытия доступа к устройству необходимо ввести команду:
Заявка на расчет стоимости
Установка и запуск
В Ubuntu установка инструмента проброса USB выполняется следующей командой:
apt-get install linux-tools-`uname -r`
Подгружаем модули драйверов USB:
Запускаем usbip в качестве демона:
Смотрим список подключенных USB устройств:
- busid 2-1.4 (1c4f:0026)
SiGma Micro : Keyboard (1c4f:0026)Теперь можно расшарить флешку:
usbip bind -b 2-1.3
Должны увидеть на подобие:
usbip: info: bind device on busid 2-1.3: complete
5. (attach_device) cannot find device
При попытке монтирования устройства в Windows, выскакивает ошибка с похожим текстом:
usbip err: usbip_windows.c: 829 (attach_device) cannot find device
Причина: недоработка серверного ПО — при расшаривании USB не считывается количество дескрипторов.
Решение: примонтировать устройство на сервере с последующим отмонтированием:
usbip attach --remote=localhost --busid=2-1.3
* в моем случае устройство имеет идентификатор 2-1.3.
* смотрим номер порта, на котором висит наше примонтированное устройство.
usbip detach --port=00
Возможные проблемы
Заявка на производственную практику в РЕД СОФТ
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
Автозапуск
Данная инструкция предполагала разовый запуск как сервера, так и клиента. После перезапуска системы, работоспособность будет потеряна до повторного ввода команд. Попробуем настроить автоматический запуск сервера и клиента.
6. udev_device_new_from_subsystem_sysname failed
При попытке монтирования устройства на клиенте получаем ошибку с текстом:
libusbip: error: udev_device_new_from_subsystem_sysname failed
usbip: error: open vhci_driver
usbip: error: queryПричина: не подключен модуль vhci-hcd.
Решение: разово выполняем команду:
и добавляем в файл /etc/modules строку vhci-hcd.
Стать партнером
2. /usr/sbin/usbipd: No such file or directory
Данная ошибка также появляется при попытке выполнить usbipd -D.
Причина: Нужный бинарник для запуска находится по другому пути — /usr/bin/usbipd.
Решение: создаем симлинк:
ln -s /usr/bin/usbipd /usr/sbin/usbipd
Настройка на клиенте
Для начала работы необходимо установить утилиту USBIP командой:
- для РЕД ОС версии 7.2 и младше:- для РЕД ОС версии 7.3 и старше:
Следующим этапом требуется установить дополнительные модули:
Чтобы модули загружались автоматически необходимо в /etc/modules добавить следующие строки:
Для подключения открытого в общий доступ устройства на сервере к компьютеру-клиенту надо знать его ID и IP-адрес сервера. Для этого необходимо выполнить команду:
где 1-1 - это ID устройства, а xx.xx.xx.xx - это IP-адрес сервера.
После подключения USB-устройства оно должно отображаться после выполнения команды:
Для того чтобы отключить устройство из общего доступа, необходимо узнать его порт:
После того, как порт определен, можно отсоединить устройство:
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
РЕД СОФТ — участник
фонда «Сколково»4. usbip err . recv op_common
При попытке запустить утилиту в командной строке Windows получаем ошибки:
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip.c: 216 (query_exported_devices) recv op_common
usbip err: usbip.c: 288 (show_exported_devices) queryПричина: ошибка в бинарном файле для Windows.
Решение: открыть exe-файл в HEX редакторе, например, HxD. И в адресах смещения 00000CBC и 00000E0A заменить 06 на 11:
1. usbip_common_mod.ko and usbip.ko must be loaded
Ошибка появляется при попытке выполнить usbipd -D.
Причина: был установлен пакет usbip вместо linux-tools-.
Решение: удаляем usbip:
apt-get remove usbip
Ставим нужный пакет:
apt-get install linux-tools-`uname -r`
Читайте также:
- DebugView.exe cannot catch a VHCI debug message