USB sobre IP a casa

De vegades, voleu treballar amb un dispositiu connectat mitjançant USB sense tenir-lo a la taula al costat del vostre ordinador portàtil. El meu dispositiu és un gravador xinès amb un làser de 500 mW, que és força desagradable quan està en contacte proper. A més del perill immediat per als ulls, els productes de combustió tòxics s'alliberen durant el funcionament del làser, de manera que el dispositiu s'ha d'ubicar en una zona ben ventilada i preferiblement aïllat de les persones. Com es pot controlar un dispositiu així? He trobat accidentalment la resposta a aquesta pregunta mentre navegava pel repositori OpenWRT amb l'esperança de trobar un ús digne per a l'antic encaminador D-Link DIR-320 A2. Per connectar-me, vaig decidir utilitzar el descrit anteriorment a Habré. Túnel USB sobre IP, però, totes les instruccions per instal·lar-lo han perdut la seva rellevància, així que escric les meves.

OpenWRT és un sistema operatiu que no necessita cap presentació, així que no descriuré la seva instal·lació. Per al meu encaminador, vaig agafar la darrera versió estable d'OpenWrt 19.07.3 i la vaig connectar al punt d'accés Wi-Fi principal com a client, seleccionant el mode len, per no turmentar el tallafoc.

Part del servidor

Actuem segons instruccions oficials. Després de connectar-vos mitjançant ssh, instal·leu els paquets necessaris.

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

A continuació, connectem el nostre dispositiu al port USB de l'encaminador (en el meu cas, dispositius: un concentrador USB, una unitat flash on està muntat el sistema de fitxers de l'encaminador (per manca d'espai a l'emmagatzematge intern) i, ​​directament, el gravador).

Intentem mostrar una llista de dispositius connectats:

root@OpenWrt:~# usbip list -l

Buit.

En buscar a Google el culpable, va resultar que era una biblioteca libudev-fbsd.
Traiem la darrera versió de treball del repositori a mà libudev_3.2-1 de la versió d'OpenWRT 17.01.7 per a la vostra arquitectura, en el meu cas és libudev_3.2-1_mipsel_mips32.ipk. Amb wget/scp, descarregueu-lo a la memòria de l'encaminador i torneu-lo a instal·lar

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

Comprovem:

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 xinès connectat a un concentrador USB va rebre un bsuid 1-1.4. Recordeu.

Ara comencem el dimoni:

root@OpenWrt:~# usbipd -D

i bindim els xinesos

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

Comprovem que tot funciona:

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 vincular encara més el dispositiu automàticament, editem /etc/rc.localafegint abans exit 0 el següent:

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

costat del client

Intentem connectar el dispositiu a Windows 10 mitjançant les instruccions anteriors d'openwrt.org. Diré de seguida: la idea està condemnada al fracàs. En primer lloc, només es considera Windows 7 x64. En segon lloc, es dóna un enllaç a un fil a sourceforge.net, que suggereix descarregar un controlador pegat el 2014 des de Dropbox. Quan intentem executar-lo amb Windows 10 i connectar-nos al nostre dispositiu, obtenim el següent error:

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

*** ERROR: cannot find device

Això es deu al fet que el client no funciona amb un servidor creat per a un nucli anterior a la versió 3.14.
El servidor usbip per a OpenWRT 19.07.3 es basa en el nucli 4.14.180.

Continuant la meva recerca, em trobo amb el desenvolupament actual d'un client de Windows per GitHub. D'acord, s'indica el suport per a Windows 10 x64, però el client només és un client de prova, de manera que hi ha una sèrie de limitacions.

Per tant, primer demanen instal·lar el certificat, i dues vegades. D'acord, posem-ho a Trusted Root Certification Authority i Trusted Publishers.

A continuació, heu de posar el sistema operatiu en mode de prova. Això ho fa un equip

bcdedit.exe /set TESTSIGNING ON

No vaig tenir èxit la primera vegada, em vaig posar en el camí arrencada segura. Per desactivar-lo, heu de reiniciar a UEFI i configurar l'arrencada segura per desactivar-la. Alguns models de portàtils poden requerir establir una contrasenya de supervisor.

Després d'això, arrenqueu Windows i feu-ho bcdedit.exe /set TESTSIGNING ON
Vinda diu que tot està bé. Reiniciem de nou i veiem a la cantonada inferior dreta les paraules Test Mode, version i OS build number.

Per a què serveixen totes aquestes manipulacions? Per instal·lar un controlador sense signar USB/IP VHCI. Es recomana fer-ho baixant els fitxers usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat i executant-los amb drets d'administrador.

usbip.exe install

o el segon mètode, instal·lar manualment el maquinari heretat. Vaig triar la segona opció, vaig rebre un avís sobre la instal·lació d'un controlador sense signar i vaig estar d'acord amb ell.

A continuació, comprovem que tenim la possibilitat de connectar-nos a un dispositiu USB remot executant l'ordre:

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

obtenim una llista de dispositius:

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 error usbip: error: no s'ha pogut obrir la base de dades d'identificació d'usb No fem cas, no afecta la feina.

Ara enllacem el dispositiu:

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

Això és tot, Windows ha detectat un nou dispositiu, ara pots treballar-hi com si estigués físicament connectat a l'ordinador portàtil.

Vaig haver de patir una mica amb el gravador xinès, perquè quan vaig intentar instal·lar el seu controlador CH341SER mitjançant l'instal·lador que venia amb el gravador (sí, un gravador Arduino), USB/IP VHCI va deixar caure Windows a BSOD. Tanmateix, instal·lant el controlador CH341SER до connectar el dispositiu mitjançant usbip.exe va resoldre el problema.

Conclusió: el gravador fa soroll i fuma a la cuina amb la finestra oberta i la porta tancada, miro el procés de crema des d'una altra habitació a través del meu propi programari, que no detecta cap presa.

Fonts utilitzades:

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

Font: www.habr.com

Afegeix comentari