USB preko IP kod kuće

Ponekad želite da radite sa uređajem povezanim preko USB-a, a da ga ne držite na stolu pored laptopa. Moj uređaj je kineski graver sa laserom od 500 mW, koji je prilično neugodan u bliskom kontaktu. Osim neposredne opasnosti za oči, tokom rada lasera oslobađaju se toksični produkti sagorijevanja, pa uređaj treba biti smješten u dobro prozračenom prostoru, a po mogućnosti izolovan od ljudi. Kako možete kontrolisati takav uređaj? Slučajno sam pronašao odgovor na ovo pitanje dok sam pretraživao OpenWRT spremište u nadi da ću pronaći dostojnu upotrebu za stari D-Link DIR-320 A2 ruter. Za povezivanje odlučio sam koristiti onaj koji je ranije opisan na Habréu. USB preko IP tunela, međutim, sva uputstva za instalaciju su izgubila na važnosti, pa pišem svoje.

OpenWRT je operativni sistem koji ne treba predstavljati, tako da neću opisivati ​​njegovu instalaciju. Za svoj ruter sam uzeo najnovije stabilno izdanje OpenWrt 19.07.3 i povezao ga na glavnu Wi-Fi pristupnu tačku kao klijent, birajući način lan, kako ne bi mučili firewall.

Serverski dio

Ponašamo se prema službena uputstva. Nakon povezivanja putem ssh-a, instalirajte potrebne pakete.

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

Zatim povezujemo naš uređaj sa USB portom rutera (u mom slučaju, uređaji: USB čvorište, fleš disk na koji je montiran sistem datoteka rutera (zbog nedostatka prostora na internoj memoriji) i, direktno, graver).

Pokušajmo prikazati listu povezanih uređaja:

root@OpenWrt:~# usbip list -l

Prazan.

Guglanjem je pronađen krivac, ispostavilo se da je u pitanju biblioteka libudev-fbsd.
Ručno izvlačimo najnoviju radnu verziju iz spremišta libudev_3.2-1 iz izdanja OpenWRT 17.01.7 za vašu arhitekturu, u mom slučaju to je libudev_3.2-1_mipsel_mips32.ipk. Koristeći wget/scp, preuzmite ga u memoriju rutera i ponovo ga instalirajte

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

Provjeravamo:

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)

Kinez spojen na USB hub dobio je bsuid 1-1.4. Zapamti.

Sada pokrenimo demona:

root@OpenWrt:~# usbipd -D

i vezati Kineze

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

Provjerimo da li sve radi:

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

Da dodatno automatski povežemo uređaj, uredimo /etc/rc.localdodavanjem prije izlaz 0 sledeće:

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

Na strani klijenta

Pokušajmo povezati uređaj na Windows 10 koristeći gornje upute sa openwrt.org. Odmah ću reći: ideja je osuđena na propast. Prvo, razmatra se samo Windows 7 x64. Drugo, data je veza do teme na sourceforge.net, koja predlaže preuzimanje drajvera zakrpljenog 2014. sa Dropboxa. Kada pokušamo da ga pokrenemo pod Windows 10 i povežemo se sa našim uređajem, dobijamo sledeću grešku:

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

*** ERROR: cannot find device

To je zbog činjenice da klijent ne radi sa serverom izgrađenim za kernel starije od verzije 3.14.
Usbip server za OpenWRT 19.07.3 je izgrađen na kernelu 4.14.180.

Nastavljajući svoju potragu, naišao sam na trenutni razvoj Windows klijenta za GitHub. Ok, navedena je podrška za Windows 10 x64, ali klijent je samo testni klijent, tako da postoji niz ograničenja.

Dakle, prvo traže instaliranje certifikata, i to dva puta. Ok, stavimo ga u Pouzdano tijelo za certifikaciju korijena i Pouzdane izdavače.

Zatim morate staviti operativni sistem u testni mod. Ovo radi tim

bcdedit.exe /set TESTSIGNING ON

Nisam uspio prvi put, ispriječio sam se sigurno dizanje. Da biste ga onemogućili, morate ponovo pokrenuti UEFI i postaviti bezbedno pokretanje na onemogućeno. Neki modeli laptopa mogu zahtijevati postavljanje lozinke nadzora.

Nakon toga, pokrenite Windows i uradite bcdedit.exe /postavi TESTSIGNING ON
Vinda kaže da je sve u redu. Ponovo pokrećemo sistem i vidimo u donjem desnom uglu reči Test Mode, verzija i broj verzije OS-a.

Čemu služe sve ove manipulacije? Da instalirate nepotpisani drajver USB/IP VHCI. Predlaže se da se to uradi preuzimanjem datoteka usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat i pokretanjem sa administratorskim pravima

usbip.exe install

ili drugi metod, ručno instaliranje naslijeđenog hardvera. Odabrao sam drugu opciju, dobio sam upozorenje o instaliranju nepotpisanog drajvera i složio se s tim.

Zatim provjeravamo da li imamo mogućnost povezivanja na udaljeni USB uređaj tako što ćemo pokrenuti naredbu:

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

dobijamo listu uređaja:

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)

za grešku usbip: greška: nije uspjelo otvaranje baze podataka usb id Ne obraćamo pažnju, to ne utiče na rad.

Sada vezujemo uređaj:

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

To je to, Windows je otkrio novi uređaj, sada možete raditi s njim kao da je fizički povezan sa laptopom.

Morao sam malo da se mučim sa kineskim graverom, jer kada sam pokušao da instaliram njegov CH341SER drajver preko instalatera koji je došao uz graver (da, Arduino graver), USB/IP VHCI je ispustio Windows u BSOD. Međutim, instaliranje drajvera CH341SER do povezivanje uređaja putem usbip.exe riješilo je problem.

Zaključak: graver pravi buku i puši u kuhinji sa otvorenim prozorom i zatvorenim vratima, ja gledam proces paljenja iz druge sobe preko sopstvenog softvera, koji ne oseća kvaku.

Korišteni izvori:

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

izvor: www.habr.com

Dodajte komentar