USB over IP hjemme

Noen ganger vil du jobbe med en enhet koblet til via USB uten å ha den på bordet ved siden av den bærbare datamaskinen. Enheten min er en kinesisk gravør med en 500 mW laser, noe som er ganske ubehagelig ved nærkontakt. I tillegg til den umiddelbare faren for øynene, frigjøres giftige forbrenningsprodukter under laserdrift, så enheten bør plasseres i et godt ventilert område, og helst isolert fra mennesker. Hvordan kan du kontrollere en slik enhet? Jeg fant ved et uhell svaret på dette spørsmålet mens jeg surfet på OpenWRT-depotet i håp om å finne en verdig bruk for den gamle D-Link DIR-320 A2-ruteren. For å koble til bestemte jeg meg for å bruke den som er beskrevet på Habré tidligere. USB over IP-tunnel, men alle instruksjonene for å installere den har mistet sin relevans, så jeg skriver min egen.

OpenWRT er et operativsystem som ikke trenger noen introduksjon, så jeg vil ikke beskrive installasjonen. For ruteren min tok jeg den siste stabile utgaven av OpenWrt 19.07.3, og koblet den til hoved Wi-Fi-tilgangspunktet som en klient, og valgte modus lan, for ikke å plage brannmuren.

Server del

Vi handler iht offisielle instruksjoner. Etter å ha koblet til via ssh, installer de nødvendige pakkene.

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-ohci usbip-server usbip-client

Deretter kobler vi enheten vår til ruterens USB-port (i mitt tilfelle enheter: en USB-hub, en flash-stasjon som ruterens filsystem er montert på (på grunn av mangel på plass på internlagringen), og direkte gravør).

La oss prøve å vise en liste over tilkoblede enheter:

root@OpenWrt:~# usbip list -l

Tømme.

Ved å google den skyldige ble funnet, viste det seg å være et bibliotek libudev-fbsd.
Vi trekker ut den siste fungerende versjonen fra depotet for hånd libudev_3.2-1 fra OpenWRT 17.01.7-utgivelsen for din arkitektur, i mitt tilfelle er det libudev_3.2-1_mipsel_mips32.ipk. Bruk wget/scp, last den ned til ruterens minne og installer den på nytt

root@OpenWrt:~# opkg remove --force-depends libudev-fbsd
root@OpenWrt:~# opkg install libudev_3.2-1_mipsel_mips32.ipk

Vi sjekker:

root@OpenWrt:~# usbip list -l
 - busid 1-1.1 (090c:1000)
   Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) : Flash Drive (090c:1000)

 - busid 1-1.4 (1a86:7523)
   QinHeng Electronics : HL-340 USB-Serial adapter (1a86:7523)

En kinesisk mann koblet til en USB-hub mottok en bsuid 1-1.4. Huske.

La oss nå starte demonen:

root@OpenWrt:~# usbipd -D

og bindim kineserne

root@OpenWrt:~# usbip bind -b 1-1.4
usbip: info: bind device on busid 1-1.4: complete

La oss sjekke at alt fungerer:

root@OpenWrt:/home# netstat -alpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3240            0.0.0.0:*               LISTEN      1884/usbipd

For ytterligere å binde enheten automatisk, la oss redigere /etc/rc.localved å legge til før avkjørsel 0 følgende:

usbipd -D &
sleep 1
usbip bind -b 1-1.4

Klient side

La oss prøve å koble enheten til Windows 10 ved å bruke instruksjonene ovenfor fra openwrt.org. Jeg vil si med en gang: ideen er dømt til å mislykkes. For det første vurderes bare Windows 7 x64. For det andre er det gitt en lenke til en tråd på sourceforge.net, som foreslår å laste ned en driver som ble oppdatering i 2014 fra Dropbox. Når vi prøver å kjøre den under Windows 10 og koble til enheten vår, får vi følgende feilmelding:

c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip for windows ($Id$)

*** ERROR: cannot find device

Dette skyldes det faktum at klienten ikke fungerer med en server bygget for en kjerne eldre enn versjon 3.14.
Usbip-serveren for OpenWRT 19.07.3 er bygget på kjerne 4.14.180.

Jeg fortsetter søket og kommer over den nåværende utviklingen av en Windows-klient for GitHub. Ok, støtte for Windows 10 x64 er oppgitt, men klienten er kun en testklient, så det er en rekke begrensninger.

Så først ber de om å installere sertifikatet, og to ganger. Ok, la oss legge det inn i Trusted Root Certification Authority og Trusted Publishers.

Deretter må du sette operativsystemet i testmodus. Dette gjøres av et team

bcdedit.exe /set TESTSIGNING ON

Jeg lyktes ikke første gang, jeg kom i veien sikre boot. For å deaktivere den, må du starte på nytt i UEFI og sette sikker oppstart til å deaktivere. Noen bærbare modeller kan kreve å angi et administratorpassord.

Etter det starter du opp i Windows og gjør det bcdedit.exe /set TESTSIGNING PÅ
Vinda sier at alt er ok. Vi starter på nytt igjen, og vi ser i nedre høyre hjørne ordene Test Mode, versjon og OS byggenummer.

Hva er alle disse manipulasjonene til for? For å installere en usignert driver USB/IP VHCI. Det anbefales å gjøre dette ved å laste ned filene usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat og kjøre med administratorrettigheter

usbip.exe install

eller den andre metoden, installering av Legacy Hardware manuelt. Jeg valgte det andre alternativet, fikk en advarsel om å installere en usignert driver og var enig i det.

Deretter sjekker vi at vi har muligheten til å koble til en ekstern USB-enhet ved å kjøre kommandoen:

usbip.exe list -r <ip вашего роутера>

vi får en liste over enheter:

c:Utilsusbip>usbip.exe list -r 192.168.31.203
usbip: error: failed to open usb id database
Exportable USB devices
======================
 - 192.168.31.203
      1-1.4: unknown vendor : unknown product (1a86:7523)
           : /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
           : unknown class / unknown subclass / unknown protocol (ff/00/00)

for en feil usbip: feil: kunne ikke åpne usb-id-databasen Vi tar ikke hensyn, det påvirker ikke arbeidet.

Nå binder vi enheten:

c:Utilsusbip>usbip.exe attach -r 192.168.31.203 -b 1-1.4

Det er det, Windows har oppdaget en ny enhet, nå kan du jobbe med den som om den var fysisk koblet til den bærbare datamaskinen.

Jeg måtte lide litt med den kinesiske graveren, for da jeg prøvde å installere CH341SER-driveren gjennom installasjonsprogrammet som fulgte med gravøren (ja, en Arduino-gravør), slapp USB/IP VHCI Windows inn i BSOD. Men å installere CH341SER-driveren til å koble til enheten via usbip.exe løste problemet.

Hovedpoenget: gravøren lager lyd og røyker på kjøkkenet med vinduet åpent og døren lukket, jeg ser brenningsprosessen fra et annet rom gjennom min egen programvare, som ikke merker en hake.

Brukte kilder:

https://openwrt.org/docs/guide-user/services/usb.iptunnel
https://github.com/cezanne/usbip-win

Kilde: www.habr.com

Legg til en kommentar