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

Corrigir erro Python oxzep7 — guia prático
Solução Técnica

Corrigir erro Python oxzep7 — guia prático

Recuperar Lixeira esvaziada no Mac
macOS Recuperação

Recuperar Lixeira esvaziada no Mac

Evitar números falsos em resumos de IA
Segurança

Evitar números falsos em resumos de IA

Usar iMessage no Android com AirMessage
Tutoriais

Usar iMessage no Android com AirMessage

Iniciar Windows Server 2019 em Modo de Segurança
Administração de TI

Iniciar Windows Server 2019 em Modo de Segurança

Como criar atalhos no Snapchat
Redes Sociais

Como criar atalhos no Snapchat