MarioDebian, mi devlog

Bitácora de un desarrollador newbie.

USBIP ya funciona

Hace un tiempo hablé un poco de refilón sobre USBIP, [USB/IP] un sistema que permite «mover» el punto de conexión de un dispositivo de una máquina a otra (por red) para por ejemplo conectarnos a un scaner, webcam o impresora remota...

Parece que se ha avanzado mucho en el proyecto y de hecho la parte que se ejecuta en el kernel está en el staging (algo como la cuarentena de nuevos drivers que entran al kernel antes de considerarse estables...) tanto es así que incluso las tools están en la cola NEW de Debian. Los paquetes que hice en su día no generaban libusbip así que habrá que tener cuidado cuando entren para no provocar conflictos.

Hoy me he descargado la última versión de las tools (0.1.7) y las fuentes del módulo de un kernel 2.6.28, lo he compilado en un 2.6.26-1-486 y parece que funciona Laughing

Ahora estoy haciendo pruebas con un terminal ligero sobre TCOS (recuerdo que ya teníamos soporte USBIP, aunque desactivado) y he conseguido pasar al servidor tanto una memoria USB (que se ha montado automáticamente Tongue out) como una captura de televisión analógica.

Para que esto sea útil en TCOS me surgen algunos problemas...

  • Tengo que hacer un nuevo interfaz de usuario para ver que dispositivos USB hay en su terminal y conectarlos al servidor...
  • lo que me lleva a modificar tcos-devices-ng o crear un programa nuevo...
  • y lo más complicado, dar permisos exclusivos sólo a ese usuario cuando el dispositivo se conecte al servidor. (jugar con bits SUID y ver que dispositivos /dev se crean al cargar el driver del dispositivo en el servidor)
  • Este nuevo driver puede provocar comportamientos no demasiado buenos en el servidor ¿que pasa si desenchufamos el terminal sin hacer «dettach»?

Para empezar he creado un pequeño parche para que la salida de «bin_driver --list» se pueda leer más facilmente por un script y poderlo mandar por XMLRCP al servidor. No se si mandarselo al upstream para ver si al menos lo tiene en cuenta. Diferencias:

La que viene por defecto

sudo bind_driver --list

List USB devices
- busid 3-3 (04b4:6830)
3-3:1.0 -> usb-storage
- busid 1-2 (147e:2016)
1-2:1.0 -> none
- busid 7-1 (05e3:0608)
7-1:1.0 -> hub
- busid 7-1.2 (04fc:0c15)
7-1.2:1.0 -> usb-storage
- busid 7-1.4 (05e3:0608)
7-1.4:1.0 -> hub
- busid 4-2 (0573:4d28)
4-2:1.0 -> usbvision
- busid 7-1.4.4 (046d:c062)
7-1.4.4:1.0 -> usbhid

La que añade el parche

sudo bind_driver --list2
#busid=3-3#usbid=04b4:6830#3-3:1.0=usb-storage#
#busid=1-2#usbid=147e:2016#1-2:1.0=none#
#busid=7-1#usbid=05e3:0608#7-1:1.0=hub#
#busid=7-1.2#usbid=04fc:0c15#7-1.2:1.0=usb-storage#
#busid=7-1.4#usbid=05e3:0608#7-1.4:1.0=hub#
#busid=4-2#usbid=0573:4d28#4-2:1.0=usbvision#
#busid=7-1.4.4#usbid=046d:c062#7-1.4.4:1.0=usbhid#

De momento no hay mucho más que decir, faltan muchas pruebas para que esto sea funcional.

UPDATE (20090126):

Parche aceptado en el proyecto y posiblemente sea co-mantenedor del paquete en Debian


Articulos relacionados:

Comentarios

  1. Juan ¡Genial!
    24/01/2009 | 23:29

    Supongo que esto es parte de lo que hablaba en un post de la lista de correo hace un tiempo sobre el lector de huella. Si sigue el proyecto que tenemos entre manos adelante, cuenta conmigo para hacer pruebas con este tipo de dispositivos.

Comentarios cerrados