USB üle IP kodus

Mõnikord soovite töötada USB kaudu ühendatud seadmega, hoidmata seda sülearvuti kõrval laual. Minu seadmeks on Hiina graveerija 500 mW laseriga, mis on lähikontaktis üsna ebameeldiv. Lisaks otsesele ohule silmadele eralduvad laseri töö käigus mürgised põlemissaadused, mistõttu peaks seade asuma hästi ventileeritavas kohas ning eelistatavalt inimestest eraldatud. Kuidas saab sellist seadet juhtida? Sellele küsimusele leidsin vastuse kogemata OpenWRT hoidlast sirvides, lootuses leida vanale D-Link DIR-320 A2 ruuterile väärilist kasutust. Ühenduse loomiseks otsustasin kasutada varem Habrel kirjeldatud. USB üle IP tunneliKuid kõik selle installimisjuhised on kaotanud oma tähtsuse, nii et kirjutan oma.

OpenWRT on operatsioonisüsteem, mis ei vaja tutvustamist, nii et ma ei kirjelda selle installimist. Võtsin oma ruuteri jaoks OpenWrt uusima stabiilse versiooni 19.07.3 ja ühendasin selle kliendina peamise Wi-Fi pääsupunktiga, valides režiimi lan, et mitte tulemüüri piinata.

Serveri osa

Me käitume vastavalt ametlikud juhised. Pärast ssh kaudu ühendamist installige vajalikud paketid.

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

Järgmisena ühendame oma seadme ruuteri USB-porti (minu puhul seadmed: USB-jaotur, mälupulk, millele on ühendatud ruuteri failisüsteem (sisemälus ruumipuuduse tõttu) ja otse graveerija).

Proovime kuvada ühendatud seadmete loendit:

root@OpenWrt:~# usbip list -l

Tühi.

Guugeldades leiti süüdlane, selgus, et tegemist on raamatukoguga libudev-fbsd.
Tõmbame hoidlast käsitsi välja uusima tööversiooni libudev_3.2-1 OpenWRT 17.01.7 väljalasest teie arhitektuuri jaoks, minu puhul on see libudev_3.2-1_mipsel_mips32.ipk. Wget/scp abil laadige see alla ruuteri mällu ja installige uuesti

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

Kontrollime:

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)

USB-jaoturiga ühendatud hiinlane sai bsuudi 1-1.4. Pea meeles.

Nüüd alustame deemonit:

root@OpenWrt:~# usbipd -D

ja siduma hiinlasi

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

Kontrollime, kas kõik töötab:

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

Seadme täiendavaks automaatseks sidumiseks muutkem /etc/rc.localenne lisades väljumine 0 järgmine:

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

Kliendi pool

Proovime ühendada seadme Windows 10-ga, kasutades ülaltoodud juhiseid saidilt openwrt.org. Ütlen kohe: idee on määratud läbikukkumisele. Esiteks võetakse arvesse ainult Windows 7 x64. Teiseks antakse link sourceforge.net lõimele, mis soovitab Dropboxist alla laadida 2014. aastal paigatud draiver. Kui proovime seda Windows 10 all käitada ja oma seadmega ühendust luua, kuvatakse järgmine tõrketeade:

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

*** ERROR: cannot find device

Selle põhjuseks on asjaolu, et klient ei tööta serveriga, mis on ehitatud vanemale kui versioon 3.14 kernelile.
OpenWRT 19.07.3 usbip-server on üles ehitatud kernelile 4.14.180.

Otsingut jätkates puutun kokku Windowsi kliendi praeguse arendusega github. Ok, Windows 10 x64 tugi on märgitud, kuid klient on ainult testklient, seega on mitmeid piiranguid.

Niisiis, kõigepealt palutakse sertifikaat installida ja kaks korda. Ok, paneme selle Trusted Root Certification Authority ja Trusted Publishers alla.

Järgmisena peate panema operatsioonisüsteemi testrežiimi. Seda teeb meeskond

bcdedit.exe /set TESTSIGNING ON

Esimese korraga ei õnnestunud, jäin vahele kindlustada boot. Selle keelamiseks peate taaskäivitama UEFI-sse ja määrama turvalise alglaadimise keelamiseks. Mõned sülearvutimudelid võivad vajada juhendaja parooli seadistamist.

Pärast seda käivitage Windows ja tehke seda bcdedit.exe /set TESTSIGNING ON
Vinda ütleb, et kõik on korras. Taaskäivitame uuesti ja paremas alanurgas näeme sõnu Test Mode, version ja OS build number.

Milleks kõik need manipulatsioonid? Signeerimata draiveri installimiseks USB/IP VHCI. Soovitatav on seda teha, laadides alla failid usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat ja käivitades administraatori õigustega

usbip.exe install

või teine ​​meetod, pärandriistvara käsitsi installimine. Valisin teise variandi, sain hoiatuse allkirjastamata draiveri installimise kohta ja nõustusin sellega.

Järgmisena kontrollime, kas meil on võimalus luua ühendus USB-kaugseadmega, käivitades käsu:

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

saame seadmete loendi:

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)

vea eest usbip: viga: usb id andmebaasi avamine ebaõnnestus Me ei pööra tähelepanu, see ei mõjuta tööd.

Nüüd seome seadme:

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

See on kõik, Windows tuvastas uue seadme, nüüd saate sellega töötada nii, nagu see oleks sülearvutiga füüsiliselt ühendatud.

Hiina graveerijaga pidin veidi kannatama, sest kui proovisin selle CH341SER draiverit läbi graveerijaga kaasas olnud installeri (jah, Arduino graveerija) installeerida, siis USB/IP VHCI kukutas Windowsi BSOD-i. Kuid CH341SER draiveri installimine kuni seadme ühendamine usbip.exe kaudu lahendas probleemi.

Kokkuvõte: graveerija teeb lahtise akna ja kinnise uksega köögis häält ja suitsetab, põlemisprotsessi jälgin teisest toast läbi oma tarkvara, mis ei taju saagi.

Kasutatud allikad:

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

Allikas: www.habr.com

Lisa kommentaar