Quando um dispositivo vinculado e conectado remotamente é desconectado, o dispositivo é desconectado automaticamente no cliente e não acoplado ao host. Depois disso, o estado é o mesmo como se nunca estivesse ligado ou ligado.
Os comandos usbip para ligação (no host) e anexação (no cliente) podem ser executados repetidamente com os mesmos argumentos. Enquanto isso emite uma mensagem de erro em dispositivos já conectados ou conectados, nada de ruim acontece! Assim, pode-se apenas instalar scripts de background que repetidamente ligam e conectam os dispositivos. Exemplos de scripts e unidades systemd são fornecidos abaixo. Certifique-se de alterar o nome do host e os IDs de portas de acordo com suas necessidades.
Anfitrião
Skript /opt/usbip/usbip-bind
:
#!/bin/bash
SPOOL=/var/spool/usbip/bind
if [[ $1 == "-q" ]]
then
exec &>/dev/null
fi
touch $SPOOL
while [[ -e $SPOOL ]]
do
/usr/bin/usbip bind -b 1-1.2.1
/usr/bin/usbip bind -b 1-1.2.2
sleep 10
done
/usr/bin/usbip unbind -b 1-1.2.1
/usr/bin/usbip unbind -b 1-1.2.2
exit 0
Unidade do sistema /etc/systemd/system/usbip-bind.service
:
[Unit]
Description=USB-IP Bindings
[Service]
ExecStart=/opt/usbip/usbip-bind -q
ExecStop=/bin/rm /var/spool/usbip/bind ; /bin/bash -c "while [[ -d /proc/"$MAINPID" ]]; do sleep 1; done"
[Install]
WantedBy=multi-user.target
Certifique-se de criar o diretório /var/spool/usbip
. Em seguida, ative e inicie a unidade:
systemctl daemon-reload
systemctl enable usbip-bind
systemctl start usbip-bind
Cliente
Skript /opt/usbip/usbip-attach
:
#!/bin/bash
SPOOL=/var/spool/usbip/attach
if [[ $1 == "-q" ]]
then
exec &>/dev/null
fi
touch $SPOOL
while [[ -e $SPOOL ]]
do
/usr/bin/usbip attach -r pi -b 1-1.2.1
/usr/bin/usbip attach -r pi -b 1-1.2.2
sleep 10
done
/usr/bin/usbip detach -p 0
/usr/bin/usbip detach -p 1
exit 0
Unidade do sistema /etc/systemd/system/usbip-attach.service
:
[Unit]
Description=USB-IP Attach
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/opt/usbip/usbip-attach -q
ExecStop=/bin/rm /var/spool/usbip/attach ; /bin/bash -c "while [[ -d /proc/"$MAINPID" ]]; do sleep 1; done"
[Install]
WantedBy=multi-user.target
Certifique-se de criar o diretório /var/spool/usbip
. Em seguida, ative e inicie a unidade:
systemctl daemon-reload
systemctl enable usbip-attach
systemctl start usbip-attach
Agora você pode remover o dispositivo sempre que necessário e no máximo 20 segundos depois de conectá-lo novamente na conexão usbip é restabelecida.