USB over IP kotona

Joskus haluat työskennellä USB-liitännän kautta kytketyn laitteen kanssa pitämättä sitä pöydällä kannettavan tietokoneen vieressä. Laitteeni on kiinalainen kaivertaja 500 mW laserilla, joka on melko epämiellyttävää läheisessä kosketuksessa. Välittömän silmien vaaran lisäksi laserkäytössä vapautuu myrkyllisiä palamistuotteita, joten laite tulee sijoittaa hyvin ilmastoituun tilaan ja mieluiten eristettynä ihmisistä. Miten tuollaista laitetta voi ohjata? Löysin vastauksen tähän kysymykseen vahingossa OpenWRT-arkistoa selaillessani toivoen löytäväni vanhalle D-Link DIR-320 A2 -reitittimelle sopivaa käyttöä. Yhdistämiseen päätin käyttää aiemmin Habrén kuvattua. USB over IP tunneliKaikki asennusohjeet ovat kuitenkin menettäneet merkityksensä, joten kirjoitan omani.

OpenWRT on käyttöjärjestelmä, joka ei kaipaa esittelyä, joten en kuvaile sen asennusta. Otin reitittimeeni OpenWrt:n uusimman vakaan version 19.07.3 ja liitin sen Wi-Fi-päätukiasemaan asiakkaana ja valitsin tilan. lan, jotta palomuuri ei vaivaudu.

Palvelimen osa

Toimimme sen mukaan viralliset ohjeet. Kun olet muodostanut yhteyden ssh:n kautta, asenna tarvittavat paketit.

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

Seuraavaksi yhdistämme laitteemme reitittimen USB-porttiin (minun tapauksessani laitteet: USB-keskitin, flash-asema, johon reitittimen tiedostojärjestelmä on asennettu (sisäisen muistin tilan puutteen vuoksi) ja suoraan kaivertaja).

Yritetään näyttää luettelo yhdistetyistä laitteista:

root@OpenWrt:~# usbip list -l

Tyhjä.

Googlaamalla syyllinen löytyi, se osoittautui kirjastoksi libudev-fbsd.
Poimimme uusimman toimivan version arkistosta käsin libudev_3.2-1 OpenWRT 17.01.7 -julkaisusta arkkitehtuurillesi, minun tapauksessani se on libudev_3.2-1_mipsel_mips32.ipk. Lataa se wget/scp:n avulla reitittimen muistiin ja asenna se uudelleen

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

tarkista:

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-keskittimeen kytketty kiinalainen mies sai virheilmoituksen 1-1.4. Muistaa.

Aloitetaan nyt demoni:

root@OpenWrt:~# usbipd -D

ja sitoa kiinalaisia

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

Tarkistetaan, että kaikki toimii:

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

Muokkaa, jos haluat sitoa laitteen edelleen automaattisesti /etc/rc.locallisäämällä ennen poistu 0 seuraavat:

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

Asiakkaan puolella

Yritetään yhdistää laite Windows 10:een yllä olevien ohjeiden avulla osoitteessa openwrt.org. Sanon heti: idea on tuomittu epäonnistumaan. Ensinnäkin vain Windows 7 x64 otetaan huomioon. Toiseksi, linkki löytyy sourceforge.net-sivuston säiettä, joka ehdottaa vuonna 2014 korjatun ohjaimen lataamista Dropboxista. Kun yritämme suorittaa sen Windows 10:ssä ja muodostaa yhteyden laitteeseen, saamme seuraavan virheilmoituksen:

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

*** ERROR: cannot find device

Tämä johtuu siitä, että asiakas ei toimi palvelimen kanssa, joka on rakennettu versiota 3.14 vanhemmalle ytimelle.
OpenWRT 19.07.3:n usbip-palvelin on rakennettu ytimelle 4.14.180.

Jatkaessani hakua törmäsin Windows-asiakkaan nykyiseen kehitykseen GitHub. Ok, tuki Windows 10 x64:lle on ilmoitettu, mutta asiakas on vain testiasiakas, joten siinä on useita rajoituksia.

Joten ensin he pyytävät asentamaan varmenteen ja kahdesti. Ok, laitetaan se Trusted Root Certification Authority- ja Trusted Publishers -palveluun.

Seuraavaksi sinun on asetettava käyttöjärjestelmä testitilaan. Tämän tekee tiimi

bcdedit.exe /set TESTSIGNING ON

En onnistunut ensimmäisellä kerralla, jäin tielle turvata boot. Jos haluat poistaa sen käytöstä, sinun on käynnistettävä uudelleen UEFI-verkkoon ja asetettava suojattu käynnistys pois päältä. Jotkin kannettavat tietokonemallit saattavat vaatia valvojan salasanan asettamisen.

Tämän jälkeen käynnistä Windows ja tee bcdedit.exe /set TESTSIGNING PÄÄLLE
Vinda sanoo, että kaikki on hyvin. Käynnistämme uudelleen ja näemme oikeassa alakulmassa sanat Test Mode, version ja OS build number.

Mitä varten nämä kaikki manipulaatiot ovat? Allekirjoittamattoman ohjaimen asentaminen USB/IP VHCI. On suositeltavaa tehdä tämä lataamalla tiedostot usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat ja suorittamalla järjestelmänvalvojan oikeuksilla

usbip.exe install

tai toinen tapa, asentamalla Legacy Hardware manuaalisesti. Valitsin toisen vaihtoehdon, sain varoituksen allekirjoittamattoman ohjaimen asentamisesta ja suostuin siihen.

Seuraavaksi tarkistamme, että pystymme muodostamaan yhteyden USB-etälaitteeseen suorittamalla komennon:

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

saamme luettelon laitteista:

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)

virheen takia usbip: virhe: usb id -tietokannan avaaminen epäonnistui Emme kiinnitä huomiota, se ei vaikuta työhön.

Nyt sidomme laitteen:

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

Siinä kaikki, Windows on havainnut uuden laitteen, nyt voit työskennellä sen kanssa ikään kuin se olisi fyysisesti kytketty kannettavaan tietokoneeseen.

Kiinan kaivertajan kanssa jouduin vähän kärsimään, koska kun yritin asentaa sen CH341SER-ohjainta kaivertajan mukana tulleen asennusohjelman kautta (kyllä, Arduino-kaivertaja), USB/IP VHCI pudotti Windowsin BSOD:iin. CH341SER-ohjaimen asentaminen kuitenkin до laitteen yhdistäminen usbip.exe:n kautta ratkaisi ongelman.

Pohjimmiltaan: kaivertaja melua ja polttaa keittiössä ikkuna auki ja ovi kiinni, katson polttoprosessia toisesta huoneesta oman ohjelmistoni kautta, joka ei tunne kiinni.

Käytetyt lähteet:

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

Lähde: will.com

Lisää kommentti