USB su IP a casa

A volte vuoi lavorare con un dispositivo collegato tramite USB senza tenerlo sul tavolo accanto al tuo laptop. Il mio dispositivo è un incisore cinese con un laser da 500 mW, il che è piuttosto sgradevole a stretto contatto. Oltre al pericolo immediato per gli occhi, durante il funzionamento del laser vengono rilasciati prodotti di combustione tossici, pertanto il dispositivo deve essere posizionato in un'area ben ventilata e preferibilmente isolato dalle persone. Come puoi controllare un dispositivo del genere? Ho trovato per caso la risposta a questa domanda mentre esploravo il repository OpenWRT nella speranza di trovare un degno utilizzo per il vecchio router D-Link DIR-320 A2. Per connettermi ho deciso di utilizzare quello descritto prima su Habré. Tunnel USB su IP, tuttavia, tutte le istruzioni per installarlo hanno perso la loro rilevanza, quindi scrivo le mie.

OpenWRT è un sistema operativo che non ha bisogno di presentazioni, quindi non descriverò la sua installazione. Per il mio router ho preso l'ultima versione stabile di OpenWrt 19.07.3, e l'ho collegato all'access point Wi-Fi principale come client, selezionando la modalità lan, per non tormentare il firewall.

Parte server

Agiamo secondo istruzioni ufficiali. Dopo esserti connesso tramite ssh, installa i pacchetti necessari.

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

Successivamente colleghiamo il nostro dispositivo alla porta USB del router (nel mio caso, dispositivi: un hub USB, una chiavetta su cui è montato il file system del router (per mancanza di spazio sulla memoria interna) e, direttamente, il incisore).

Proviamo a visualizzare un elenco dei dispositivi collegati:

root@OpenWrt:~# usbip list -l

È vuoto

Cercando su Google è stato trovato il colpevole, si è scoperto che era una biblioteca libudev-fbsd.
Estraiamo manualmente l'ultima versione funzionante dal repository libudev_3.2-1 dalla versione OpenWRT 17.01.7 per la tua architettura, nel mio caso è libudev_3.2-1_mipsel_mips32.ipk. Usando wget/scp, scaricalo nella memoria del router e reinstallalo

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

Controlliamo:

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 uomo cinese collegato a un hub USB ha ricevuto un bsuid 1-1.4. Ricordare.

Ora avviamo il demone:

root@OpenWrt:~# usbipd -D

e bindim i cinesi

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

Controlliamo che tutto funzioni:

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

Per associare ulteriormente il dispositivo automaticamente, modifichiamo /etc/rc.localaggiungendo prima esci da 0 Il seguente:

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

Dalla parte del cliente

Proviamo a connettere il dispositivo a Windows 10 utilizzando le istruzioni sopra riportate da openwrt.org. Lo dirò subito: l'idea è destinata al fallimento. Innanzitutto viene considerato solo Windows 7 x64. In secondo luogo, viene fornito un collegamento a un thread su sourceforge.net, che suggerisce di scaricare un driver patchato nel 2014 da Dropbox. Quando proviamo a eseguirlo su Windows 10 e a connetterci al nostro dispositivo, riceviamo il seguente errore:

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

*** ERROR: cannot find device

Ciò è dovuto al fatto che il client non funziona con un server creato per un kernel precedente alla versione 3.14.
Il server usbip per OpenWRT 19.07.3 è basato sul kernel 4.14.180.

Continuando la mia ricerca, mi imbatto nell'attuale sviluppo di un client Windows per github. Ok, è dichiarato il supporto per Windows 10 x64, ma il client è solo un client di prova, quindi ci sono una serie di limitazioni.

Quindi, prima chiedono di installare il certificato e due volte. Ok, inseriamolo nell'Autorità di certificazione radice attendibile e negli Editori attendibili.

Successivamente, è necessario mettere il sistema operativo in modalità test. Questo viene fatto da una squadra

bcdedit.exe /set TESTSIGNING ON

Non ci sono riuscito la prima volta, mi sono messo di mezzo garantire avvio. Per disabilitarlo, è necessario riavviare in UEFI e impostare l'avvio sicuro su disabilitato. Alcuni modelli di laptop potrebbero richiedere l'impostazione di una password del supervisore.

Successivamente, avvia Windows e fai bcdedit.exe /set FIRMA TEST ATTIVA
Vinda dice che va tutto bene. Riavviamo di nuovo e vediamo nell'angolo in basso a destra la scritta Modalità test, versione e numero di build del sistema operativo.

A cosa servono tutte queste manipolazioni? Per installare un driver non firmato USB/IPVHCI. Si consiglia di farlo scaricando i file usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat ed eseguendo i diritti di amministratore

usbip.exe install

oppure il secondo metodo, installando manualmente l'hardware legacy. Ho scelto la seconda opzione, ho ricevuto un avviso relativo all'installazione di un driver non firmato e ho accettato.

Successivamente, controlliamo di avere la possibilità di connetterci a un dispositivo USB remoto eseguendo il comando:

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

otteniamo un elenco di dispositivi:

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)

per un errore usbip: errore: impossibile aprire il database degli ID USB Non prestiamo attenzione, non influisce sul lavoro.

Ora colleghiamo il dispositivo:

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

Questo è tutto, Windows ha rilevato un nuovo dispositivo, ora puoi lavorarci come se fosse fisicamente collegato al laptop.

Ho dovuto soffrire un po' con l'incisore cinese, perché quando ho provato a installare il suo driver CH341SER tramite il programma di installazione fornito con l'incisore (sì, un incisore Arduino), USB/IP VHCI ha fatto cadere Windows in BSOD. Tuttavia, installando il driver CH341SER a collegando il dispositivo tramite usbip.exe il problema è stato risolto.

In conclusione: l'incisore fa rumore e fuma in cucina con la finestra aperta e la porta chiusa, io guardo il processo di masterizzazione da un'altra stanza attraverso il mio software, che non rileva alcun problema.

Fonti utilizzate:

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

Fonte: habr.com

Aggiungi un commento