USB sobre IP na casa

Ás veces queres traballar cun dispositivo conectado mediante USB sen mantelo sobre a mesa xunto ao teu portátil. O meu dispositivo é un gravador chinés cun láser de 500 mW, o que é bastante desagradable cando está en contacto próximo. Ademais do perigo inmediato para os ollos, durante o funcionamento do láser lánzanse produtos de combustión tóxicos, polo que o dispositivo debe estar situado nunha zona ben ventilada e preferiblemente illado das persoas. Como podes controlar un dispositivo así? Atopei accidentalmente a resposta a esta pregunta mentres navegaba polo repositorio OpenWRT coa esperanza de atopar un uso digno para o antigo enrutador D-Link DIR-320 A2. Para conectar, decidín utilizar o descrito anteriormente en Habré. Túnel USB sobre IP, non obstante, todas as instrucións para instalalo perderon a súa relevancia, polo que escribo a miña.

OpenWRT é un sistema operativo que non necesita presentación, polo que non vou describir a súa instalación. Para o meu enrutador, tomei a última versión estable de OpenWrt 19.07.3 e conecteuna ao punto de acceso Wi-Fi principal como cliente, seleccionando o modo lan, para non atormentar o cortalumes.

Parte do servidor

Actuamos segundo instrucións oficiais. Despois de conectarse mediante ssh, instale os paquetes necesarios.

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

A continuación, conectamos o noso dispositivo ao porto USB do router (no meu caso, dispositivos: un concentrador USB, unha unidade flash na que está montado o sistema de ficheiros do router (por falta de espazo no almacenamento interno) e, directamente, o gravador).

Tentemos mostrar unha lista de dispositivos conectados:

root@OpenWrt:~# usbip list -l

Baleiro.

Ao buscar en Google o culpable, resultou ser unha biblioteca libudev-fbsd.
Extraemos a última versión de traballo do repositorio a man libudev_3.2-1 da versión OpenWRT 17.01.7 para a súa arquitectura, no meu caso é libudev_3.2-1_mipsel_mips32.ipk. Usando wget/scp, descárgueo na memoria do enrutador e reinstale

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

Comprobamos:

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 chinés conectado a un concentrador USB recibiu un bsuid 1-1.4. Lembra.

Agora imos comezar o daemon:

root@OpenWrt:~# usbipd -D

e bindim os chineses

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

Comprobamos que todo 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

Para vincular aínda máis o dispositivo automaticamente, editámolo /etc/rc.localengadindo antes saída 0 seguinte:

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

Lado do cliente

Tentemos conectar o dispositivo a Windows 10 usando as instrucións anteriores de openwrt.org. Digo de inmediato: a idea está condenada ao fracaso. En primeiro lugar, só se considera Windows 7 x64. En segundo lugar, dáse unha ligazón a un fío en sourceforge.net, que suxire descargar un controlador parcheado en 2014 desde Dropbox. Cando tentamos executalo en Windows 10 e conectarnos ao noso dispositivo, aparece o seguinte erro:

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

*** ERROR: cannot find device

Isto débese a que o cliente non funciona cun servidor construído para un núcleo anterior á versión 3.14.
O servidor usbip para OpenWRT 19.07.3 está construído no núcleo 4.14.180.

Continuando a miña busca, atopeime co desenvolvemento actual dun cliente de Windows para GitHub. Ok, indícase o soporte para Windows 10 x64, pero o cliente é só un cliente de proba, polo que hai unha serie de limitacións.

Entón, primeiro piden instalar o certificado, e dúas veces. Ok, poñémolo en Trusted Root Certification Authority e Trusted Publishers.

A continuación, cómpre poñer o sistema operativo en modo de proba. Isto faise por un equipo

bcdedit.exe /set TESTSIGNING ON

A primeira vez non o conseguín, puxenme no camiño arranque seguro. Para desactivalo, cómpre reiniciar en UEFI e configurar o arranque seguro para desactivalo. É posible que algúns modelos de portátiles requiran establecer un contrasinal de supervisor.

Despois diso, inicia Windows e fai bcdedit.exe /set TESTSIGNING ON
Vinda di que todo está ben. Reiniciamos de novo e vemos na esquina inferior dereita as palabras Modo de proba, versión e número de compilación do SO.

Para que serven todas estas manipulacións? Para instalar un controlador sen asinar USB/IP VHCI. Suxírese facelo descargando os ficheiros usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat e executando con dereitos de administrador.

usbip.exe install

ou o segundo método, a instalación manual de Legacy Hardware. Escollín a segunda opción, recibín unha advertencia sobre a instalación dun controlador sen asinar e aceptei.

A continuación, comprobamos que temos a posibilidade de conectarnos a un dispositivo USB remoto executando o comando:

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

obtemos unha lista de dispositivos:

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)

por un erro usbip: erro: fallo ao abrir a base de datos de ID usb Non facemos caso, non afecta o traballo.

Agora ligamos o dispositivo:

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

Xa está, Windows detectou un novo dispositivo, agora podes traballar con el coma se estivese conectado fisicamente ao portátil.

Tiven que sufrir un pouco co gravador chinés, porque cando tentei instalar o seu controlador CH341SER a través do instalador que viña co gravador (si, un gravador Arduino), USB/IP VHCI soltou Windows en BSOD. Non obstante, instalando o controlador CH341SER para conectar o dispositivo a través de usbip.exe solucionou o problema.

Conclusión: o gravador fai ruído e fuma na cociña coa fiestra aberta e a porta pechada, vexo o proceso de queima dende outra habitación a través do meu propio software, que non intúe unha trampa.

Fontes utilizadas:

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

Fonte: www.habr.com

Engadir un comentario