
Информация об оссигнале
Что это?
Это форк исходного репозитория, предназначенный для создания двоичных файлов для обычной подписи кода.
Как продвигаются обновления?
Отправьте запрос на извлечение в этот репозиторий с изменениями, которые вы хотите создать. После успешного завершения конвейера подписание кода произойдет вручную в фоновом режиме, а изменения будут опубликованы в разделе релизов этого репозитория.
Где публикуются подписанные двоичные файлы?
Подписанные драйверы загружаются в выпуски на [vadimgrn /usbip-win2], а сами выпуски подписываются сертификатом проекта.
Вы можете найти полностью подписанные двоичные файлы, включая установщик и деинсталлятор, в разделе релизы в этом репозитории этого репозитория.
Исходный Репозиторий
Этот репозиторий является зеркалом vadimgrn /usbip-win2 и регулярно синхронизируется с вышестоящим репозиторием. Пожалуйста, обратитесь к оригинальному репозиторию для получения самой последней информации.

USB / IP-клиент для Windows
Полностью совместим с протоколом USB/IP
Работает с Linux USB / IP сервером, по крайней мере, для ядер 4.19 - 6.11
Не готов к серийному использованию, может вызвать BSOD. Создайте точку восстановления перед установкой USBip.
Драйвер не подписан, режим тестовой подписи Windows должен быть включен
Не отключайте функцию testsigning
при установке USBip, см.
Устройства, которые работают (список неполный)
Требования
Windows 10 x64 версии 1903 (сборка ОС 18362) и более поздних версий
- Windows 11 ARM64
USB / IP-сервер должен поддерживать протокол v.1.1.1
Ключевые особенности
UDE драйвер - это клиент USB / IP
Драйвер верхнего фильтра класса USB usbip2_filter используется в качестве дополнения к драйверу UDE
Используется NPI ядра Winsock
Драйвер устанавливает TCP / IP-соединение с сервером и осуществляет обмен данными
Это подразумевает низкую задержку и высокую пропускную способность, отсутствие частого переключения контекста процессора и большого количества системных вызовов
Для сетевых операций отправки и получения реализовананулевая копия буферов передачи
Для каждого виртуального устройства создается выделенный поток для получения данных с сервера
Лицензия BSD, состоящая из 2 пунктов, начиная с версии 0.9.7.0
Если вы решите использовать драйверы WHQL, убедитесь, что они основаны на этой версии или новее, поскольку лицензия GPL 3.0, использовавшаяся до этой версии, несовместима с WHQL.
Совершенно новый драйвер UDE, не унаследованный от родительского репозитория
Полнофункциональное приложение с графическим интерфейсом
Код пользовательского пространства полностью переписан (утилита libusbip и usbip)
SDK для сторонних разработчиков (публичный API libusbip)
Установщик InnoSetup используется для установки драйверов и прочего пользовательского пространства
Требуется Windows 10 версии 1903 или более поздней
C ++ 20 используется для всех проектов
Используется Visual Studio 2022
Сервер (драйвер заглушки) удален
только сборки x64 / arm64
Строить
Инструменты для сборки
Создание решения Visual Studio
Установить git
Запустите программу установки Visual Studio
Выберите вкладку "Отдельные компоненты"
Введите "git" в поле поиска
Проверьте "Git для Windows"
Установка выбранных элементов
Клонируйте проект с помощью git или загрузите архив с github и извлеките исходный код
Запустите bootstrap.bat
Открыть usbip_win2.sln
Установите подпись драйвера сертификата для проекта пакета
Щелкните правой кнопкой мыши на Project > Properties > Driver Signing > Test Certificate
Введите usbip.pfx
(пароль: usbip)
Создайте решение
Все выходные файлы создаются в папках {x64,ARM64}/{Debug,Release}.
Настройка USB / IP-сервера в Ubuntu Linux
Установите необходимые пакеты
- Linux
sudo apt install linux-tools-generic linux-cloud-tools-generic
Малиновый Пи sudo apt install usbip hwdata usbutils
Загрузите модули и запустите демон
sudo modprobe -a usbip-core usbip-host
sudo usbipd -D
Список доступных USB-устройств
- busid 3-2 (1005:b113)
Apacer Technology, Inc. : Handy Steno/AH123 / Handy Steno 2.0/HT203 (1005:b113)
- busid 3-3.2 (07ca:513b)
AVerMedia Technologies, Inc. : unknown product (07ca:513b)
Привязать нужное USB-устройство
usbip: info: bind device on busid 3-2: complete
Ваше устройство 3-2 теперь может использоваться клиентом usbip
Настройка USB / IP в Windows
Включить режим тестовой подписи Windows
bcdedit.exe /set testsigning on
Перезагрузите систему, чтобы применить
Установить USB /IP
Создайте точку восстановления, чтобы отменить возможные сбои системы
В поле поиска на панели задач введите "Создать точку восстановления" и выберите ее из списка результатов
На вкладке Защита системы в разделе Свойства системы
Убедитесь, что включена защита системного диска
Выберите Создать
Введите описание точки восстановления, а затем выберите Создать
Загрузите и запустите программу установки из выпусков
Некоторые антивирусные программы выдают ложные срабатывания при установке InnoSetup
Используется usbip.exe для подключения удаленных устройств
Запрашивать доступные USB-устройства на сервере
usbip.exe list -r <usbip server ip>
Exportable USB devices
======================
- 192.168.1.9
3-2: unknown vendor : unknown product (1005:b113)
: /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2
: (Defined at Interface level) (00/00/00)
Подключите нужное удаленное USB-устройство, используя его busid
usbip.exe attach -r <usbip server ip> -b 3-2
successfully attached to port 1
В системе должно появиться новое USB-устройство, используйте его как обычно
Отсоедините удаленное USB-устройство с помощью его USB-порта, передайте команду -all
, чтобы отсоединить все удаленные устройства
port 1 is successfully detached
Удаление USB / IP
Удалить приложение USB / IP
Отключить подпись теста
bcdedit.exe /set testsigning off
Перезагрузите систему, чтобы применить
Если программа удаления повреждена, выполните эти команды от имени администратора
Если вы копируете команды в файл .bat, используйте %%P и %%~ nxP в инструкции FOR
set APPDIR=C:\Program Files\USBip
set HWID=ROOT\USBIP_WIN2\UDE
"%APPDIR%\usbip.exe" detach --all
"%APPDIR%\devnode.exe" remove %HWID% root
rem pnputil.exe /remove-device /deviceid %HWID% /subtree
rem WARNING: use %%P and %%~nxP if you run this command in a .bat file
FOR /f %P IN ('findstr /M /L %HWID% C:\WINDOWS\INF\oem*.inf') DO pnputil.exe /delete-driver %~nxP /uninstall
"%APPDIR%\classfilter.exe" uninstall "%APPDIR%\usbip2_filter.inf" DefaultUninstall.NTamd64
rd /S /Q "%APPDIR%"
Отключите режим тестовой подписи Windows без удаления USB / IP
Может быть полезно, если вы хотите временно отключить подписание тестов
После этого USBip не будет работать до тех пор, пока тестовая подпись не будет повторно включена
драйвер usbip2_filter должен быть отключен, иначе все USB-контроллеры / устройства не будут работать
devcon.exe classfilter usb upper !usbip2_filter
bcdedit.exe /set testsigning off
devcon.exe classfilter usb upper +usbip2_filter
bcdedit.exe /set testsigning on
Если devcon.exe не установлен
Беги regedit.exe
Откройте ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36fc9e60-c465-11cf-8056-444553540000}
Удалите строку usbip2_filter
из многострочного значения UpperFilters
, чтобы отключить драйвер
Добавьте эту строку, чтобы включить драйвер
Получение журналов USB / IP в Windows
Используется программная трассировка WPP
Используйте инструменты для трассировки программного обеспечения, такие как TraceView, Tracelog, Tracefmt и Tracepdb, для настройки, запуска и остановки сеансов трассировки, а также для отображения и фильтрации сообщений трассировки
Эти инструменты включены в комплект драйверов для Windows
Выберите "Выбрать компоненты / Файлы базы данных программы" во время установки USBip
Запуск сеансов ведения журнала для драйверов (запуск команд от имени администратора)
rem change to your WDK version
set PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64
set NAME=usbip
tracelog.exe -stop %NAME%-flt
tracelog.exe -stop %NAME%-ude
del /F %NAME%-*.*
tracepdb.exe -f "C:\Program Files\USBip\*.pdb" -s -p %TEMP%\%NAME%
tracelog.exe -start %NAME%-flt -guid #90c336ed-69fb-43d6-b800-1552d72d200b -f %NAME%-flt.etl -flag 0x3 -level 5
tracelog.exe -start %NAME%-ude -guid #ed18c9c5-8322-48ae-bf78-d01d898a1562 -f %NAME%-ude.etl -flag 0xF -level 5
Воспроизведите проблему
Останавливайте сеансы ведения журнала и получайте обычные текстовые журналы (запускайте команды от имени администратора)
Если вы копируете команды в файл .bat, удвойте '%' в TRACE_FORMAT_PREFIX
rem change to your WDK version
set PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64
set NAME=usbip
set TRACE_FORMAT_PREFIX=[%9]%3!04x! %!LEVEL! %!FUNC!:
tracelog.exe -stop %NAME%-flt
tracelog.exe -stop %NAME%-ude
tracefmt.exe -nosummary -p %TEMP%\%NAME% -o %NAME%-flt.txt %NAME%-flt.etl
tracefmt.exe -nosummary -p %TEMP%\%NAME% -o %NAME%-ude.txt %NAME%-ude.etl
rem sed -i "s/TRACE_LEVEL_CRITICAL/CRT/;s/TRACE_LEVEL_ERROR/ERR/;s/TRACE_LEVEL_WARNING/WRN/;s/TRACE_LEVEL_INFORMATION/INF/;s/TRACE_LEVEL_VERBOSE/VRB/" %NAME%-*.txt
rem sed -i "s/`anonymous namespace':://" %NAME%-*.txt
rem del /F sed*
Включить дамп памяти ядра
Откройте диалоговое окно "Свойства системы"
Выберите вкладку "Дополнительно"
Нажмите на "Настройки" в разделе "Запуск и восстановление".
"Системный сбой", "Запись отладочной информации", выберите "Автоматический дамп памяти" или "Дамп памяти ядра".
Установите флажок "Перезаписать любой существующий файл".
Запустите сеанс трассировки WPP для драйверов, как описано в предыдущем разделе
Когда произошел BSOD
Перезагрузите КОМПЬЮТЕР, если автоматическая перезагрузка не установлена
Запустите отладчик Windows WinDbg.exe от имени администратора
Нажмите Ctrl + D, чтобы открыть аварийный дамп в C:\Windows
Запустите следующие команды и скопируйте выходные данные
.sympath+ C:\Program Files\USBip
!wmitrace.searchpath +%TEMP%\usbip
!analyze -v
!wdfkd.wdfsearchpath %TEMP%\USBip
!wdfkd.wdfsettraceprefix [%9]%3!04x! %!LEVEL! %!FUNC!:
!wdfkd.wdflogdump usbip2_ude -d
!wdfkd.wdflogdump usbip2_ude -f
Получение журнала USB / IP в Linux
sudo killall usbipd
sudo modprobe -r usbip-host usbip-vudc vhci-hcd usbip-core
sudo modprobe usbip-core usbip_debug_flag=0xFFFFFFFF
sudo modprobe -a usbip-host usbip-vudc vhci-hcd
sudo usbipd -D
dmesg --follow | tee ~/usbip.log
Тестирование драйвера
Driver Verifier используется для тестирования
Запуск verifier.exe от имени администратора
Включить тестирование
verifier /rc 1 2 4 5 6 8 9 12 18 34 10 11 14 15 16 17 20 24 26 33 35 36 /driver usbip2_filter.sys usbip2_ude.sys
Имейте в виду, что правило класса 26 "Проверка целостности кода" обязывает использовать NonPagedPoolNx вместо NonPagedPool
Запрашивать статистику драйвера
verifier /query
verifier /reset
Чтобы запустить Static Driver Verifier, установите для параметра "Рассматривать предупреждения как ошибки" значение "Нет" для проектов libdrv, usbip2_filter, usbip2_ude
Если вам нравится этот проект
