USB preko IP kod kuće

Ponekad želite raditi s uređajem spojenim putem USB-a, a da ga ne držite na stolu pored prijenosnog računala. Moj uređaj je kineski graver s laserom od 500 mW koji je dosta neugodan u bliskom kontaktu. Osim neposredne opasnosti za oči, tijekom rada lasera oslobađaju se otrovni produkti izgaranja, stoga uređaj treba biti smješten u dobro prozračenom prostoru i po mogućnosti izoliran od ljudi. Kako možete kontrolirati takav uređaj? Slučajno sam pronašao odgovor na ovo pitanje dok sam pregledavao OpenWRT repozitorij u nadi da ću pronaći dostojnu upotrebu za stari ruter D-Link DIR-320 A2. Za povezivanje sam odlučio upotrijebiti onaj koji je ranije opisan na Habréu. USB preko IP tunela, međutim, sve upute za instalaciju su izgubile na važnosti, pa pišem svoje.

OpenWRT je operativni sustav koji ne treba predstavljati, pa neću opisivati ​​njegovu instalaciju. Za svoj usmjerivač uzeo sam najnovije stabilno izdanje OpenWrt 19.07.3 i povezao ga s glavnom Wi-Fi pristupnom točkom kao klijent, odabirom načina lan, kako ne bi mučili vatrozid.

Serverski dio

Djelujemo prema službene upute. 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 s USB priključkom usmjerivača (u mom slučaju uređaji: USB hub, flash pogon na koji je montiran datotečni sustav usmjerivača (zbog nedostatka prostora na internoj pohrani) i, izravno, graver).

Pokušajmo prikazati popis povezanih uređaja:

root@OpenWrt:~# usbip list -l

Prazan.

Guglanjem je pronađen krivac, pokazalo se da je knjižnica libudev-fbsd.
Ručno izvlačimo najnoviju radnu verziju iz repozitorija 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 usmjerivača i ponovno 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 čvorište dobio je bsuid 1-1.4. Zapamtiti.

Sada pokrenimo demona:

root@OpenWrt:~# usbipd -D

a bindim Kineze

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

Provjerimo radi li sve:

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

Za daljnje automatsko vezanje uređaja, uredimo /etc/rc.localdodavanjem prije izlaz 0 sljedeće:

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

Strana klijenta

Pokušajmo povezati uređaj sa sustavom Windows 10 koristeći gornje upute s openwrt.org. Odmah ću reći: ideja je osuđena na neuspjeh. Prvo, u obzir dolazi samo Windows 7 x64. Drugo, navedena je poveznica na temu na sourceforge.net, koja predlaže preuzimanje upravljačkog programa zakrpanog 2014. s Dropboxa. Kada ga pokušamo pokrenuti pod Windows 10 i povezati se s našim uređajem, dobivamo sljedeću pogreš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 s poslužiteljem izgrađenim za kernel stariji od verzije 3.14.
Usbip poslužitelj za OpenWRT 19.07.3 izgrađen je na kernelu 4.14.180.

Nastavljajući svoju potragu, nailazim na trenutni razvoj Windows klijenta za Github. U redu, navedena je podrška za Windows 10 x64, ali klijent je samo testni klijent, tako da postoje brojna ograničenja.

Dakle, prvo traže instaliranje certifikata, pa dva puta. U redu, stavimo to u Trusted Root Certification Authority i Trusted Publishers.

Zatim trebate staviti operativni sustav u testni način rada. To radi tim

bcdedit.exe /set TESTSIGNING ON

Prvi put nisam uspio, ispriječio sam se osigurati boot. Da biste ga onemogućili, morate se ponovno pokrenuti u UEFI i postaviti sigurno pokretanje na onemogućavanje. Neki modeli prijenosnih računala mogu zahtijevati postavljanje lozinke nadzornika.

Nakon toga dignite Windows i učinite bcdedit.exe /set TESTSIGNING ON
Vinda kaže da je sve ok. Ponovno se pokrećemo i u donjem desnom kutu vidimo riječi Testni način rada, verzija i broj verzije OS-a.

Čemu služe sve te manipulacije? Za instaliranje nepotpisanog upravljačkog programa USB/IP VHCI. Predlaže se da to učinite preuzimanjem datoteka usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat i pokretanjem s administratorskim pravima

usbip.exe install

ili druga metoda, ručna instalacija naslijeđenog hardvera. Izabrao sam drugu opciju, dobio upozorenje o instaliranju nepotpisanog upravljačkog programa i složio se s tim.

Zatim provjeravamo imamo li mogućnost povezivanja s udaljenim USB uređajem pokretanjem naredbe:

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

dobivamo popis 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: pogreška: nije uspjelo otvaranje usb id baze podataka Ne obraćamo pozornost, to ne utječ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 spojen na prijenosno računalo.

Morao sam se malo mučiti s kineskim graverom, jer kada sam pokušao instalirati njegov CH341SER upravljački program putem instalacijskog programa koji je došao s graverom (da, Arduino graver), USB/IP VHCI je ispustio Windows u BSOD. Međutim, instaliranje upravljačkog programa CH341SER na povezivanje uređaja putem usbip.exe riješilo je problem.

Zaključak: graver galami i puši u kuhinji s otvorenim prozorom i zatvorenim vratima, ja gledam proces pečenja iz druge sobe kroz vlastiti softver, koji ne osjeća caku.

Korišteni izvori:

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

Izvor: www.habr.com

Dodajte komentar