Estou usando usbip e um raspberry pi para estender o alcance de um teclado sem fio para um computador que está um pouco longe demais para que o teclado funcione de maneira confiável por conta própria.
Às vezes, o receptor USB do teclado é reconectado e usado em outro lugar, mas quando é reconectado ao raspberry pi, a conexão USBIP não é restabelecida automaticamente.
Como posso conseguir a reconexão automática?
Quando um dispositivo vinculado e conectado remotamente é desconectado, o dispositivo é automaticamente desconectado no cliente e desconectado no host. Depois disso, o estado é o mesmo como se nunca tivesse sido vinculado ou anexado.
Os comandos usbip para ligação (no host) e anexação (no cliente) podem ser executados repetidamente com os mesmos argumentos. Embora isso emita uma mensagem de erro em dispositivos já vinculados ou conectados, nada de ruim acontece! Portanto, basta instalar scripts em segundo plano que vincularão e conectarão repetidamente os dispositivos. Scripts de exemplo e unidades systemd são fornecidos abaixo. Certifique-se de alterar o nome do host e as IDs da porta de acordo com suas necessidades.
Hospedeiro
Escrito
/opt/usbip/usbip-bind
:Unidade do sistema
/etc/systemd/system/usbip-bind.service
:Certifique-se de criar o diretório
/var/spool/usbip
. Em seguida, habilite e inicie a unidade:Cliente
Escrito
/opt/usbip/usbip-attach
:Unidade do sistema
/etc/systemd/system/usbip-attach.service
:Certifique-se de criar o diretório
/var/spool/usbip
. Em seguida, habilite e inicie a unidade:Agora você pode retirar o aparelho sempre que precisar e em no máximo 20 segundos após recolocá-lo na conexão usbip é restabelecida.
Eu tentei isso e meio que funcionou .. há mais alguns que você precisa fazer.
Primeiro:
Você precisa tornar os scipts executáveis no host e no cliente
No meu caso, o usbip não foi instalado no
/opt/usbip
, tive que simplesmente escrever apenasusbip
no host e no arquivo de serviço do cliente.Eu também tive que iniciar o
usbipd
serviço. Então, no host, usei este arquivo:Ele inicia o servidor usbipd primeiro
e nos arquivos do host e do cliente eu tive que remover
/usr/bin/
Após essas alterações, funcionou bem no meu host Raspberry Pi e no cliente ubuntu 19.10
Embora minha resposta esteja bastante atrasada, mas talvez útil para os outros: https://github.com/alpertsev/usbip-service-shell