martes, 19 de agosto de 2008

Montar un FingerPrint reader USB en VirtualBox

Hola, con los avances tecnologicos y nuevos desarrollos es necesario ocupar las ultimas tecnologías para los sistemas web, las que nos permiten poder desarrollar aplicaciones que se integran con dispositivos de hardware, y que aveces en linux no contamos con los driver.

Bueno en mi caso tengo sobre linux corriendo VirtualBox de Sun, y en el tengo Ventanukos XP (lease Windows XP), tengo ademas en el ventanukos una aplicación que ocupa componentes ActiveX y un lote de archivos dll, aunque no son elegantes y no se les ve mucho futuro debemos utilizarlos para nuestras aplicaciones.

La aplicación cuenta con un formulario web, el cual contiene un componente ActiveX que se conecta con un dispositivo usb, este dispositivo es un FingerPrinter, es decir contiene una pantalla, un lapiz y un lector de huellas dactilares. Debido a esto debo correrlo en ventanukos XP.

Por defecto VirtualBox no reconoce los dispositivos USB, y menos un FingerPrinter.

Por lo tanto me he dado la paja de investigar un poco el VirtualBox para que lo reconozca.

Leyendo, he resuelto el tema de la siguiente forma:

1.- Primero debo habilitar la lectura y permisos de los USB en los archivos de configuración de VirtualBox, para comenzar, vamos a la consola y escribimos lo siguiente:

slack@slacktop:~$ sudo gedit /etc/init.d/mountdevsubfs.sh

con este comando entramos a editar el archivo mountdevsubfs.sh, y descomentamos las siguientes lineas:

#
# Magic to make /proc/bus/usb work
#
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount --rbind /dev/bus/usb /proc/bus/usb

Quedando de la siguiente forma:

#
# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount --rbind /dev/bus/usb /proc/bus/usb

Guardamos los cambios y cerramos Gedit.

2.- Luego debemos modificar otro archivo para agregar permisos al dipositivo, lo hacemos ingresando el siguiente comando.

slack@slacktop:~$ sudo gedit /etc/udev/rules.d/40-permissions.rules

Modificamos lo siguiente:

# Block devices
SUBSYSTEM!="block", GOTO="block_end"
ATTRS{removable}!="1", GROUP="disk"
ATTRS{removable}=="1", GROUP="floppy"
SUBSYSTEMS=="usb", GROUP="plugdev"

Quedando de la siguiente forma:

# Block devices
SUBSYSTEM!="block", GOTO="block_end"
ATTRS{removable}!="1", GROUP="disk"
ATTRS{removable}=="1", GROUP="floppy"
SUBSYSTEMS=="usb", MODE="0666" GROUP="plugdev"

Notese que agregamos al dispósitivo USB el MODE="666", con esto le damos permiso al dispositivo para ser ejecutado.

Tambien modificamos el parrafo USB serial converter, como se ve:

# USB serial converters
SUBSYSTEM=="usb_device", GOTO="usb_serial_start"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GOTO="usb_serial_start"
GOTO="usb_serial_end"

Dejandolo de la siguiente forma:

# USB serial converters
SUBSYSTEM=="usb_device", MODE="0666"
#SUBSYSTEM=="usb_device", GOTO="usb_serial_start"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GOTO="usb_serial_start"
GOTO="usb_serial_end"

Solo comentamos la linea que habia anteriormente y la incluimos modificada.

Cerramos Gedit y vamos al fstab.

3.- A continuación debemos agregar el montaje de los USB al archivo FSTAB, vamos a la consola nuevamente:

slack@slacktop:~$ sudo gedit /etc/fstab

Este comando abre Gedit con la información de los dispositivos y unidades que monta Linux por defecto. agregamos al final la siguiente linea:

#usbfs
usbfs /proc/bus/usb usbfs devgid=1001,devmode=666 0 0

Con esto le decimos que monte el dispositivo USB con modo de permiso 666 de ejecucion.

Y listo.

Ahora solo debemos ejecutar el montado de lo que configuramos, si no queremos reiniciar la maquina podemos ingresar el siguiente comando por consola:

slack@slacktop:~$ sudo mount -a

Ahora fui al VirtualBox, conecte el USB FingerPrinter y lo reconocio al choque

Creo que no debemos tener ningun problema para trabajar correctamente con el VentanukosXP sobre VirtaulBox de Sun y este sobre Linux ah.. q tal

Saludos y Suerte !!