Em muitas situações, é muito desejável ter a oportunidade de compartilhar um periférico USB pela rede. Por um lado, se você tem uma equipe inteira usando algum software licenciado caro protegido por uma chave de segurança USB. Ninguém quer gastar uma fortuna em licenças individuais para cada funcionário ou apostar em perder ou danificar a dita chave, pois ela será carregada pelo escritório conectada a diferentes máquinas durante todo o dia.
yum install [package];
É isso!
A partir desse ponto, o dispositivo compartilhado poderá ser acessado remotamente de qualquer máquina Linux, Windows ou Mac com FlexiHub instalado e conexão à Internet, independentemente da distância física. Graças ao servidor de redirecionamento USB texclusivo, o aplicativo é realmente uma solução de internetwork que funciona através de todos os firewalls e não requer endereços IP públicos.
E a cereja do bolo é que você realmente não precisa transformar permanentemente seu Raspberry Pi em um servidor USB sobre IP. Você pode compartilhar dispositivos USB de qualquer máquina com FlexiHub instalado, incluindo seu tablet Android, e nunca ter nenhum problema com conectividade de plataforma cruzada. Em uma máquina Windows, você pode até mesmo compartilhar um periférico baseado em COM. Quão incrível é isso? E, para maior comodidade, você terá a oportunidade de desfrutar da conectividade sem fio acessando dispositivos compartilhados via Wi-Fi.
Em princípio, esse método é semelhante ao que acabamos de descrever, mas por meio de um aplicativo diferente. E dado que desta vez estaremos usando uma solução de código aberto que ainda está em desenvolvimento, o processo de configuração requer um nível decente de competência técnica para ser executado, então, se você não tiver nenhuma, não se surpreenda se não funcionará na primeira tentativa.
Aqui estão alguns pontos mais importantes que você precisa considerar antes de optar por este método:
sudo apt install usbip
sudo modprobe usbip_host
echo 'usbip_host' >> /etc/modules
lsusb command
para ver uma lista de todos os dispositivos USB fisicamente conectados ao Raspberry Pi e lembre-se (ou anote) o número de ID USB de 8 dígitos de um dispositivo que você vai compartilhar . usbip list -p -l
para descobrir a ID de barramento do seu dispositivo (use o número de ID USB de uma etapa anterior para identificar o dispositivo certo na lista). Anote esse número. sudo usbip bind --busid=N
usbipd
Como alternativa, você pode criar um serviço systemd:
vi /lib/systemd/system/usbipd.service
com a seguinte definição (não se esqueça de alterar o N para um número de ID USB real do seu dispositivo):
[Unit]
Description=usbip host daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/usbipd -D
ExecStartPost=/bin/sh -c "/usr/sbin/usbip bind --$(/usr/sbin/usbip list -p -l | grep '#usbid=N#' | cut '-d#' -f1)"
ExecStop=/bin/sh -c "/usr/sbin/usbip unbind --$(/usr/sbin/usbip list -p -l | grep '#usbid=N#' | cut '-d#' -f1); killall usbipd"
[Install]
WantedBy=multi-user.target
E então você precisará executar estes comandos para iniciar esse serviço:
sudo systemctl --system daemon-reload
sudo systemctl enable usbipd.service
sudo systemctl start usbipd.service
Ok, agora vamos configurar um cliente:
Observação: o aplicativo tem um cliente para Windows, mas é uma versão beta frágil, sem drivers assinados ou qualquer suporte para Windows 10, portanto, não vale a pena mencionar.
1. Para instalar o mesmo aplicativo para compartilhar USB sobre IP no Ubuntu, execute estes comandos:
sudo -s
apt-get install linux-tools-generic -y
2. Habilite o módulo necessário:
modprobe vhci-hcd
echo 'vhci-hcd' >> /etc/modules
Agora, para conectar o dispositivo compartilhado a esta máquina, execute o comando: sudo usbip attach -r 0.0.0.0
(digite o endereço IP real do seu Raspberry Pi em vez de 0.0.0.0)
Ou você pode criar um serviço systemd:
vi /lib/systemd/system/usbip.service
Com a definição (substitua N por um número de ID USB real do seu dispositivo e 0.0.0.0 pelo endereço IP do seu Raspberry):
[Unit] Description=usbip client After=network.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c "/usr/lib/linux-tools/$(uname -r)/usbip attach -r 0.0.0.0 -b $(/usr/lib/linux-tools/$(uname -r)/usbip list -r 0.0.0.0 | grep 'N' | cut -d: -f1)" ExecStop=/bin/sh -c "/usr/lib/linux-tools/$(uname -r)/usbip detach --port=$(/usr/lib/linux-tools/$(uname -r)/usbip port | grep '<Port in Use>' | sed -E 's/^Port ([0-9][0-9]).*/\1/')" [Install] WantedBy=multi-user.target
Salve e execute estes comandos para iniciar o serviço:
sudo systemctl --system daemon-reload
sudo systemctl enable usbip.service
sudo systemctl start usbip.service
Depois disso, você deve conseguir acessar o dispositivo compartilhado remotamente. Caso contrário, tente todas as etapas novamente desde o início.
Importante! Se você desconectar um dispositivo USB do Raspberry Pi enquanto ele é compartilhado por este método, pode resultar em perda permanente de dados. Desligue o Raspberry primeiro.
Servidor proxy | Servidor proxy | Servidor de Redirecionamento • sem necessidade de IP externo • comunicação multi-rede • funciona através do Firewall | N/A |
Plataformas suportadas: | Plataformas suportadas: | | |
Lado do servidor | Lado do servidor | ✓ Windows ✓ Linux ✓ macOS ✓ Android | ✓ Linux |
Do lado do cliente | Do lado do cliente | ✓ Windows ✓ Linux ✓ macOS | ✓ Windows (beta) ✓ Linux |
Firmware para microcontroladores | Firmware para microcontroladores | Raspberry (a pedido) | N/A |
Segurança | Segurança | Tokens de login para compartilhamento seguro da conta Bloquear para controle de acesso ao dispositivo | N/A |
Encriptação | Encriptação | 2048-bit SSL | N/A |
Estabilidade aprimorada | Estabilidade aprimorada | Manter a conexão ativa opção | N/A |
Com certeza, depende totalmente de você decidir qual dos dois métodos descritos neste artigo você vai adotar. Mas não seria melhor investir em uma ferramenta fácil de manusear com eficiência comprovada do que confiar em algo que pode falhar a qualquer momento e causar quem sabe quanto nervosismo, tempo e dinheiro devido ao tempo de inatividade não planejado.