Guía de tecnologías

Instalación y uso de USB/IP en el cliente

5 min read Administración Linux Actualizado 27 Sep 2025
Instalación y uso de USB/IP en el cliente
Instalación y uso de USB/IP en el cliente

Resumen rápido

Este artículo muestra cómo instalar y usar USB/IP en un cliente OpenSUSE (ejemplos con salida de terminal), cómo cargar el módulo del kernel, cómo listar y adjuntar dispositivos remotos y cómo desacoplarlos cuando ya no sean necesarios. Incluye comandos, ejemplos de salida y una guía de resolución de problemas y listas de verificación para administradores.

1 Requisitos previos

  • Acceso root o privilegios sudo en la máquina cliente.
  • Conexión de red con el servidor USB/IP reachable (ej.: 192.168.0.100).
  • Paquete usbip disponible en los repositorios (ej.: OpenSUSE).
  • Conocimiento básico de comandos de consola Linux.

2 Instalación en el cliente

Primero debemos instalar el paquete usbip en el cliente. Los pasos son los mismos que en el servidor:

yast2 -i usbip

El paquete usbip espera el fichero con la lista de dispositivos USB conocidos (usb.ids) en el directorio /usr/share/hwdata, pero en OpenSUSE 11.2 está en /usr/share/usbip/usb.ids — por eso creamos un enlace simbólico:

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

A continuación cargue el módulo del kernel vhci-hcd:

modprobe vhci-hcd

Para verificar que el módulo se cargó correctamente, ejecute:

lsmod | grep vhci_hcd

La salida debería ser similar a esta:

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

Para que el módulo se cargue automáticamente en el arranque, añádalo a la variable MODULES_LOADED_ON_BOOT en /etc/sysconfig/kernel:

vi /etc/sysconfig/kernel

| [...] ## Type: string ## ServiceRestart: boot.loadmodules # # Esta variable contiene la lista de módulos que se cargarán # una vez que el sistema de ficheros principal esté activo # Encontrará algunos módulos por defecto para hardware que # no puede detectarse automáticamente. # MODULES_LOADED_ON_BOOT="vhci-hcd" [...] |

Ejecute después:

SuSEconfig

3 Listar y adjuntar dispositivos remotos

Conéctese al servidor usbip y pida la lista de dispositivos disponibles:

usbip -l 192.168.0.100

(192.168.0.100 es la dirección IP del servidor usbip.)

Debería encontrar la memoria USB SanDisk en la salida (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:~ #

Para adjuntar ese dispositivo al cliente, ejecute:

usbip -a 192.168.0.100 2-5

Salida ejemplo:

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

port 0 attached
client1:~ #

Ahora ejecute:

lsusb

Y debería ver el dispositivo USB remoto en la salida del cliente:

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:~ #

A partir de aquí puede usar el dispositivo remoto como si fuera local (montarlo, formatearlo, leer/escribir, etc.).

4 Desconectar un dispositivo USB remoto

Para desconectar un dispositivo remoto del cliente, primero identifique el puerto que está usando en el cliente:

usbip --port

Ejemplo de salida (aquí el puerto en uso es Port 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:~ #

Tome el número de puerto y desconéctelo:

usbip -d 00

Salida ejemplo:

client1:~ # usbip -d 00
8 ports available

port 0 detached
client1:~ #

En el servidor, use el BUSID (2-5) para enlazar el dispositivo USB de vuelta al sistema local. La opción –other indica que el dispositivo se debe asociar a drivers locales y dejar de estar disponible por la red:

server1:

bind_driver --other 2-5

Salida ejemplo:

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:~#

Vuelva al cliente y confirme que el dispositivo ya no aparece en lsusb:

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

5 Enlaces


Mini-metodología (pasos rápidos)

  1. Instalar paquete: yast2 -i usbip
  2. Crear enlace a usb.ids si es necesario
  3. modprobe vhci-hcd
  4. usbip -l
  5. usbip -a
  6. Usar dispositivo (lsusb, mount, etc.)
  7. Para soltar: usbip –port → usbip -d → bind_driver –other en servidor

Lista de verificación por rol

Administrador (cliente):

  • Paquete usbip instalado
  • vhci-hcd cargado y configurado en arranque
  • Conexión a red con el servidor probada
  • Dispositivo correctamente adjuntado y montado
  • Dispositivo limpiamente desacoplado al terminar

Administrador (servidor):

  • usbip demonio activo y escuchando en el puerto 3240
  • Dispositivo exportado con busid correcto
  • Permisos y firewall configurados para el tráfico necesario

Fragmentos y referencia rápida (cheat sheet)

Comandos comunes:

# Instalar
yast2 -i usbip

# Crear enlace simbólico a usb.ids (si hace falta)
mkdir /usr/share/hwdata
ln -sf /usr/share/usbip/usb.ids /usr/share/hwdata/

# Cargar módulo del cliente
modprobe vhci-hcd

# Listar dispositivos en el servidor
usbip -l 192.168.0.100

# Adjuntar dispositivo (cliente)
usbip -a 192.168.0.100 2-5

# Ver puertos y estado
usbip --port

# Desconectar por puerto
usbip -d 00

# Reenlazar el dispositivo en el servidor para uso local
bind_driver --other 2-5

Solución de problemas y cuándo falla

  • El comando usbip -l no muestra dispositivos: asegúrese de que el servicio usbipd en el servidor esté corriendo y que el firewall permita el puerto 3240.
  • El módulo vhci-hcd no aparece en lsmod: vuelva a ejecutar modprobe y compruebe dmesg para errores del kernel.
  • El dispositivo aparece pero no puede montarse: confirme que el cliente ha detectado correctamente el dispositivo; verifique mensajes en dmesg y si el driver de dispositivo (por ejemplo usb-storage) está en uso.
  • Latencia o desconexiones: USB/IP viaja sobre la red; problemas de red (pérdida de paquetes, latencia) afectan la estabilidad. Use una red fiable para dispositivos de almacenamiento críticos.

Criterios de aceptación (Критерии приёмки)

  • El cliente puede listar el dispositivo remoto con usbip -l y verlo con lsusb.
  • Tras usbip -a el dispositivo aparece en lsusb y es utilizable (p. ej. puede montarse y leer/escribir).
  • Tras usbip -d el dispositivo desaparece de lsusb en el cliente.
  • En el servidor el dispositivo puede ser reenlazado al sistema local con bind_driver –other y deja de exportarse por la red.

Modelo mental y buenas prácticas

  • Mentalmente, piense en USB/IP como un «passthrough» de bus USB sobre TCP/IP: el cliente crea un puerto virtual vhci-hcd que emula un controlador USB local.
  • No exponga dispositivos críticos sin cifrado o en redes no confiables.
  • Para producción, automatice la carga del módulo y las configuraciones en scripts de arranque y controle el firewall.

Resumen

USB/IP permite usar dispositivos USB remotos como si estuvieran locales. El flujo clave: instalar usbip, cargar vhci-hcd en el cliente, listar y adjuntar con usbip -l / usbip -a, y desconectar con usbip –port / usbip -d. En el servidor, use bind_driver –other para devolver el control local del dispositivo.

Importante: no olvide comprobar el firewall y las políticas de seguridad antes de exponer dispositivos USB por la red.

Notas: Si usa versiones distintas de la distribución, las rutas y nombres de paquetes pueden variar; adapte comandos según su sistema.

Autor
Edición

Materiales similares

Recuperar archivos tras vaciar la Papelera en Mac
Recuperación de datos

Recuperar archivos tras vaciar la Papelera en Mac

Evita números falsos en resúmenes de IA
Seguridad

Evita números falsos en resúmenes de IA

Usar iMessage en Android: guía paso a paso
Android

Usar iMessage en Android: guía paso a paso

Iniciar Windows Server 2019 en Modo Seguro
Servidores

Iniciar Windows Server 2019 en Modo Seguro

Crear accesos directos en Snapchat
Redes sociales

Crear accesos directos en Snapchat

Instalación y uso de USB/IP en el cliente
Administración Linux

Instalación y uso de USB/IP en el cliente