USB preko IP doma

Včasih želite delati z napravo, ki je povezana prek USB-ja, ne da bi jo imeli na mizi poleg prenosnika. Moja naprava je kitajski graver s 500 mW laserjem, ki je ob bližnjem stiku precej neprijeten. Poleg neposredne nevarnosti za oči se med delovanjem laserja sproščajo strupeni produkti izgorevanja, zato naj bo naprava v dobro prezračevanem prostoru in po možnosti izolirana od ljudi. Kako lahko nadzorujete takšno napravo? Po naključju sem našel odgovor na to vprašanje med brskanjem po repozitoriju OpenWRT v upanju, da bom našel primerno uporabo za stari usmerjevalnik D-Link DIR-320 A2. Za povezavo sem se odločil uporabiti prej opisano na Habréju. USB preko IP tunela, vendar so vsa navodila za namestitev izgubila pomen, zato pišem svoje.

OpenWRT je operacijski sistem, ki ga ni treba predstavljati, zato njegove namestitve ne bom opisoval. Za svoj usmerjevalnik sem vzel najnovejšo stabilno izdajo OpenWrt 19.07.3 in ga kot odjemalec povezal z glavno dostopno točko Wi-Fi in izbral način lan, da ne bi mučili požarnega zidu.

Strežniški del

Delujemo po uradna navodila. Po povezavi prek ssh namestite potrebne pakete.

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

Nato priključimo našo napravo na vrata USB usmerjevalnika (v mojem primeru naprave: zvezdišče USB, bliskovni pogon, na katerega je nameščen datotečni sistem usmerjevalnika (zaradi pomanjkanja prostora na notranjem pomnilniku) in neposredno na graver).

Poskusimo prikazati seznam povezanih naprav:

root@OpenWrt:~# usbip list -l

Prazno.

Z googlanjem so našli krivca, izkazalo se je, da je knjižnica libudev-fbsd.
Ročno izvlečemo najnovejšo delujočo različico iz repozitorija libudev_3.2-1 iz izdaje OpenWRT 17.01.7 za vašo arhitekturo, v mojem primeru je to libudev_3.2-1_mipsel_mips32.ipk. Z uporabo wget/scp ga prenesite v pomnilnik usmerjevalnika in znova namestite

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

Preverjamo:

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)

Kitajec, priključen na zvezdišče USB, je prejel bsuid 1-1.4. Ne pozabite.

Zdaj pa zaženimo demona:

root@OpenWrt:~# usbipd -D

in bindim Kitajce

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

Preverimo, ali vse deluje:

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

Če želite dodatno samodejno vezati napravo, uredimo /etc/rc.localz dodajanjem pred izhod 0 naslednje:

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

Stranka za stranke

Poskusimo napravo povezati z operacijskim sistemom Windows 10 po zgornjih navodilih z openwrt.org. Takoj bom rekel: ideja je obsojena na neuspeh. Prvič, upoštevan je samo Windows 7 x64. Drugič, podana je povezava do teme na sourceforge.net, ki predlaga prenos gonilnika, ki je bil popravljen leta 2014 iz Dropboxa. Ko ga poskušamo zagnati v sistemu Windows 10 in se povezati z našo napravo, dobimo naslednjo napako:

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

*** ERROR: cannot find device

To je posledica dejstva, da odjemalec ne deluje s strežnikom, zgrajenim za jedro, starejše od različice 3.14.
Strežnik usbip za OpenWRT 19.07.3 je zgrajen na jedru 4.14.180.

Ko nadaljujem z iskanjem, naletim na trenutni razvoj odjemalca Windows za github. V redu, navedena je podpora za Windows 10 x64, vendar je odjemalec le testni odjemalec, zato obstajajo številne omejitve.

Torej, najprej zahtevajo namestitev potrdila in dvakrat. V redu, dajmo ga v Trusted Root Certification Authority in Trusted Publishers.

Nato morate operacijski sistem postaviti v testni način. To dela ekipa

bcdedit.exe /set TESTSIGNING ON

Prvič mi ni uspelo, oviral sem se varno boot. Če ga želite onemogočiti, se morate znova zagnati v UEFI in varni zagon nastaviti na onemogočeno. Nekateri modeli prenosnih računalnikov bodo morda zahtevali nastavitev nadzorniškega gesla.

Po tem zaženite Windows in naredite bcdedit.exe /set TESTSIGNING ON
Vinda pravi, da je vse ok. Ponovno se zaženemo in v spodnjem desnem kotu vidimo besede Testni način, različico in številko gradnje OS.

Čemu so vse te manipulacije? Za namestitev nepodpisanega gonilnika USB/IP VHCI. Predlagamo, da to storite tako, da prenesete datoteke usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat in jih zaženete s skrbniškimi pravicami.

usbip.exe install

ali druga metoda, ročna namestitev starejše strojne opreme. Izbral sem drugo možnost, prejel opozorilo o namestitvi nepodpisanega gonilnika in se z njim strinjal.

Nato preverimo, ali imamo možnost povezave z oddaljeno napravo USB, tako da zaženemo ukaz:

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

dobimo seznam naprav:

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 napako usbip: napaka: ni uspelo odpreti podatkovne baze id usb Ne posvečamo pozornosti, to ne vpliva na delo.

Zdaj privežemo napravo:

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

To je to, Windows je zaznal novo napravo, zdaj lahko delate z njo, kot da bi bila fizično povezana s prenosnikom.

S kitajskim graverjem sem moral malo potrpeti, ker ko sem poskušal namestiti njegov gonilnik CH341SER prek namestitvenega programa, ki je bil priložen graverju (ja, graver Arduino), je USB/IP VHCI spustil Windows v BSOD. Vendar namestitev gonilnika CH341SER za povezava naprave prek usbip.exe je rešila težavo.

Pod črto: graver povzroča hrup in kadi v kuhinji pri odprtem oknu in zaprtih vratih, jaz opazujem proces gorenja iz drugega prostora prek lastne programske opreme, ki ne zaznava ulova.

Uporabljeni viri:

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

Vir: www.habr.com

Dodaj komentar