USB over IP i heimen

Det hender at man Þnsker Ä jobbe med en enhet koblet via USB, uten Ä ha den liggende pÄ bordet ved siden av laptopen. Jeg har en kinesisk gravÞr med en laser pÄ 500 mW, en enhet som er ganske ubehagelig ved nÊrkontakt. Foruten den direkte faren for Þynene, avgir laseren giftige produkter under forbrenning, sÄ enheten mÄ vÊre i et godt ventilert rom, helst isolert fra folk. Men hvordan styrer man denne enheten? Svaret pÄ dette spÞrsmÄlet fant jeg tilfeldigvis mens jeg bladde gjennom OpenWRT-repositoriet i hÄp om Ä finne en verdig bruk for den gamle D-Link DIR-320 A2-ruteren. Jeg bestemte meg for Ä bruke beskrivelsen som tidligere ble omtalt pÄ Habr. USB over IP tunnel, men alle instruksjonene for installasjonen hadde mistet sin aktualitet, sÄ jeg skriver min egen.

OpenWRT er et operativsystem som ikke trenger nÊrmere presentasjon, sÄ jeg skal ikke gÄ inn pÄ installasjonen. For min ruter lastet jeg ned den nyeste stabile utgaven av OpenWrt 19.07.3, og koblet den til hovedtilgangspunktet via Wi-Fi som en klient, og valgte modus lan, for ikke Ä plage brannmuren.

Serverdelen

Vi fĂžlger den offisielle instruksjonen. Etter tilkobling via ssh installerer vi de nĂždvendige pakkene.

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

Deretter kobler vi vÄr enhet til USB-porten pÄ ruteren (i mitt tilfelle enheter: USB-hub, en USB-minnepinne, som har filsystemet til ruteren montert (pÄ grunn av mangel pÄ plass i det interne lagringsmediet), og selve gravÞren).

La oss prĂžve Ă„ liste opp de tilkoblede enhetene:

root@OpenWrt:~# usbip list -l

Tomt.

Ved Ă„ google fant jeg synderen, det var biblioteket libudev-fbsd.
Vi henter den nyeste fungerende versjonen manuelt fra repositoriet libudev_3.2-1 fra utgaven OpenWRT 17.01.7 for min arkitektur, i mitt tilfelle er det libudev_3.2-1_mipsel_mips32.ipk. Med wget/scp laster vi den opp til ruteren og reinstallere

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)

Kineseren, koblet til USB-huben, fikk bsuid 1-1.4. Husket den.

SĂ„ starter vi demon:

root@OpenWrt:~# usbipd -D

og binder kineseren

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

Vi sjekker at alt fungerer:

root@OpenWrt:\/home# netstat -alpt
Aktive internettforbindelser (servere og etablerte)
Proto Recv-Q Send-Q Lokal adresse           Fremmed adresse         Status       PID\/Programnavn
tcp        0      0 0.0.0.0:3240            0.0.0.0:*               LYTTER      1884\/usbipd

For Ă„ binde enheten automatisk videre, redigerer vi /etc/rc.local, og legger til fĂžr exit 0 fĂžlgende:

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

Klientdelen

La oss prÞve Ä koble enheten til Windows 10 ved Ä bruke instruksjonen nevnt over fra openwrt.org. Jeg mÄ si med en gang: prosjektet er dÞmt til Ä mislykkes. FÞrst og fremst gjelder det kun Windows 7 x64. For det andre, det er en lenke til en trÄd pÄ sourceforge.net, hvor det foreslÄs Ä laste ned en patchet driver fra 2014 fra Dropbox. NÄr vi prÞver Ä kjÞre den under Windows 10 og koble til enheten vÄr, fÄr vi feilmeldingen:

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

*** FEIL: kan ikke finne enhet

Dette skyldes at klienten ikke fungerer med en server bygget pÄ en kjerne eldre enn versjon 3.14.
Serveren usbip under OpenWRT 19.07.3 er bygget pÄ kjerne 4.14.180.

I min videre sÞken kommer jeg over en aktuell utvikling av Windows-klienten pÄ github. Greit, det er pÄstÄtt stÞtte for Windows 10 x64, men klienten er utelukkende testversjon, sÄ det er en rekke begrensninger.

FÞrst mÄ vi installere sertifikatet, faktisk to ganger. Greit, vi plasserer det i Trusted Root Certification Authority og Trusted Publishers.

Videre mÄ operativsystemet settes i testmodus. Dette gjÞr man ved Ä kjÞre kommandoen

bcdedit.exe \/set TESTSIGNING ON

Det fungerte ikke fÞrste gang, ble forstyrret av secure boot. For Ä deaktivere det, mÄ du starte pÄ nytt i UEFI og sette secure boot til disabled. PÄ noen bÊrbare modeller kan det vÊre nÞdvendig Ä sette en supervisor-passord.

Etter dette starter vi opp i Windows og gjĂžr bcdedit.exe \/set TESTSIGNING ON
Windows sier at alt er i orden. Vi starter opp igjen, og ser i nedre hĂžyre hjĂžrne teksten Test Mode, versjonen og byggnummeret til OS.

Hva er alle disse manĂžvrene for? For Ă„ installere en usignert driver USB\/IP VHCI. Dette kan gjĂžres 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, manuell installasjon av Legacy Hardware. Jeg valgte det andre alternativet, fikk en advarsel om installasjon av usignert driver og aksepterte det.

Vi kontrollerer deretter at vi har muligheten til Ă„ koble til en ekstern USB-enhet ved Ă„ kjĂžre kommandoen:

usbip.exe list -r

hent liste over enheter:

c:Utilsusbip>usbip.exe list -r 192.168.31.203
usbip: feil: kunne ikke Äpne usb id-databasen
Eksporterbare USB-enheter
=================================================
 - 192.168.31.203
      1-1.4: ukjent leverandĂžr : ukjent produkt (1a86:7523)
           : /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
           : ukjent klasse / ukjent underklasse / ukjent protokoll (ff/00/00)

angÄende feilen usbip: feil: kunne ikke Äpne usb id-databasen vi ignorerer dette, det pÄvirker ikke arbeidet.

NĂ„ binder vi enheten:

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

Alt er klart, Windows oppdaget en ny enhet, nÄ kan vi bruke den som om den var fysisk tilkoblet laptopen.

Med den kinesiske graveren mÄtte jeg slite litt, ettersom forsÞkene pÄ Ä installere dens CH341SER-driver via den medfÞlgende installasjonsprogrammet (ja, graveren er pÄ Arduino) fikk USB/IP VHCI til Ä krasje Windows med BSOD. Men installasjonen av CH341SER til for tilkobling av enheten gjennom usbip.exe lÞste problemet.

Resultat: graveren brÄker og rÞyker pÄ kjÞkkenet med Äpent vindu og lukket dÞr, jeg observerer prosessen med Ä brenne fra et annet rom via den medfÞlgende programvaren, som ikke mistenker noe.

Brukte kilder:

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

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster