USB üle IP kodustes tingimustes

Mõnikord tekib soov töötada USB-ühendusega seadmega, hoides seda mitte laua ääres koos sülearvutiga. Minu seadme puhul on tegemist Hiina lasergraveerijaga, mille võimsus on 500 mW, see on üsna ebameeldiv lähedases kontakts. Lisaks silmade otsesele ohule vabastavad laseritööd toksilised põletustooted, seega peab seade olema hästi ventileeritavas ruumis ning soovitatavalt eraldatud inimestest. Kuidas aga sellist seadet juhtida? Vastuse sellele küsimusele leidsin juhuslikult, kui sirvisin OpenWRT reposi, lootes leida väärikat rakendust vanale D-Link DIR-320 A2 ruuterile. Ühenduse loomiseks otsustasin kasutada varem Habr's kirjeldatud meetodit USB üle IP tunnel, kuid kõik juhised selle installimiseks on kaotanud oma aktuaalsuse, seega kirjutan enda.

OpenWRT on operatsioonisüsteem, mis ei vajane tutvustamist, seega ei hakka ma selle installimist detailidesse minema. Otsustasin oma ruuteri jaoks võtta viimase stabiilse OpenWrt 19.07.3 versiooni ning ühendasin selle põhigaažiga Wi-Fi kaudu kliendina, valides režiimi lan, et mitte tulemüüri müüa.

Serveripool

Käime vastavalt ametlikule juhendile. Pärast SSH kaudu ühendamist paigaldame vajalikud paketid.

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

Seejärel ühendame meie seadme ruuteri USB-porti (minu juhul seade: USB-hub, mälupulk, kuhu on mountitud ruuteri failisüsteem (sisemise mälutalletuse puudumise tõttu), ja konkreetselt graveerija).

Proovime välja tuua ühendatud seadmete nimekirja:

root@OpenWrt:~# usbip list -l

Tühi.

Otsingute kaudu leidsime süüdlase, kelleks osutus teek libudev-fbsd.
Käime käsitsi välja viimasest toimivast versioonist libudev_3.2-1 OpenWRT 17.01.7 väljaandest oma arhitektuuri jaoks, minu puhul on see libudev_3.2-1_mipsel_mips32.ipk. Kasutades wget/scp, laadime selle ruuteri mälu ja uuesti paigaldame

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

Kontrollin:

root@OpenWrt:~# usbip list -l
 - busid 1-1.1 (090c:1000)
   Silicon Motion, Inc. - Taiwan (endise Feiya Technology Corp.) : Flash Drive (090c:1000)

 - busid 1-1.4 (1a86:7523)
   QinHeng Electronics : HL-340 USB-Serial adapter (1a86:7523)

Hiina seade, mis on ühendatud USB-hubi, sai bsuid 1-1.4. Meeles pidasime.

Nüüd käivitage demon:

root@OpenWrt:~# usbipd -D

ja sidume hiina seadme

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

Kontrollime, et kõik töötab:

root@OpenWrt:/home# netstat -alpt
Aktiivsed Interneti-ühendused (serverid ja kehtivad)
Proto Vastuvõtt-Q Saatmine-Q Kohalik Aadress           Võõras Aadress         Oleku       PID/Programmi nimi
tcp        0      0 0.0.0.0:3240            0.0.0.0:*               KUULAMINE      1884/usbipd

Et seadet automaatselt siduda, redigeerime /etc/rc.local, lisades enne exit 0 järgmise:

usbipd -D &
'indeks 1
usbip bind -b 1-1.4

Kliendi osa

Proovime seadme Windows 10-sse ühendada, kasutades eespool mainitud juhist openwrt.org-ist. Ütlen kohe: see katse on hukatuslik. Esiteks, arvesse võetakse ainult Windows 7 x64. Teiseks, antakse link tühjusele sourceforge.net-is, kus pakutakse 2014. aastal Dropboxi kaudu allalaadimist muudetud draiverit. Kui püüame seda Windows 10 all käivitada ja meie seadmega ühendust luua, saame vea:

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

*** VIGA: seadet ei leitud

See on tingitud sellest, et klient ei tööta serveriga, mis on kompileeritud tuumale, mis on vanem kui versioon 3.14.
OpenWRT 19.07.3 usbip server on kompileeritud tuumal 4.14.180.

Otsingute jätkamisel leian asjakohase Windowsi kliendi arenduse github. Okei, on välja kuulutatud Windows 10 x64 tugi, kuid klient on rangelt katsetatav, seega on mitmeid piiranguid.

Nii, kõigepealt palutakse sertifikaat installida, ja seda kahel korral. Okei, paneme selle Trusted Root Certification Authority ja Trusted Publishers sektsioonidesse.

Seejärel tuleb operatsioonisüsteem testrežiimile viia. Seda saab teha käskluse abil

bcdedit.exe /set TESTSIGNING ON

Esimese korraga ei õnnestunud, segas secure boot.Selle deaktivimiseks tuleb taaskäivitada UEFI-s ja seadistada secure boot - disable. Mõnel sülearvuti mudelil võib osutuda vajalikuks sihvtähtaegade parooli seadmine.

Pärast seda käivitame Windowsi ja teeme. bcdedit.exe /set TESTSIGNING ON
Windows ütleb, et kõik on korras. Taaskäivitame ja näeme paremas alanurgas kirja Test Mode, versiooni ja operatsioonisüsteemi build number'i.

Miks need kõik manipulatsioonid vajalikud on? Et installida allkirjastamata draiverit USB/IP VHCI.Seda tehakse, laadides alla failid usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat ja jõudma administraatori õigustega

usbip.exe install

või teine meetod, Legacy Hardware käsitsi installimine. Valisin teise variandi, sain hoiatusi allkirjastamata draiveri installimise kohta ja nõustusin sellega.

Seejärel kontrollime, kas meil on võimalik ühendada eemalolev USB-seade, kasutades käsku:

usbip.exe list -r

saame seadmete nimekirja:

c:Utilsusbip>usbip.exe list -r 192.168.31.203
usbip: viga: ei suutnud avada usb id andmebaasi
Eksporditavad USB-seadmed
======================
 - 192.168.31.203
      1-1.4: tundmatu tootja: tundmatu toode (1a86:7523)
           : /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
           : tundmatu klass / tundmatu alamklass / tundmatu protokoll (ff/00/00)

vigast usbip: viga: ei suutnud avada usb id andmebaasi ära pane sellele tähele, see ei mõjuta tööd.

Nüüd kinnitame seadme:

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

Kõik, Windows tuvastas uue seadme, nüüd saab seda kasutada nagu see oleks füüsiliselt ühendatud sülearvutiga.

Hiina graveerijaga pidi veidi vaeva nägema, kuna proovides installida selle draiverit CH341SER kaasasoleva installijaga (jah, graveerija on Arduino), USB/IP VHCI kukutas Windowsi BSOD-i. Siiski, draiveri CH341SER kuni seadmise kaudu usbip.exe lahendas probleemi.

Kokkuvõte: graveerija mürab ja suitsustab köögis avatud aknaga ja suletud uksega, jälgin graveerimisprotsessi teisest toast läbi kaasneva tarkvara, mis ei tunne mingit petmist.

Kasutatud allikad:

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

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster