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
usbipexportando 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 portusbip detach -p <PUERTO>
3) Qué necesitas (requisitos)
En tu Linux (cliente)
- Node.js (recomendado Node 18+ / 20+)
usbipinstalado- El módulo del kernel
vhci-hcdcargado - 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.0NO 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 ejemplo192.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
