Π£ΠΊΡ€ΠΎΡ‰Π°Π΅ΠΌ USB/IP

РСгулярно Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ USB-устройства ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ ПК Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ. Под ΠΊΠ°Ρ‚ΠΎΠΌ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° история ΠΌΠΎΠΈΡ… поисков Π² этом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΌΡƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π½Π° Π±Π°Π·Π΅ open-source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° USB/IP с описаниСм Π·Π°Π±ΠΎΡ‚Π»ΠΈΠ²ΠΎ установлСнных Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ людьми Π½Π° этом ΠΏΡƒΡ‚ΠΈ прСпятствий, Π° Ρ‚Π°ΠΊΠΆΠ΅ способов ΠΈΡ… ΠΎΠ±Ρ…ΠΎΠ΄Π°.

Π§Π°ΡΡ‚ΡŒ пСрвая, историчСская

Если машина Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ β€” всё это нСслоТно. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» проброса USB ΠΎΡ‚ хоста Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΡƒ появился Π΅Ρ‰Π΅ Π² VMWare 4.1. Но Π² ΠΌΠΎΡ‘ΠΌ случаС ΠΊΠ»ΡŽΡ‡ΠΈΠΊ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΎΠΏΠΎΠ·Π½Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠ°ΠΊ WIBU-KEY, Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π² Ρ€Π°Π·Π½ΠΎΠ΅ врСмя ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ машинам, ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ.
ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²ΠΈΡ‚ΠΎΠΊ поиска Π² Π΄Π°Π»Π΅ΠΊΠΎΠΌ 2009-ΠΌ Π³ΠΎΠ΄Ρƒ ΠΏΡ€ΠΈΠ²Π΅Π» мСня ΠΊ ΠΆΠ΅Π»Π΅Π·ΠΊΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ TrendNet TU2-NU4
ΠŸΠ»ΡŽΡΡ‹:

  • ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

ΠœΠΈΠ½ΡƒΡΡ‹:

  • Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ всСгда. Допустим, ΠΊΠ»ΡŽΡ‡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Guardant Stealth II Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Ρ‘ Π½Π΅ заводится, Ρ€ΡƒΠ³Π°ΡΡΡŒ ошибкой «устройство Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎΒ».
  • ПО для управлСния (Ρ‡ΠΈΡ‚Π°ΠΉ β€” монтирования ΠΈ размонтирования USB-устройств) ΡƒΠ±ΠΎΠ³ΠΎ Π΄ΠΎ крайности. ΠšΠ»ΡŽΡ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, автоматизация β€” Π½Π΅, Π½Π΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ. Всё Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€ΡƒΠΊΠ°ΠΌΠΈ. ΠšΠΎΡˆΠΌΠ°Ρ€.
  • ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ ПО ΠΈΡ‰Π΅Ρ‚ саму ΠΆΠ΅Π»Π΅Π·ΠΊΡƒ Π² сСти ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Π½ΠΈΠ΅ΠΌ, поэтому Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ broadcast-сСгмСнта сСти. Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ IP-адрСс ΠΆΠ΅Π»Π΅Π·ΠΊΠΈ Ρ€ΡƒΠΊΠ°ΠΌΠΈ нСльзя. Π–Π΅Π»Π΅Π·ΠΊΠ° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ подсСти? Π’ΠΎΠ³Π΄Π° Ρƒ вас ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.
  • Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π·Π°Π±ΠΈΠ»ΠΈ Π½Π° устройство, ΡΠ»Π°Ρ‚ΡŒ Π±Π°Π³-Ρ€Π΅ΠΏΠΎΡ€Ρ‚Ρ‹ бСсполСзно.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²ΠΈΡ‚ΠΎΠΊ случился Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° ΡƒΠΆΠ΅ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ ΠΎΡ‚Π΄Π°Π»Π΅Π½Π½Ρ‹Π΅, ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π» мСня ΠΊ Ρ‚Π΅ΠΌΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” USB/IP project. ΠŸΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒΡŽ, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Ρ‡Ρ‚ΠΎ рСбята ΠΈΠ· ReactOS подписали ΠΈΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для Windows, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°ΠΆΠ΅ Π½Π° x64 всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· всяких костылСй Π²Ρ€ΠΎΠ΄Π΅ тСстового Ρ€Π΅ΠΆΠΈΠΌΠ°. Π—Π° Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ReactOS ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ спасибо! Π—Π²ΡƒΡ‡ΠΈΡ‚ всё красиво, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΡ‰ΡƒΠΏΠ°Ρ‚ΡŒ, Ρ‚Π°ΠΊ Π»ΠΈ ΠΎΠ½ΠΎ Π½Π° Π΄Π΅Π»Π΅? К соТалСнию, сам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ΄Π·Π°Π±Ρ€ΠΎΡˆΠ΅Π½, ΠΈ Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ приходится β€” Π½ΠΎ Π³Π΄Π΅ наша Π½Π΅ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π»Π°, исходник Π΅ΡΡ‚ΡŒ, разбСрСмся!

Π§Π°ΡΡ‚ΡŒ вторая, сСрвСрно-линуксовая

Π‘Π΅Ρ€Π²Π΅Ρ€ USB/IP, Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ USB-дСвайсы ΠΏΠΎ сСти, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ поднят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Linux-based OS. Ну Ρ‡Ρ‚ΠΎ ΠΆ, линукс Ρ‚Π°ΠΊ линукс, устанавливаСм Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΡƒ Debian 8 Π² минимальной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, стандартноС Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Ρ€ΡƒΠΊΠ°ΠΌΠΈ:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install usbip

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ. Π”Π°Π»ΡŒΡˆΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ подсказываСт, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ usbip, Π½ΠΎ β€” здравствуйтС, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π³Ρ€Π°Π±Π»ΠΈ. НСт Ρ‚Π°ΠΊΠΎΠ³ΠΎ модуля. А всё ΠΎΡ‚Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ руководств Π² сСти относятся ΠΊ Π±ΠΎΠ»Π΅Π΅ старой Π²Π΅Ρ‚ΠΊΠ΅ 0.1.x, Π° Π² ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ 0.2.0 ΠΌΠΎΠ΄ΡƒΠ»ΠΈ usbip ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ названия.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ:

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo lsmod | grep usbip

Ну ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² /etc/modules Ρ‚Π°ΠΊΠΈΠ΅ строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈΡ… автоматичСски ΠΏΡ€ΠΈ стартС систСмы:

usbip-core
usbip-host
vhci-hcd

Запустим сСрвСр usbip:

sudo usbipd -D

Π”Π°Π»ΡŒΡˆΠ΅ всСмирный Ρ€Π°Π·ΡƒΠΌ Π½Π°ΠΌ подсказываСт, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с usbip ΠΈΠ΄ΡƒΡ‚ скрипты, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π½Π°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сСрвСром β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ устройство ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ сСти, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ статус, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ΡƒΡ‚ нас ΠΏΠΎΠ΄ΠΆΠΈΠ΄Π°Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ садовый инструмСнт β€” эти скрипты Π² Π²Π΅Ρ‚ΠΊΠ΅ 0.2.x, ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ‹. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

sudo usbip

ΠŸΠΎΡ‡ΠΈΡ‚Π°Π² описаниС ΠΊΠΎΠΌΠ°Π½Π΄, становится понятно, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ USB-дСвайс, usbip Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ Bus ID. Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Π·Ρ€ΠΈΡ‚Π΅Π»ΠΈ, Π½Π° Π°Ρ€Π΅Π½Π΅ Π³Ρ€Π°Π±Π»ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Ρ€ΠΈ: Ρ‚ΠΎΡ‚ Bus ID, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выдаст Π½Π°ΠΌ lsusb (казалось Π±Ρ‹, самый ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ) β€” Π΅ΠΉ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚! Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅Π»Π΅Π·ΠΊΠΈ Π²Ρ€ΠΎΠ΄Π΅ USB-Ρ…Π°Π±ΠΎΠ² usbip ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ встроСнной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

user@usb-server:~$ sudo usbip list -l
 - busid 1-1 (064f:0bd7)
   WIBU-Systems AG : BOX/U (064f:0bd7)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: здСсь ΠΈ Π΄Π°Π»Π΅Π΅ Π² листингах я Π±ΡƒΠ΄Ρƒ всё ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ USB-ΠΊΠ»ΡŽΡ‡Π°. Π’Π°ΡˆΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΆΠ΅Π»Π΅Π·ΠΊΠΈ ΠΈ ΠΏΠ°Ρ€Π° VID:PID ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. Моя называСтся Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΡ‚ΡŒ нашС устройство:

user@usb-server:~$ sudo usbip bind --busid=1-1
usbip: info: bind device on busid 1-1: complete

Π£Ρ€Π°, Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰ΠΈ!

user@usb-server:~$ sudo usbip list -r localhost
Exportable USB devices
======================
 - localhost
        1-1: WIBU-Systems AG : BOX/U (064f:0bd7)
           : /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb1/1-1
           : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)

Π’Ρ€ΠΎΠ΅ΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ ΡƒΡ€Π°, Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰ΠΈ! Π‘Π΅Ρ€Π²Π΅Ρ€ Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΠ» ΠΆΠ΅Π»Π΅Π·ΠΊΡƒ ΠΏΠΎ сСти, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Ρ‘ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ! ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ автозапуск Π΄Π΅ΠΌΠΎΠ½Π° usbip Π² /etc/rc.local

usbipd -D

Π§Π°ΡΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ, клиСнтская ΠΈ запутанная

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠ°Ρ€Π΅Π½Π½ΠΎΠ΅ устройство ΠΏΠΎ сСти ΠΊ машинС ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Debian я ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» сразу ΠΆΠ΅ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ сСрвСрС, ΠΈ всё прСкрасно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΎΡΡŒ:

sudo usbip attach --remote=localhost --busid=1-1

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Windows. Π’ ΠΌΠΎΠ΅ΠΌ случаС это Π±Ρ‹Π» Windows Server 2008R2 Standard Edition. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ руководство просит сначала ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° прСкрасно описана Π² ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊ windows-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ readme, Π΄Π΅Π»Π°Π΅ΠΌ всё ΠΊΠ°ΠΊ написано, всё получаСтся. На XP Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ трудностСй.

Распаковав ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш ΠΊΠ»ΡŽΡ‡ΠΈΠΊ:

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip_windows.c: 756 (query_interface0) recv op_common
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Ой-ΠΎΠΉ. Π§Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½Π°Π²Ρ‹ΠΊ Π³ΡƒΠ³Π»Π°. Π’ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Ρ€Ρ‹Π²ΠΎΡ‡Π½Ρ‹Π΅ упоминания, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΌ Π½Π΅ Ρ‚Π°ΠΊ с константами, Π² сСрвСрной части Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ 0.2.0 ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, Π° Π²ΠΎΡ‚ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΏΠΎΠ΄ Win ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π·Π°Π±Ρ‹Π»ΠΈ. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” помСняйтС константу Π² исходникС ΠΈ пСрСсобСритС ΠΊΠ»ΠΈΠ΅Π½Ρ‚.

Π’ΠΎΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½Π΅ Π½Π΅ хочСтся ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Visual Studio Ρ€Π°Π΄ΠΈ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Π—Π°Ρ‚ΠΎ Ρƒ мСня Π΅ΡΡ‚ΡŒ старый-Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ Hiew. Π’ исходникС константа объявлСна ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ слово. ΠŸΠΎΠΈΡ‰Π΅ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ 0Ρ…00000106, замСняя Π½Π° 0Ρ…00000111. НС Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ, порядок Π±Π°ΠΉΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ. Π˜Ρ‚ΠΎΠ³ β€” Π΄Π²Π° совпадСния, ΠΏΠ°Ρ‚Ρ‡ΠΈΠΌ:

[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11

Π˜ΠΈΠΈΠΈβ€¦ Π΄Π°!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
new usb device attached to usbvbus port 1

На этом ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΌΡƒΠ·Ρ‹ΠΊΠ° ΠΈΠ³Ρ€Π°Π»Π° Π½Π΅Π΄ΠΎΠ»Π³ΠΎ. ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ² сСрвСр, я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ устройство Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ Π½Π΅ монтируСтся!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

И всё. На это ΠΌΠ½Π΅ Π½Π΅ смог ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π²ΡΠ΅Π·Π½Π°ΡŽΡ‰ΠΈΠΉ Π³ΡƒΠ³Π». А ΠΏΡ€ΠΈ этом ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ доступныС Π½Π° сСрвСрС устройства Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ β€” Π²ΠΎΡ‚ ΠΎΠ½, ΠΊΠ»ΡŽΡ‡, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΠ±ΡƒΡŽ ΠΏΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·-ΠΏΠΎΠ΄ Linux β€” Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚! А Ссли Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·-ΠΏΠΎΠ΄ Windows? О уТас β€” это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚!

Π“Ρ€Π°Π±Π»ΠΈ послСдниС: Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΌ Π² ΠΊΠΎΠ΄Π΅ сСрвСра Π½Π΅ дописано. ΠŸΡ€ΠΈ Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΠ²Π°Π½ΠΈΠΈ устройства ΠΎΠ½ Π½Π΅ считываСт с Π½Π΅Π³ΠΎ количСство USB-дСскрипторов. А ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ устройства ΠΈΠ·-ΠΏΠΎΠ΄ Linux, это ΠΏΠΎΠ»Π΅ заполняСтся. К соТалСнию, с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΏΠΎΠ΄ Linux я Π·Π½Π°ΠΊΠΎΠΌ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Β«make && make installΒ». ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ довольно грязного Ρ…Π°ΠΊΠ° β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² /etc/rc.local

usbip attach --remote=localhost --busid=1-1
usbip port
usbip detach --port=00

Π§Π°ΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ

ПослС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мытарств, это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π–Π΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ»ΡŽΡ‡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ПК (ΠΈ Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Ρ‚ΠΎΠΆΠ΅), Π² Ρ‚ΠΎΠΌ числС β€” Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сСгмСнта сСти. Если хочСтся β€” ΠΌΠΎΠΆΠ½ΠΎ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скрипта ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Π§Ρ‚ΠΎ приятно β€” ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ бСсплатноС.
НадСюсь, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ хабраТитСлям ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Ρ‚Π΅ Π³Ρ€Π°Π±Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π»ΠΈΡΡŒ Ρƒ мСня Π½Π° Π»Π±Ρƒ. Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com