USB prin IP acasă

Uneori doriți să lucrați cu un dispozitiv conectat prin USB fără a-l ține pe masă lângă laptop. Dispozitivul meu este un gravor chinezesc cu un laser de 500 mW, ceea ce este destul de neplăcut când sunt în contact apropiat. Pe lângă pericolul imediat pentru ochi, în timpul funcționării laserului sunt eliberate produse de combustie toxice, astfel încât dispozitivul trebuie să fie amplasat într-o zonă bine ventilată și, de preferință, izolat de oameni. Cum poți controla un astfel de dispozitiv? Am găsit din greșeală răspunsul la această întrebare în timp ce răsfoiam depozitul OpenWRT în speranța de a găsi o utilizare demnă pentru vechiul router D-Link DIR-320 A2. Pentru a conecta, am decis să folosesc cel descris mai devreme pe Habré. Tunel USB peste IP, totuși, toate instrucțiunile de instalare și-au pierdut relevanța, așa că le scriu pe ale mele.

OpenWRT este un sistem de operare care nu are nevoie de prezentare, așa că nu voi descrie instalarea lui. Pentru routerul meu, am luat cea mai recentă versiune stabilă a OpenWrt 19.07.3 și am conectat-o ​​la punctul de acces Wi-Fi principal ca client, selectând modul lan, pentru a nu chinui firewall-ul.

Partea serverului

Acționăm conform instrucțiuni oficiale. După conectarea prin ssh, instalați pachetele necesare.

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

În continuare, ne conectăm dispozitivul la portul USB al routerului (în cazul meu, dispozitive: un hub USB, o unitate flash pe care este montat sistemul de fișiere al routerului (din cauza lipsei de spațiu pe stocarea internă) și, direct, gravor).

Să încercăm să afișăm o listă de dispozitive conectate:

root@OpenWrt:~# usbip list -l

Gol.

Căutând pe google, vinovatul a fost găsit, s-a dovedit a fi o bibliotecă libudev-fbsd.
Scoatem manual cea mai recentă versiune de lucru din depozit libudev_3.2-1 din versiunea OpenWRT 17.01.7 pentru arhitectura dvs., în cazul meu este libudev_3.2-1_mipsel_mips32.ipk. Folosind wget/scp, descărcați-l în memoria routerului și reinstalați-l

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

Verificăm:

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)

Un chinez conectat la un hub USB a primit un bsuid 1-1.4. Tine minte.

Acum să începem demonul:

root@OpenWrt:~# usbipd -D

și bindim pe chinezi

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

Să verificăm dacă totul funcționează:

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

Pentru a lega în continuare dispozitivul automat, să edităm /etc/rc.localprin adăugarea înainte iesirea 0 următor:

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

Partea clientului

Să încercăm să conectăm dispozitivul la Windows 10 utilizând instrucțiunile de mai sus de la openwrt.org. Voi spune imediat: ideea este sortită eșecului. În primul rând, este luat în considerare doar Windows 7 x64. În al doilea rând, este dat un link către un thread de pe sourceforge.net, care sugerează descărcarea unui driver corelat în 2014 din Dropbox. Când încercăm să-l rulăm sub Windows 10 și să ne conectăm la dispozitivul nostru, primim următoarea eroare:

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

*** ERROR: cannot find device

Acest lucru se datorează faptului că clientul nu funcționează cu un server construit pentru un nucleu mai vechi decât versiunea 3.14.
Serverul usbip pentru OpenWRT 19.07.3 este construit pe nucleul 4.14.180.

Continuându-mi căutările, dau peste dezvoltarea actuală a unui client Windows pentru github. Ok, se menționează suportul pentru Windows 10 x64, dar clientul este doar un client de testare, deci există o serie de limitări.

Deci, mai întâi ei cer să instaleze certificatul și de două ori. Ok, să-l punem în Trusted Root Certification Authority și Trusted Publishers.

Apoi, trebuie să puneți sistemul de operare în modul de testare. Acest lucru este realizat de o echipă

bcdedit.exe /set TESTSIGNING ON

Nu am reușit prima dată, am ieșit în cale încărcare sigură. Pentru a-l dezactiva, trebuie să reporniți în UEFI și să setați pornirea securizată pentru dezactivare. Unele modele de laptop pot necesita setarea unei parole de supervizor.

După aceea, porniți în Windows și faceți bcdedit.exe /set TESTSIGNING ON
Vinda spune că totul este în regulă. Repornim din nou și vedem în colțul din dreapta jos cuvintele Test Mode, version și OS build number.

Pentru ce sunt toate aceste manipulări? Pentru a instala un driver nesemnat USB/IP VHCI. Se recomandă să faceți acest lucru prin descărcarea fișierelor usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat și rulând cu drepturi de administrator.

usbip.exe install

sau a doua metodă, instalarea manuală a Legacy Hardware. Am ales a doua opțiune, am primit un avertisment despre instalarea unui driver nesemnat și am fost de acord cu acesta.

În continuare, verificăm că avem capacitatea de a ne conecta la un dispozitiv USB la distanță prin rularea comenzii:

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

primim o listă de dispozitive:

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)

pentru o greseala usbip: eroare: eșuarea deschiderii bazei de date usb ID Nu acordăm atenție, nu afectează munca.

Acum legăm dispozitivul:

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

Gata, Windows a detectat un dispozitiv nou, acum poți lucra cu el ca și cum ar fi conectat fizic la laptop.

A trebuit să sufăr puțin cu gravorul chinezesc, pentru că atunci când am încercat să-i instalez driverul CH341SER prin programul de instalare care a venit cu gravorul (da, un gravator Arduino), USB/IP VHCI a introdus Windows în BSOD. Cu toate acestea, instalarea driverului CH341SER la conectarea dispozitivului prin usbip.exe a rezolvat problema.

Concluzia: gravorul face zgomot și fumează în bucătărie cu fereastra deschisă și ușa închisă, urmăresc procesul de ardere dintr-o altă cameră prin intermediul propriului software, care nu simte o captură.

Surse folosite:

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

Sursa: www.habr.com

Adauga un comentariu