USB sobre IP en casa

A veces desea trabajar con un dispositivo conectado mediante USB sin tenerlo en la mesa al lado de su computadora portátil. Mi dispositivo es un grabador chino con un láser de 500 mW, lo cual resulta bastante desagradable cuando está en contacto cercano. Además del peligro inmediato para los ojos, durante el funcionamiento del láser se liberan productos de combustión tóxicos, por lo que el dispositivo debe ubicarse en un área bien ventilada y preferiblemente aislada de las personas. ¿Cómo se puede controlar un dispositivo así? Accidentalmente encontré la respuesta a esta pregunta mientras navegaba por el repositorio de OpenWRT con la esperanza de encontrar un uso digno para el antiguo enrutador D-Link DIR-320 A2. Para conectarme, decidí usar el descrito anteriormente en Habré. Túnel USB sobre IP, sin embargo, todas las instrucciones para instalarlo han perdido su relevancia, así que estoy escribiendo la mía propia.

OpenWRT es un sistema operativo que no necesita presentación, por lo que no describiré su instalación. Para mi enrutador, tomé la última versión estable de OpenWrt 19.07.3 y lo conecté al punto de acceso Wi-Fi principal como cliente, seleccionando el modo lan, para no atormentar al firewall.

parte del servidor

Actuamos según instrucciones oficiales. Después de conectarse a través de ssh, instale los paquetes necesarios.

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

A continuación, conectamos nuestro dispositivo al puerto USB del router (en mi caso, dispositivos: un hub USB, una unidad flash en la que está montado el sistema de archivos del router (por falta de espacio en el almacenamiento interno) y, directamente, el grabador).

Intentemos mostrar una lista de dispositivos conectados:

root@OpenWrt:~# usbip list -l

Esta vacio

Buscando en Google se encontró al culpable, resultó ser una biblioteca. libudev-fbsd.
Sacamos la última versión funcional del repositorio a mano. libudev_3.2-1 de la versión OpenWRT 17.01.7 para su arquitectura, en mi caso es libudev_3.2-1_mipsel_mips32.ipk. Usando wget/scp, descárguelo en la memoria del enrutador y reinstálelo

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 hombre chino conectado a un concentrador USB recibió un bsuid 1 - 1.4. Recordar.

Ahora comencemos el demonio:

root@OpenWrt:~# usbipd -D

y atar a los chinos

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

Comprobemos 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ún más el dispositivo automáticamente, editemos /etc/rc.localagregando antes salir de 0 следующее:

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

Lado del cliente

Intentemos conectar el dispositivo a Windows 10 siguiendo las instrucciones anteriores de openwrt.org. Lo diré de inmediato: la idea está condenada al fracaso. En primer lugar, sólo se considera Windows 7 x64. En segundo lugar, se proporciona un enlace a un hilo en sourceforge.net, que sugiere descargar un controlador parcheado en 2014 desde Dropbox. Cuando intentamos ejecutarlo en Windows 10 y conectarnos a nuestro dispositivo, obtenemos el siguiente error:

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

*** ERROR: cannot find device

Esto se debe al hecho de que el cliente no funciona con un servidor creado para un kernel anterior a la versión 3.14.
El servidor usbip para OpenWRT 19.07.3 se basa en el kernel 4.14.180.

Continuando con mi búsqueda, me encuentro con el desarrollo actual de un cliente de Windows para gitHub. Ok, se indica soporte para Windows 10 x64, pero el cliente es solo un cliente de prueba, por lo que existen una serie de limitaciones.

Entonces, primero piden instalar el certificado y dos veces. Bien, pongámoslo en la Autoridad de certificación raíz de confianza y en los Editores de confianza.

A continuación, debe poner el sistema operativo en modo de prueba. Esto lo hace un equipo

bcdedit.exe /set TESTSIGNING ON

No lo logré la primera vez, me estorbé asegurar arranque. Para deshabilitarlo, debe reiniciar en UEFI y configurar el inicio seguro para deshabilitarlo. Algunos modelos de portátiles pueden requerir la configuración de una contraseña de supervisor.

Después de eso, inicie Windows y haga bcdedit.exe /set FIRMA DE PRUEBA ACTIVADA
Vinda dice que todo está bien. Reiniciamos nuevamente y vemos en la esquina inferior derecha las palabras Modo de prueba, versión y número de compilación del sistema operativo.

¿Para qué sirven todas estas manipulaciones? Para instalar un controlador sin firmar USB/IP VHCI. Se sugiere hacer esto descargando los archivos usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat y ejecutándolos con derechos de administrador.

usbip.exe install

o el segundo método, instalar hardware heredado manualmente. Elegí la segunda opción, recibí una advertencia sobre la instalación de un controlador no firmado y estuve de acuerdo.

A continuación, comprobamos que tenemos la capacidad de conectarnos a un dispositivo USB remoto ejecutando el comando:

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

obtenemos una 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 error usbip: error: no se pudo abrir la base de datos de identificación USB No prestamos atención, no afecta el trabajo.

Ahora vinculamos el dispositivo:

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

Eso es todo, Windows ha detectado un nuevo dispositivo, ahora puedes trabajar con él como si estuviera conectado físicamente al portátil.

Tuve que sufrir un poco con el grabador chino, porque cuando intenté instalar su controlador CH341SER a través del instalador que venía con el grabador (sí, un grabador Arduino), USB/IP VHCI colocó Windows en BSOD. Sin embargo, instalar el controlador CH341SER a conectar el dispositivo a través de usbip.exe resolvió el problema.

En pocas palabras: el grabador hace ruido y fuma en la cocina con la ventana abierta y la puerta cerrada, yo observo el proceso de grabación desde otra habitación a través de mi propio software, que no detecta ningún problema.

Fuentes utilizadas:

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

Fuente: habr.com

Añadir un comentario