Guia de tecnologias

Instalar e Usar USB/IP no Cliente

5 min read Guias Técnicos Atualizado 27 Sep 2025
USB/IP no Cliente: Instalação e Uso
USB/IP no Cliente: Instalação e Uso

Introdução

Este guia explica, passo a passo, como instalar e usar o USB/IP no sistema cliente (OpenSUSE 11.2 como exemplo). Ele descreve instalação, configuração do módulo de kernel, como listar e anexar dispositivos USB remotos, e como desanexá-los corretamente. Termos importantes: usbip — utilitário para compartilhar USB pela rede; vhci-hcd — driver de host virtual no cliente.

Requisitos

  • Acesso root no cliente e no servidor USB/IP.
  • Rede entre cliente e servidor (ex.: 192.168.0.100 é o IP do servidor neste exemplo).
  • Pacote usbip disponível nos repositórios (ex.: OpenSUSE).

1. Instalar usbip no cliente

No cliente, instale o pacote usbip exatamente como no servidor:

yast2 -i usbip

Observação: o usbip espera o arquivo usb.ids em /usr/share/hwdata, mas no OpenSUSE 11.2 ele fica em /usr/share/usbip/usb.ids. Caso isso aconteça, crie um diretório e um link simbólico:

mkdir /usr/share/hwdata
ln -sf /usr/share/usbip/usb.ids /usr/share/hwdata/

Importante: mantenha os caminhos de arquivo exatamente como no sistema; não altere nomes de arquivos ou diretórios.

2. Carregar o módulo de kernel vhci-hcd

Carregue o módulo de kernel que cria o host USB virtual no cliente:

modprobe vhci-hcd

Verifique se o módulo foi carregado:

lsmod | grep vhci_hcd

Saída de exemplo esperada:

client1:~ # lsmod | grep vhci_hcd
vhci_hcd               26576  0
usbip_common_mod       25232  1 vhci_hcd
client1:~#

Para carregar automaticamente o módulo em todo boot, adicione-o à variável MODULES_LOADED_ON_BOOT em /etc/sysconfig/kernel:

vi /etc/sysconfig/kernel

No ficheiro, assegure-se de ter uma linha como:

MODULES_LOADED_ON_BOOT="vhci-hcd"

Depois execute:

SuSEconfig

Nota: em outras distribuições o ficheiro de configuração de módulos no arranque pode ser diferente (por exemplo /etc/modules-load.d/ em sistemas systemd).

3. Listar dispositivos USB disponíveis no servidor

Peça ao servidor a lista de dispositivos exportados via USB/IP (substitua o IP pelo do seu servidor):

usbip -l 192.168.0.100

Exemplo de saída com um pendrive SanDisk (BUSID 2-5):

client1:~ # usbip -l 192.168.0.100
- 192.168.0.100
2-5: SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
: /sys/devices/pci0000:00/0000:00:04.1/usb2/2-5
: (Defined at Interface level) (00/00/00)
:  0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

client1:~ #

4. Anexar o dispositivo remoto ao cliente

Anexe o dispositivo remoto usando o BUSID indicado (ex.: 2-5):

usbip -a 192.168.0.100 2-5

Saída de exemplo:

client1:~# usbip -a 192.168.0.100 2-5
8 ports available

port 0 attached
client1:~#

Depois execute lsusb para verificar se o dispositivo remoto aparece como um dispositivo local:

lsusb

Exemplo:

client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
client1:~ #

Agora você pode usar o dispositivo remoto como se fosse local: montar, formatar, ler e gravar dados.

5. Desanexar um dispositivo USB remoto

Para desanexar, primeiro descubra a porta usada pelo dispositivo no cliente:

usbip --port

Exemplo de saída (neste caso o dispositivo usa a porta 00):

client1:~ # usbip --port
8 ports available

Port 00:  at High Speed(480Mbps)
SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
1-1 -> usbip://192.168.0.100:3240/2-5  (remote devid 00020002 (bus/dev 002/002))
1-1:1.0 used by usb-storage
/sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host4/scsi_host/host4/device
Port 01: 
Port 02: 
Port 03: 
Port 04: 
Port 05: 
Port 06: 
Port 07: 
client1:~ #

Use o número da porta para desanexar (no exemplo, porta 00):

usbip -d 00

Saída típica:

client1:~ # usbip -d 00
8 ports available

port 0 detached
client1:~ #

No servidor, se precisar rebinder o dispositivo localmente (tornar indisponível pela rede), use o BUSID com bind_driver e a opção –other para atribuí-lo a drivers locais:

bind_driver --other 2-5

Exemplo de saída no servidor:

server1:~ # bind_driver --other 2-5
 (process:3484): DEBUG: write "del 2-5" to /sys/bus/usb/drivers/usbip/match_busid
 Message: bind 2-5 to other drivers than usbip, complete!
server1:~#

Depois volte ao cliente e confirme com lsusb; o dispositivo não deverá aparecer mais:

client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
client1:~ #

Lista de verificação para administradores (por papéis)

  • Administrador de Sistema:
    • Confirmar conectividade TCP/IP entre cliente e servidor (porta 3240 por padrão).
    • Verificar versões do kernel e compatibilidade do módulo vhci-hcd.
    • Garantir permissão de root para executar modprobe e bind_driver.
  • Operador de Suporte:
    • Executar usbip -l no cliente para localizar dispositivos remotos.
    • Registrar BUSID e porta antes de desanexar.
  • Usuário Final:
    • Montar o dispositivo após anexo (ex.: mount /dev/sdX /mnt).
    • Nunca remover fisicamente o dispositivo no servidor sem primeiro desanexar no cliente.

Solução de problemas comum

  • Problema: usbip não encontra usb.ids
    • Solução: crie um link simbólico para /usr/share/hwdata/usb.ids apontando para o ficheiro real.
  • Problema: modprobe vhci-hcd falha
    • Solução: confirme versão do kernel e módulos necessários; verifique dmesg para mensagens de erro.
  • Problema: tempo de resposta alto ou desconexões
    • Solução: verifique latência e perda de pacotes na rede; USB/IP sensível à qualidade de rede.
  • Problema: porta já em uso ao tentar anexar
    • Solução: listar portas com usbip –port e desanexar portas antigas antes de anexar novamente.

Importante: não force operações quando houver atividade de disco no dispositivo remoto. Desmonte qualquer filesystem montado no cliente antes de desanexar.

Mini-metodologia para operações seguras

  1. No servidor, liste dispositivos exportáveis com usbip (ou verifique quais BUSIDs estão configuradas).
  2. No cliente, confirme conectividade e instale usbip.
  3. Carregue vhci-hcd e confirme com lsmod.
  4. Liste dispositivos no servidor via usbip -l e anexe com usbip -a .
  5. Monte e use o dispositivo no cliente.
  6. Antes de desanexar, desmonte filesystems; depois use usbip -d e, se necessário, bind_driver –other no servidor.

Glossário (uma linha cada)

  • BUSID: ID do barramento USB usado pelo usbip para identificar um dispositivo remoto.
  • vhci-hcd: driver de host virtual que cria portas USB locais para dispositivos remotos.
  • bind_driver: utilitário para vincular um dispositivo USB a drivers locais no servidor.

Segurança e boas práticas

  • Use redes seguras ou VPNs para tráfego USB/IP — o protocolo não cifra tráfego por padrão.
  • Monitore atividade e logs (dmesg, journalctl) para detectar desconexões ou erros.

Links úteis

Resumo final

Siga a ordem: instalar, linkar usb.ids se necessário, carregar vhci-hcd, listar no servidor, anexar, usar, desanexar e rebinder no servidor se desejar. Garanta redes confiáveis e sempre desmonte sistemas de ficheiros antes de desanexar.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE