A veces se siente la necesidad de trabajar con un dispositivo conectado por USB sin tenerlo sobre la mesa junto a la computadora portátil. El mío es un grabador chino con un láser de 500 mW, que es bastante peligroso al estar cerca. Además del peligro inmediato para los ojos, durante el funcionamiento del láser se emiten productos tóxicos de combustión, por lo que el dispositivo debe estar en un lugar bien ventilado y, preferentemente, aislado de las personas. ¿Pero cómo se puede controlar este dispositivo? La respuesta a esta pregunta la encontré por casualidad mientras exploraba el repositorio de OpenWRT con la esperanza de encontrar un uso adecuado para un viejo router D-Link DIR-320 A2. Para la conexión, decidí usar lo que se describió anteriormente en Habr. Túnel USB sobre IP, sin embargo, todas las instrucciones para su instalación se han vuelto obsoletas, así que escribo la mía.
OpenWRT es un sistema operativo que no necesita presentación, así que no voy a detallar su instalación. Para mi router, tomé la última versión estable de OpenWrt 19.07.3 y lo conecté al punto de acceso principal a través de Wi-Fi como cliente, seleccionando el modo lan, para no complicar el cortafuegos.
Parte del servidor
Seguimos según . Después de conectarnos por ssh, instalamos los paquetes necesarios.
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-ohci usbip-server usbip-clientLuego conectamos nuestro dispositivo al puerto USB del router (en mi caso, los dispositivos son: un hub USB, una memoria flash en la que está montado el sistema de archivos del router (debido a la falta de espacio en el almacenamiento interno), y, directamente, el grabador).
Intentamos listar los dispositivos conectados:
root@OpenWrt:~# usbip list -lEstá vacío.
A través de Google, encontré al culpable, que resultó ser la biblioteca libudev-fbsd.
Sacamos manualmente del repositorio la última versión funcional libudev_3.2-1 del lanzamiento de OpenWRT 17.01.7 para nuestra arquitectura, en mi caso es libudev_3.2-1_mipsel_mips32.ipk. Con wget/scp la cargamos en la memoria del router y reinstalamos
root@OpenWrt:~# opkg remove --force-depends libudev-fbsd
root@OpenWrt:~# opkg install libudev_3.2-1_mipsel_mips32.ipk
Verificando:
root@OpenWrt:~# usbip list -l
- busid 1-1.1 (090c:1000)
Silicon Motion, Inc. - Taiwán (anteriormente Feiya Technology Corp.) : Unidad Flash (090c:1000)
- busid 1-1.4 (1a86:7523)
QinHeng Electronics : Adaptador serie USB HL-340 (1a86:7523)El chino conectado en el hub USB recibió bsuid 1-1.4. Lo hemos anotado.
Ahora iniciamos el demonio:
root@OpenWrt:~# usbipd -Dy vinculamos al chino
root@OpenWrt:~# usbip bind -b 1-1.4
usbip: info: bind device on busid 1-1.4: completeVerificamos que todo esté funcionando:
root@OpenWrt:\/home# netstat -alpt
Conexiones de Internet activas (servidores y establecidas)
Proto Recv-Q Send-Q Dirección local Dirección remota Estado PID\/Nombre del programa
tcp 0 0 0.0.0.0:3240 0.0.0.0:* ESCUCHAR 1884\/usbipdPara enlazar el dispositivo automáticamente más adelante, Haremos unas modificaciones /etc/rc.local, añadiendo antes exit 0 lo siguiente:
usbipd -D &
sleep 1
usbip bind -b 1-1.4Parte del cliente
Intentaremos conectar el dispositivo a Windows 10, utilizando la instrucción mencionada anteriormente en openwrt.org. Debo decir de inmediato: la idea está condenada al fracaso. Primero, solo se considera Windows 7 x64. En segundo lugar, hay un enlace a un hilo en sourceforge.net, donde se propone descargar un controlador parcheado en 2014 desde Dropbox. Al intentar ejecutarlo en Windows 10 y conectarnos a nuestro dispositivo, obtenemos el error:
c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip para windows ($Id$)
*** ERROR: no se puede encontrar el dispositivo Esto se debe a que el cliente no funciona con un servidor construido sobre un núcleo más antiguo que la versión 3.14.
El servidor usbip bajo OpenWRT 19.07.3 está construido sobre el núcleo 4.14.180.
Mientras continúo la búsqueda, encuentro un desarrollo actual del cliente de Windows en . Bien, se declara soporte para Windows 10 x64, pero el cliente es exclusivamente de prueba, por lo que hay varias limitaciones.
Entonces, primero piden instalar un certificado, y dos veces. Bien, lo colocamos en Autoridad de Certificación Raíz de Confianza y Editores de Confianza.
Luego, es necesario poner el sistema operativo en modo de prueba. Esto se hace con el comando
bcdedit.exe \/set TESTSIGNING ONNo lo logré a la primera, porque me molestó secure boot. Para desactivarlo, es necesario reiniciar en UEFI y establecer secure boot - deshabilitar. En algunos modelos de laptops, puede requerirse establecer una contraseña de supervisor.
Después de esto, iniciamos Windows y hacemos bcdedit.exe \/set TESTSIGNING ON
Windows dice que todo está bien. Reiniciamos de nuevo, y vemos en la esquina inferior derecha el mensaje Modo de Prueba, la versión y el número de compilación del sistema operativo.
¿Por qué todas estas manipulaciones? Para instalar un controlador no firmado USB\/IP VHCI. Esto se sugiere, descargando los archivos usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat, y ejecutando como administrador
usbip.exe installo el segundo método, instalación de Hardware Legado en modo manual. Elegí la segunda opción, recibí una advertencia sobre la instalación de un controlador no firmado y acepté.
Luego verificamos que tenemos la posibilidad de conectarnos a un dispositivo USB remoto, ejecutando el comando:
usbip.exe list -r <ip de tu enrutador>obtenemos la lista de dispositivos:
c:Utilsusbip>usbip.exe list -r 192.168.31.203
usbip: error: failed to open usb id database
Dispositivos USB exportables
==========================
- 192.168.31.203
1-1.4: proveedor desconocido: producto desconocido (1a86:7523)
: /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
: clase desconocida / subclase desconocida / protocolo desconocido (ff/00/00)en error usbip: error: failed to open usb id database no hay que prestar atención, no afecta al funcionamiento.
Ahora enlazamos el dispositivo:
c:Utilsusbip>usbip.exe attach -r 192.168.31.203 -b 1-1.4Listo, Windows ha detectado un nuevo dispositivo, ahora se puede trabajar con él como si estuviese físicamente conectado a la laptop.
Tuve que luchar un poco con el grabador chino, ya que al intentar instalar su controlador CH341SER a través del instalador que venía con el grabador (sí, el grabador es de Arduino), USB/IP VHCI hacía que Windows mostrara la pantalla azul de la muerte. Sin embargo, la instalación del controlador CH341SER hasta conexión del dispositivo a través de usbip.exe resolvía el problema.
Resultado: el grabador hace ruido y humea en la cocina con la ventana abierta y la puerta cerrada, estoy observando el proceso de grabado desde otra habitación a través del software original, que no sospecha nada.
Fuentes utilizadas:
Fuente: habr.com
