Às vezes você deseja trabalhar com um dispositivo conectado via USB sem mantê-lo na mesa ao lado do laptop. Meu aparelho é um gravador chinês com laser de 500 mW, o que é bastante desagradável quando em contato próximo. Além do perigo imediato para os olhos, produtos tóxicos da combustão são liberados durante a operação do laser, portanto o dispositivo deve estar localizado em uma área bem ventilada e de preferência isolada de pessoas. Como você pode controlar tal dispositivo? Eu acidentalmente encontrei a resposta para esta pergunta enquanto navegava no repositório OpenWRT na esperança de encontrar um uso digno para o antigo roteador D-Link DIR-320 A2. Para conectar, decidi usar o descrito anteriormente no Habré. Túnel USB sobre IP, no entanto, todas as instruções para instalação perderam relevância, então estou escrevendo as minhas próprias.
OpenWRT é um sistema operacional que dispensa apresentações, por isso não descreverei sua instalação. Para o meu roteador, peguei a versão estável mais recente do OpenWrt 19.07.3 e conectei-o ao ponto de acesso Wi-Fi principal como cliente, selecionando o modo lan, para não atormentar o firewall.
parte do servidor
Agimos de acordo com
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-ohci usbip-server usbip-client
Em seguida, conectamos nosso dispositivo à porta USB do roteador (no meu caso, dispositivos: um hub USB, um pen drive no qual está montado o sistema de arquivos do roteador (por falta de espaço no armazenamento interno) e, diretamente, o gravador).
Vamos tentar exibir uma lista de dispositivos conectados:
root@OpenWrt:~# usbip list -l
Está vazio.
Ao pesquisar no Google o culpado foi encontrado, descobriu-se que era uma biblioteca libudev-fbsd.
Retiramos manualmente a versão funcional mais recente do repositório libudev_3.2-1 da versão OpenWRT 17.01.7 para sua arquitetura, no meu caso é libudev_3.2-1_mipsel_mips32.ipk. Usando wget/scp, baixe-o na memória do roteador e reinstale-o
root@OpenWrt:~# opkg remove --force-depends libudev-fbsd
root@OpenWrt:~# opkg install libudev_3.2-1_mipsel_mips32.ipk
Verificamos:
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)
Um chinês conectado a um hub USB recebeu um bsuid 1-1.4. Lembrar.
Agora vamos iniciar 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
Vamos verificar se tudo está funcionando:
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 ainda mais o dispositivo automaticamente, vamos editar /etc/rc.localadicionando antes sair 0 O seguinte:
usbipd -D &
sleep 1
usbip bind -b 1-1.4
Lado do cliente
Vamos tentar conectar o dispositivo ao Windows 10 usando as instruções acima em openwrt.org. Direi desde já: a ideia está fadada ao fracasso. Primeiramente, apenas o Windows 7 x64 é considerado. Em segundo lugar, é fornecido um link para um tópico no sourceforge.net, que sugere o download de um driver corrigido em 2014 do Dropbox. Quando tentamos executá-lo no Windows 10 e conectar-nos ao nosso dispositivo, obtemos o seguinte erro:
c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip for windows ($Id$)
*** ERROR: cannot find device
Isso se deve ao fato do cliente não funcionar com um servidor construído para um kernel anterior à versão 3.14.
O servidor usbip para OpenWRT 19.07.3 é construído no kernel 4.14.180.
Continuando minha pesquisa, me deparo com o desenvolvimento atual de um cliente Windows para
Então, primeiro eles pedem para instalar o certificado e duas vezes. Ok, vamos colocá-lo na Autoridade de Certificação Raiz Confiável e nos Editores Confiáveis.
Em seguida, você precisa colocar o sistema operacional em modo de teste. Isso é feito por uma equipe
bcdedit.exe /set TESTSIGNING ON
Não consegui da primeira vez, atrapalhei inicialização segura. Para desativá-lo, você precisa reinicializar em UEFI e definir a inicialização segura como desativada. Alguns modelos de laptop podem exigir a configuração de uma senha de supervisor.
Depois disso, inicialize no Windows e faça bcdedit.exe /set TESTSIGNING ON
Vinda diz que está tudo bem. Reinicializamos novamente e vemos no canto inferior direito as palavras Modo de teste, versão e número de compilação do sistema operacional.
Para que servem todas essas manipulações? Para instalar um driver não assinado USB/IP VHCI. Sugere-se fazer isso baixando os arquivos usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat e executando com direitos de administrador
usbip.exe install
ou o segundo método, instalando o hardware legado manualmente. Escolhi a segunda opção, recebi um aviso sobre a instalação de um driver não assinado e concordei com isso.
A seguir, verificamos se podemos nos conectar a um dispositivo USB remoto executando o comando:
usbip.exe list -r <ip вашего роутера>
obtemos uma 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 um erro usbip: erro: falha ao abrir o banco de dados de ID USB Não prestamos atenção, isso não prejudica o trabalho.
Agora ligamos o dispositivo:
c:Utilsusbip>usbip.exe attach -r 192.168.31.203 -b 1-1.4
É isso, o Windows detectou um novo dispositivo, agora você pode trabalhar com ele como se estivesse conectado fisicamente ao laptop.
Tive que sofrer um pouco com o gravador chinês, pois quando tentei instalar seu driver CH341SER através do instalador que acompanha o gravador (sim, um gravador Arduino), o USB/IP VHCI derrubou o Windows em BSOD. No entanto, a instalação do driver CH341SER para conectar o dispositivo via usbip.exe resolveu o problema.
Resumindo: o gravador faz barulho e fuma na cozinha com a janela aberta e a porta fechada, observo o processo de queima de outro cômodo através do meu próprio software, que não detecta nenhum problema.
Fontes utilizadas:
Fonte: habr.com