Cómo Compartir un USB mediante la Red de Internet con Linux Fu

¿Tienes un dispositivo USB conectado a una computadora en otra habitación y quieres usarlo desde la comodidad de tu oficina?

Una opción es usar escritorio remoto, pero puede ser lento e incómodo. Afortunadamente, en Linux casi todo es posible si sabes cómo hacerlo.

En este artículo, te mostraré cómo compartir un dispositivo USB a través de la red.

Las herramientas ️

Para lograrlo, usaremos un programa llamado usbip. Sin embargo, no es tan simple como instalarlo y listo.

Se necesitan ciertos módulos del kernel y un daemon (usbipd) en la máquina que compartirá los dispositivos USB (servidor).

En Ubuntu, usbip viene en el paquete linux-tools-common así que puedes intentar instalarlo con:

sudo apt-get install linux-tools-common

Quizás, debas compilarlo manualmente porque uso un kernel personalizado (xanmod).

Módulos necesarios:

  • En el servidor (la computadora con los dispositivos USB):
    • usbip_core
    • usbip_host
    • usbipd (el daemon)
  • En el cliente (la computadora que accederá al USB):
    • vhci_hcd
    • usbip (herramienta de control)

Si tienes un Raspberry Pi, la instalación es más sencilla:

sudo apt install usbip hwdata usbutils

Configuración inicial ⚙️

1️⃣ Cargar los módulos en ambas máquinas

Ejecuta estos comandos en el servidor:

sudo modprobe -a usbip_core usbip_host

Y en el cliente:

sudo modprobe -a vhci_hcd

Para que estos módulos se carguen automáticamente al arrancar el sistema, agrégales a /etc/modules-load.d.

2️⃣ Iniciar el daemon en el servidor

Ejecuta este comando en la máquina que compartirá los dispositivos:

sudo usbipd -D

Puedes configurarlo para que se inicie automáticamente con systemd o rc.local.

3️⃣ Buscar dispositivos USB disponibles

En el servidor, usa este comando para listar los dispositivos USB disponibles:

sudo usbip list -l

Esto mostrará un listado de dispositivos USB con sus bus ID, por ejemplo:

- busid 4-3.1 (0781:5575)
  SanDisk Corp. : Cruzer Glide (0781:5575)

Para compartirlo, usa el siguiente comando, reemplazando 4-3.1 por el bus ID de tu dispositivo:

sudo usbip bind -b 4-3.1

4️⃣ Conectar el USB en el cliente

Desde la máquina cliente, verifica los dispositivos disponibles en el servidor (reemplaza 192.168.1.2 con la IP del servidor):

sudo usbip list -r 192.168.1.2

Si ves el dispositivo listado, puedes conectarlo con:

sudo usbip attach -r 192.168.1.2 -b 4-3.1

Ahora, en la computadora cliente, el USB aparecerá como si estuviera conectado físicamente. ¡Misión cumplida!

Ejemplo práctico: Compartir una memoria USB

En el servidor:

1️⃣ Lista los dispositivos

bash
sudo usbip list -l

2️⃣ Encuentra el ID

Debes encontrar el ID del dispositivo (por ejemplo, 5-2.1.2.3) y compártelo:

sudo usbip bind -b 5-2.1.2.3

En el cliente:

1️⃣ Lista los dispositivos exportados por el servidor:

sudo usbip list -r 192.168.1.2

2️⃣ Conéctalo

sudo usbip attach -r 192.168.1.2 -b 5-2.1.2.3

3️⃣ Monta la unidad USB

sudo mount /dev/sdb3 /mnt

4️⃣ Usa el dispositivo como cualquier otro USB

Cuando termines, desmonta y desconéctalo:

sudo umount /mnt
sudo usbip detach -p 00  # El número de puerto lo obtienes con 'usbip port'

Y en el servidor, libera el dispositivo:

sudo usbip unbind -b 5-2.1.2.3

Clientes USB en Windows ️

Existen clientes USBIP para Windows pero requieren activar el modo de prueba y pueden ser inestables. Existen dos versiones disponibles, pero no las he llegado a probar.


Conclusión

Con usbip puedes acceder a dispositivos USB en otra computadora como si estuvieran conectados físicamente. Esto es útil para compartir discos duros, impresoras, dongles de seguridad y más.

Aunque el proceso de configuración puede ser algo técnico, una vez funcionando, es bastante práctico.

¡Prueba este método y haznos saber cómo te fue!


Descubre más desde CIBERED

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Deja un comentario