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
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
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:
izvor: www.habr.com