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
- USB/IP Project: http://usbip.sourceforge.net/
- OpenSUSE: http://www.opensuse.org/
Mini-metodología (pasos rápidos)
- Instalar paquete: yast2 -i usbip
- Crear enlace a usb.ids si es necesario
- modprobe vhci-hcd
- usbip -l
- usbip -a
- Usar dispositivo (lsusb, mount, etc.)
- 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.
Materiales similares

Recuperar archivos tras vaciar la Papelera en Mac

Evita números falsos en resúmenes de IA

Usar iMessage en Android: guía paso a paso

Iniciar Windows Server 2019 en Modo Seguro
