A volte si ha la voglia di lavorare con un dispositivo collegato tramite USB senza tenerlo sulla scrivania accanto al laptop. Nel mio caso, il dispositivo è una fresatrice laser cinese da 500 mW, piuttosto fastidiosa in caso di contatto ravvicinato. Oltre al pericolo immediato per gli occhi, durante il funzionamento del laser vengono emessi prodotti di combustione tossici, quindi l'apparecchio deve essere posizionato in un ambiente ben ventilato e idealmente isolato dalle persone. Ma come si può controllare un dispositivo del genere? La risposta a questa domanda l'ho trovata per caso mentre esaminavo il repository di OpenWRT nella speranza di trovare un uso adeguato per il vecchio router D-Link DIR-320 A2. Ho deciso di utilizzare l'impostazione descritta in precedenza su Habr. Tunnel USB over IP, ma tutte le istruzioni per la sua installazione avevano già perso di attualità, quindi scrivo la mia.
OpenWRT è un sistema operativo che non ha bisogno di presentazioni, quindi non entrerò nei dettagli della 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 sovraccaricare il firewall.
Parte server
Procediamo secondo . Dopo essersi connessi via ssh, installiamo i pacchetti necessari.
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-ohci usbip-server usbip-clientColleghiamo quindi il nostro dispositivo alla porta USB del router (nel mio caso i dispositivi sono: un hub USB, una penna USB su cui è montato il file system del router, a causa della mancanza di spazio sul disco interno e, direttamente, la fresatrice).
Proviamo a visualizzare l'elenco dei dispositivi collegati:
root@OpenWrt:~# usbip list -lVuoto.
Cercando su Google, ho trovato il colpevole, che si è rivelato essere la libreria libudev-fbsd.
Estrarremo manualmente dal repository l'ultima versione funzionante libudev_3.2-1 dalla versione di OpenWRT 17.01.7 per la mia architettura, nel mio caso è libudev_3.2-1_mipsel_mips32.ipk. Utilizzando wget/scp, la carichiamo nella memoria del router e reinstalla
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 (già 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 -De facciamo il bind al cinese
root@OpenWrt:~# usbip bind -b 1-1.4
usbip: info: bind device on busid 1-1.4: completeControlliamo 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/usbipdPer legare automaticamente il dispositivo in seguito, modifichiamo /etc/rc.local, aggiungendo prima di exit 0 quanto segue:
usbipd -D &
sleep 1
usbip bind -b 1-1.4La parte client
Proviamo a collegare il dispositivo a Windows 10, utilizzando le istruzioni sopra menzionate da openwrt.org. Dico subito: l'idea è destinata a fallire. In primo luogo, si considera solo Windows 7 x64. In secondo luogo, è fornito un link a un thread su sourceforge.net, in cui si propone di scaricare da Dropbox un driver patchato nel 2014. Tentando di avviarlo su Windows 10 e collegandoci al nostro dispositivo riceviamo un errore:
c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip per windows ($Id$)
*** ERRORE: impossibile trovare il dispositivo Ciò è dovuto al fatto che il client non funziona con un server compilato con un kernel più vecchio della versione 3.14.
Il server usbip su OpenWRT 19.07.3 è compilato con il kernel 4.14.180.
Continuando la ricerca, mi imbatto in uno sviluppo attuale del client per Windows su . Ok, si dichiara il supporto per Windows 10 x64, ma il client è esclusivamente in fase di test, quindi ci sono diverse limitazioni.
Quindi, prima ci viene chiesto di installare il certificato, e lo si fa due volte. Ok, lo mettiamo nella Trusted Root Certification Authority e in Trusted Publishers.
Dopodiché, è necessario mettere il sistema operativo in modalità di test. Questo si fa con il comando
bcdedit.exe /set TESTSIGNING ONAl primo tentativo non ci sono riuscito, c'è stato un problema con secure boot. Per disabilitarlo è necessario riavviarsi in UEFI e impostare secure boot — disabilitato. Su alcuni modelli di laptop potrebbe essere necessaria l'impostazione di una password da supervisore.
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 dicitura Modalità Test, versione e numero di build del sistema operativo.
A cosa servono tutte queste manovre? Per installare un driver non firmato USB/IP VHCI. Si propone di farlo scaricando i file usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat, e eseguendo con diritti di amministratore
usbip.exe installoppure un secondo metodo, l'installazione di Legacy Hardware manualmente. Ho scelto il secondo opzione, ho ricevuto un avviso sull'installazione di un driver non firmato e ho acconsentito.
Dopo controlliamo di avere la possibilità di collegarci a un dispositivo USB remoto eseguendo il comando:
usbip.exe list -rriceviamo 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: venditore sconosciuto : prodotto sconosciuto (1a86:7523)
: /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
: classe sconosciuta / sottoclasse sconosciuta / protocollo sconosciuto (ff/00/00)all'errore usbip: errore: impossibile aprire il database degli ID USB non prestiamo attenzione, non influisce sul lavoro.
Ora stiamo collegando il dispositivo:
c:Utilsusbip>usbip.exe attach -r 192.168.31.203 -b 1-1.4Tutto, Windows ha rilevato un nuovo dispositivo, ora puoi lavorare con esso come se fosse fisicamente collegato al laptop.
Con il incisore cinese ho dovuto faticare un po', perché quando ho provato a installare il suo driver CH341SER tramite l'installer fornito (sì, l'incisore è su Arduino), USB/IP VHCI faceva cadere Windows in BSOD. Tuttavia, l'installazione del driver CH341SER fino a per il collegamento del dispositivo tramite usbip.exe ha risolto il problema.
Risultato: l'incisore fa rumore e fuma in cucina con la finestra aperta e la porta chiusa, io osservo il processo di incisione da un'altra stanza tramite il software originale, che non percepisce trucchi.
Fonti utilizzate:
Fonte: habr.com
