Á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
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
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:
Fonte: www.habr.com