USB over IP a casa

A volte si ha il desiderio di lavorare con un dispositivo collegato tramite USB senza tenerlo sulla scrivania accanto al laptop. In questo caso, il mio dispositivo è un incisore laser cinese da 500 mW, un oggetto piuttosto scomodo in prossimità. Oltre al pericolo immediato per gli occhi, durante il funzionamento del laser si generano sostanze tossiche, quindi il dispositivo deve trovarsi in un ambiente ben ventilato e preferibilmente isolato dalle persone. Ma come gestire un dispositivo del genere? Ho trovato per caso la risposta a questa domanda mentre navigavo nel repository OpenWRT, sperando di trovare un'applicazione adeguata per un vecchio router D-Link DIR-320 A2. Per il collegamento ho deciso di utilizzare quanto descritto in precedenza su Habr. Tunnel USB over IP, tuttavia tutte le istruzioni per la sua installazione sono diventate obsolete, quindi scrivo la mia.

OpenWRT è un sistema operativo che non ha bisogno di presentazioni, quindi non entrerò nei dettagli sulla sua installazione. Per il mio router ho preso l'ultima versione stabile di OpenWrt 19.07.3 e l'ho collegato al punto di accesso principale tramite Wi-Fi come client, scegliendo la modalità lan, per non disturbare il firewall.

Parte server

Agiamo secondo le istruzioni ufficiali. Dopo la connessione via ssh, installiamo i pacchetti necessari.

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

Colleghiamo ora il nostro dispositivo alla porta USB del router (nel mio caso si tratta di: un hub USB, una chiavetta USB con il file system del router montato, a causa dello spazio insufficiente sul disco interno, e, direttamente, il incisore).

Proviamo a visualizzare l'elenco dei dispositivi connessi:

root@OpenWrt:~# usbip list -l

Vuoto.

Attraverso una ricerca su Google, abbiamo trovato il colpevole, che si è rivelato essere la libreria libudev-fbsd.
Estraiamo manualmente dalla repository l'ultima versione funzionante libudev_3.2-1 dalla release OpenWRT 17.01.7 per la nostra architettura, nel mio caso è libudev_3.2-1_mipsel_mips32.ipk. Utilizziamo wget/scp per caricarla nella memoria del router e reinstalliamola

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

Controllando:

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

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

Il cinese collegato all'hub USB ha ricevuto bsuid 1-1.4. Ricordato.

Ora avviamo il demone:

root@OpenWrt:~# usbipd -D

e bindiamo il cinese

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
Connessioni Internet attive (server e stabilite)
Proto Recv-Q Send-Q Indirizzo locale           Indirizzo estero         Stato       PID/Nome programma
tcp        0      0 0.0.0.0:3240            0.0.0.0:*               LISTEN      1884/usbipd

Per continuare a collegare il dispositivo automaticamente, modifichiamo /etc/rc.local, aggiungendo prima di exit 0 il seguente:

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

Parte client

Cerchiamo di collegare il dispositivo a Windows 10, utilizzando l’istruzione sopra menzionata di openwrt.org. Dico subito: l’idea è destinata a fallire. In primo luogo, viene considerato solo Windows 7 x64. In secondo luogo, viene fornito un link a un thread su sourceforge.net, nel quale si propone di scaricare da Dropbox un driver patchato nel 2014. Nel tentativo di eseguirlo su Windows 10 e collegarsi al nostro dispositivo, otteniamo un errore:

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

*** ERRORE: impossibile trovare il dispositivo

Questo è dovuto al fatto che il client non è compatibile con il server costruito su un kernel più vecchio della versione 3.14.
Il server usbip su OpenWRT 19.07.3 è costruito su un kernel 4.14.180.

Continuando la ricerca, mi imbatto in uno sviluppo attuale del client per Windows su github. Ok, è supportato Windows 10 x64, ma il cliente è solo un test, quindi ci sono alcune limitazioni.

Quindi, per prima cosa, ci chiedono di installare il certificato, e lo chiedono due volte. Ok, lo mettiamo in Autorità di certificazione radice attendibili e in Editor dei criteri di gruppo tendenzialmente attendibili.

Successivamente è necessario mettere il sistema operativo in modalità di test. Questo si fa con il comando

bcdedit.exe /set TESTSIGNING ON

Non ci sono riuscito la prima volta, a causa di secure boot. Per disattivarlo, è necessario riavviarsi in UEFI e impostare secure boot su disabilitato. Su alcuni modelli di laptop potrebbe essere necessario impostare una password supervisor.

Dopo di ciò, ci avviamo in Windows e facciamo bcdedit.exe /set TESTSIGNING ON
Windows dice che va tutto bene. Riavviamo di nuovo e vediamo nell'angolo in basso a destra la scritta Modalità di test, la versione e il numero di build del sistema operativo.

Qual è lo scopo di tutte queste manovre? Per installare un driver non firmato USB/IP VHCI. Si suggerisce di farlo scaricando i file usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat, ed eseguendo con diritti di amministratore

usbip.exe install

oppure il secondo metodo, l'installazione dell'hardware Legacy in modo manuale. Ho scelto la seconda opzione, ho ricevuto un avviso per l'installazione di un driver non firmato e ho acconsentito.

Iniziamo verificando se possiamo connetterci a un dispositivo USB remoto eseguendo il comando:

usbip.exe list -r

otteniamo l'elenco dei dispositivi:

c:Utilsusbip>usbip.exe list -r 192.168.31.203
usbip: errore: impossibile aprire il database degli id usb
Dispositivi USB esportabili
=========================
 - 192.168.31.203
      1-1.4: fornitore sconosciuto : prodotto sconosciuto (1a86:7523)
           : /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
           : classe sconosciuta / sotto classe sconosciuta / protocollo sconosciuto (ff/00/00)

sull'errore usbip: errore: impossibile aprire il database degli id usb non facciamo attenzione, non influisce sul funzionamento.

Ora bindiamo il dispositivo:

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

Tutto, Windows ha rilevato un nuovo dispositivo, ora è possibile utilizzarlo come se fosse fisicamente collegato al laptop.

Con il laser cinese ho dovuto faticare un po', poiché tentando di installare il suo driver CH341SER tramite l'installer fornito (sì, il laser è su Arduino), USB/IP VHCI faceva andare Windows in BSOD. Tuttavia, l'installazione del driver CH341SER fino a con il collegamento del dispositivo tramite usbip.exe risolveva il problema.

In sintesi: il laser fa rumore e fuma in cucina con la finestra aperta e la porta chiusa, osservo il processo di incisione da un'altra stanza attraverso il software originale, che non percepisce il trucco.

Fonti utilizzate:

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

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster