USB/IP en Linux: cómo usar USB remotos por red con USB/IP Web UI (guía paso a paso)

By | 31 enero, 2026

Hoy traigo un programa que he realizado durante estos días. Lo que encontraba por la red no terminaba de gustarme así que decidí hacer uno a medida.

1) Qué es esto y para qué sirve

USB/IP Web UI es una pequeña aplicación, realizada en NodeJS, que instalas en tu PC Linux (cliente) para poder:

  • Añadir la IP del servidor USB/IP remoto
  • Ver la lista de dispositivos USB exportados por ese servidor
  • Conectar (attach) y Desconectar (detach) esos dispositivos con botones
  • Activar auto-conectar para que ciertos dispositivos se vuelvan a conectar automáticamente

En pocas palabras:

Te permite “enchufar” (virtualmente) un USB que está en otro equipo de tu red, y que en tu Linux aparezca como si lo tuvieras conectado físicamente.


2) Cómo funciona

Qué se necesita:

A) Servidor USB/IP (remoto)

Es el equipo que tiene el USB físico conectado y lo comparte por la red mediante USB/IP.
Ejemplos típicos:

  • Un móvil Android con un servidor USB/IP
  • Un ordenador con usbip exportando el dispositivo

B) Cliente Linux (tu PC) con USB/IP Web UI

La Web UI se ejecuta en tu ordenador y por detrás hace cosas como:

  • Listar exportaciones remotas:
  • usbip list --remote <IP>
  • Conectar un dispositivo (attach):
  • usbip attach -r <IP> -b <BUSID>
  • Ver y gestionar conexiones activas:
  • usbip port
  • usbip detach -p <PUERTO>

3) Qué necesitas (requisitos)

En tu Linux (cliente)

  • Node.js (recomendado Node 18+ / 20+)
  • usbip instalado
  • El módulo del kernel vhci-hcd cargado
  • Permisos de administrador (sudo) para conectar/desconectar (estoy preparando una versión rootless)

En el servidor remoto

  • Un servidor USB/IP funcionando
  • Que el dispositivo esté exportado
  • Acceso de red desde tu ordenador a <IP>:3240

4) Instalación paso a paso

4.1) Instala NodeJS y usbip en Linux

En Debian/Ubuntu suele ser:

sudo apt update
sudo apt install -y usbip curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
nvm install 24

4.2) Carga el módulo del kernel (una vez)

sudo modprobe vhci-hcd

Comprueba que está cargado:

lsmod | grep vhci

4.3) Descomprime la Web UI y prepara dependencias

1) Descarga el ZIP del proyecto y descomprímelo.
2) Entra en la carpeta descomprimida:

cd usbip-webui-0.1.0

3) Instala dependencias:

npm install

5) Arrancar el servidor web (Web UI)

Para que puedas acceder a la interfaz desde otro dispositivo de tu red, ejecuta:

sudo env HOST=0.0.0.0 PORT=8765 node server.js
  • HOST=0.0.0.0 – escucha en todas las interfaces (LAN)
  • PORT=8765 – puerto donde abrirás el navegador

Abrir la interfaz

  • En el mismo ordenador: http://127.0.0.1:8765
  • Desde otro dispositivo: http://IP_DE_TU_ORDENADOR:8765

Para saber la IP en Linux:

ip -4 addr

Nota: 0.0.0.0 NO es una IP a la que conectarse. Es solo para permitir conexiones desde otros dispositivos de tu red. Para abrir la web tienes que usar la IP real de tu PC (por ejemplo 192.168.1.50).


6) Acceso, login y seguridad básica

El webif trae login por defecto:

  • Usuario: admin
  • Contraseña: usbip

Se recomienda cambiar las credenciales por unas propias.


7) Uso: añadir servidor, refrescar, conectar y desconectar

7.1) Añadir y seleccionar un servidor remoto

En la tarjeta Servidores:

1) En “Nuevo servidor (IP/Host)”, pon la IP (ej. 192.168.1.10)
2) “TCP port” normalmente 3240
3) Pulsa Añadir
4) Selecciónalo en el desplegable y pulsa Usar

7.2) Ver dispositivos exportados (Refresh)

En la tarjeta Dispositivos, pulsa Refrescar.

Verás una tabla con:

  • BUSID (identificador del dispositivo en el servidor)
  • Descripción (nombre del dispositivo)
  • VID:PID (identidad del dispositivo, útil para auto-conectar)
  • Auto (checkbox)
  • Conectar / Desconectar

7.3) Conectar (attach)

Pulsa Conectar en el dispositivo que quieras.

Ahora debería aparecer en tu Linux como un USB “real”. Dependiendo del tipo:

  • USB-Serial → /dev/ttyUSB0 (o similar)
  • Almacenamiento → aparecerá en el sistema de discos
  • HID (teclado/ratón) → funcionará directamente

7.4) Desconectar (detach)

Pulsa Desconectar en el dispositivo.


8) Auto-conectar: mantener dispositivos conectados

Si activas el checkbox Auto en un dispositivo, la aplicación lo conectará cada vez que el servidor lo exporte.

Cambiar el intervalo

En el Web UI cambia “Intervalo auto-conectar (seg)” y pulsa guardar.

Consejo:

  • 5–10 segundos suele ir bien en LAN
  • Si el servidor remoto es inestable, sube el intervalo para no “machacar” el puerto 3240

9) Problemas típicos

No puedo abrir la Web UI desde otro dispositivo

1) Arráncalo así (muy importante el env):

sudo env HOST=0.0.0.0 PORT=8765 node server.js

2) Comprueba que escucha en 0.0.0.0:

sudo ss -lntp | grep 8765

3) Si hay firewall (ufw):

sudo ufw allow 8765/tcp

Error “could not connect to :3240”

  • El servidor USB/IP remoto no está activo
  • Puerto 3240 bloqueado
  • IP incorrecta

Prueba conectividad:

nc -zv 192.168.1.10 3240

Conecto pero el dispositivo no aparece

Mira logs del kernel:

dmesg -w

Lista puertos USB/IP:

sudo usbip port

Comprobar “a mano” si el servidor exporta bien

sudo usbip list --remote 192.168.1.10

10) Descargas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *