HOWTO Instalar una camara digital con UDEV

De Gentoo Linux Wiki

Este articulo es parte de las series de HOWTO.
Kernel & Hardware Red y Servicios Portage Relacionado con el Sistema Servidor X Juegos Misceláneos

Esta pagina pretende ser una traducción de: http://gentoo-wiki.com/HOWTO_Install_a_digital_camera

Tabla de contenidos

[editar] Introducción

Conectar una cámara Olympus Camedia D-40 Zoom (puede ver las especificaciones en español aquí)es mas fácil de lo que mucha gente piensa, este modelo en particular utiliza USB 1.1, cualquier persona que tenga esta cámara debería poder hacerla funcionar fácilmente con distribuciones que posean un núcleo 2.6.

A pesar de que este HOWTO sea específico para la cámara Olympus Camedia D-40 Zoom sus instrucciones pueden ser válidas para otras muchas cámaras.

[editar] Breve resumen

¿que es lo que haremos en este howto?

Instalaremos una cámara digital Olympus D-40 ZOON con UDEV.

Que paquetes utilizaremos

Usaremos los paquetes sys-fs/udev y sys-apps/hotplug.

Qué haremos paso a paso

Primero instalaremos los paquetes en el sistema y posteriormente configuraremos UDEV, para todo esto necesitara acceso como usuario root. Le recomiendo que en lugar de usar la cuenta root directamente use el comando su

[editar] Entorno Gentoo

[editar] Entorno del sistema

La cámara Olympus D-40 ZOOM digital ha sido preparada sobre la plataforma x86 usando un kernel 2.6.10. CFLAGS y CHOST son los siguientes:

CFLAGS

-march=athlon-xp -fomit-frame-pointer -pipe -msse -mmmx -m3dnow -O2

CHOST

i686-pc-linux-gnu

Kernel version

2.6.11-ck1

Con este HOWTO asumimos que conoces en profundidad el funcionamiento de gentoo y algun basico conocimiento sobre instalacion de dispositivos.

[editar] Opciones del núcleo

Para usar la cámara digital Olympus D-40 ZOOM el kernel debe estar configurado con soporte para USB, SCSI y el sistema de archivos vfat. Date cuenta de que si activas primero el soporte para USB, SCSI lo hará automáticamente puesto que depende de ello. Sin embargo, verifica que todo esta activado.

Primero, debes saber si necesitas OHCI OR UHCI para USB. Debido a que me placa base tiene el chipset VIA, yo necesito soporte para UHCI. Para comprobarlo, tipea el siguiente comando:

Código: Run Command
  1. lspci
0000:00:02.0 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4)
0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4)
0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4)

Si la salida que obtengas es mas genérica, deberás saber que driver usar visitando la pagina web del controlador USB. (NOTA: Intenta lspci -v primero, puesto que proporciona mucha mas información)

Entonces vamos a dar el soporte para USB, SCSI y vfat en el kernel. Esta cámara digital soporta USB 1.1 por lo que no tendrás que preocuparte si tienes soporte para USB 2.0 a menos que tengas otros dispositivos que puedan usar la tecnología USB 2.0. En este ejemplo, uso OHCI porque es lo que me driver USB requiere.

Prefiero compilar dichos soportes directamente en el kernel y no como modulos. La elección es tuya.

Código: Required Kernel options

Para soporte USB

Device Drivers -> USB Support
<*> Support for Host-side USB
[*]   USB device filesystem
<*> EHCI HCD (USB 2.0) support
<*> OHCI HCD support
<*> USB Mass Storage support

Para soporte SCSI

Device Drivers -> SCSI device support
[*]   legacy /proc/scsi/ support
<*>   SCSI disk support
<*>   SCSI generic support

Para vfat

File systems -> DOS/FAT/NT Filesystems
<*> MSDOS fs support
<*> VFAT (Windows-95) fs support

Elimina devfs (con 2.6 viene desactivado por defecto)

File systems -> Pseudo filesystems
[ ] /dev file system support (OBSOLETE)

Es necesario que añadas:

File systems -> Partition types
[*] PC BIOS (MSDOS partition tables) support

para que el systema lea la particion MSDOS de la cámara.

Debes estar seguro de que al iniciar el sistema se use udev y no devfs. En este ejemplo usamos grub. Un ejemplo de lilo esta disponible despues.

Archivo: grub.conf
mount /boot
nano /boot/grub/grub.conf

En los parametros que se le pasa al kernel, añadir: gentoo=nodevfs

kernel (hd0,0)/boot/2.6.10-ck5 ro root=/dev/hda3 gentoo=nodevfs vga=792

No olvides de desmontar la particion /boot antes de reiniciar, si es que dispones de /boot como partición.

Para los usuarios de lilo

Archivo: lilo.conf
nano /etc/lilo.conf

Añade antes de read-only esto:

append = "gentoo=nodevfs"

Acuerdate de ejecutar: "lilo -v" al modificar el archivo

Cuando hayas terminado de recompilar el kernel necesitas reiniciar con el nuevo a menos que hayas compilado como modulo Y ya estes en un kernel con UDEV. En este caso el paquete hotplug cargará los modulos necesarios una vez enchufes la cámara. En el caso de que no los carge automáticamente, deberas hacerlo manualmente de la siguiente manera:

Código: Load Module
# modprobe msdos
# modprobe vfat
# modprobe sd_mod
# modprobe sg
# modprobe usbcore
# modprobe ehci-hcd (para soporte USB 2.0, si lo necesitas)
# modprobe ohci-hcd O # modprobe uhci-hcd (dependiendo de cual sea el tuyo)

NOTA: Debido a que el dispositivo es USB y tiene un sistema de archivos, SCSI debe estar soportado. Todos los sistemas de archivos conectados a un nodo de linux usa una "virtual" interfaz SCSI para proporcionar acceso al driver. Porqué? Realmente lo desconozco

[editar] Verificar la presencia de la camara

Después de reiniciar el ordenador o cargar el modulo correspondiente debe conectar su cámara a un puerto USB para crear el fichero de dispositivo /dev/sgX donde X es el número de dispositivo para saber si el sistema reconoce el dispositivo verifique la salida de dmesg:


Código: View dmesg output
# dmesg
usb 3-2: new full speed USB device using ohci_hcd and address 10
scsi2 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 10
usb-storage: waiting for device to settle before scanning
 Vendor: OLYMPUS   Model: C-40Z/D-40Z       Rev: 1.00
 Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sdb: 256000 512-byte hdwr sectors (131 MB)
sdb: assuming Write Enabled
sdb: assuming drive cache: write through
SCSI device sdb: 256000 512-byte hdwr sectors (131 MB)
sdb: assuming Write Enabled
sdb: assuming drive cache: write through
sdb: sdb1
Attached scsi removable disk sdb at scsi2, channel 0, id 0, lun 0
Attached scsi generic sg0 at scsi2, channel 0, id 0, lun 0,  type 0
usb-storage: device scan complete

Si la salida es similar a la de arriba puede continuar con el proceso de lo contrario debería verificar la configuración de su núcleo o resolver el problema a nivel de hardware.

[editar] Instalación de paquetes

Este es quizás el paso mas fácil del proceso, para ello se recomienda pasar el parametro pretend a emerge para verificar dependencias aunque esto es recomendable con todos los paquetes. UDEV es un paquete pequeño así que se compilara mas o menos en un minuto, tal vez en máquinas lentas tarde algo mas.


Código: Install UDEV
# su
Password:
# emerge sync
# emerge udev hotplug -pv
# emerge udev hotplug

[editar] Configurando UDEV

Ahora necesitara escribir una regla de UDEV. Para ello es necesario obtener la información que tendrá el sistema del dispositivo desde el propio dispositivo. Lo primero es averiguar la dirección del sistema sobre dispositivos.


Código: udevinfo
# udevinfo -q path -n /dev/sg0
/class/scsi_generic/sg0

Mediante la salida que se muestra abajo podrá obtener el número de serie del dispositivo, necesitara esta información mas adelante para construir la regla de UDEV

# udevinfo -a -p /sys/class/scsi_generic/sg0
BUS="usb"
ID="3-2"
SYSFS{bConfigurationValue}="1"
SYSFS{bDeviceClass}="00"
SYSFS{bDeviceProtocol}="00"
SYSFS{bDeviceSubClass}="00"
SYSFS{bMaxPower}="  0mA"
SYSFS{bNumConfigurations}="1"
SYSFS{bNumInterfaces}=" 1"
SYSFS{bcdDevice}="0100"
SYSFS{bmAttributes}="c0"
SYSFS{detach_state}="0"
SYSFS{devnum}="10"
SYSFS{idProduct}="0105"
SYSFS{idVendor}="07b4"
SYSFS{manufacturer}="OLYMPUS"
SYSFS{maxchild}="0"
SYSFS{product}="C-40Z/D-40Z"
SYSFS{serial}="000202125180"
SYSFS{speed}="12"
SYSFS{version}=" 1.10"

La línea que esta en negritas es la que nos interesa, no la pierda de vista porque la necesitaremos mas adelante.

Ahora abra en su editor de textos favorito el fichero /etc/udev/rules.d/50-udev.rules y añada la siguiente linea:

BUS="usb", SYSFS{serial}="000202125180", KERNEL="sd?1", NAME="%k", SYMLINK="olympus"

Lo que está en negrita representa la información necesaria de los pasos anteriores. Se añade esta linea en la sección USB por razones obvias.

Cuando haga estos cambios desconecte y vuelva a conectar el dispositivo para que los cambios tengan efecto.

[editar] Pasos finales

A estas alturas su cámara ha de estar conectada, para asegurarse de que hotplug esta funcionando desconecte y vuelva a conectar, el ultimo paso sera editar el fichero fstab, su cámara deberá estar encendida, asegurese de tener batería o un adaptador de corriente alterna, se recomienda usar el adaptador de corriente para ahorrar pilas o mejor usar baterías recargables si es posible.

El ultimo paso es editar el fstab para indicarle al sistema donde tiene que montar el dispositivo:


Archivo: fstab
#<fs>                <mountpoint>   <type>    <opts>                 <dump/pass>
/dev/olympus    /media/camera   vfat         noauto,user,exec     0 0

A continuación cree el directorio de montaje en este ejemplo se usa /media/camera procure darle el mismo nombre que le dio en el fichero fstab.

La columna <fs> ha de ser /dev/olympus debido a la regla de udev que creamos en /etc/udev/rules/50-udev.rules si cambia el valor en negrita:

BUS="usb", SYSFS{serial}="000202125180", KERNEL="sd?1", NAME="%k", SYMLINK="olympus"

También debería cambiar el parámetro de la columna <fs> en fstab, no olvide ejecutar udevstart si no no usara los nuevos parámetros.

Importante recordar

1. Conectar la cámara
2. Asegurarse de que tiene baterias o esta conectada a la corriente
3. Encender la camara
4. reiniciar si ha recompilado el núcleo

después de editar fstab Personalmente uso KDE y cuando accedo a mi cámara en konqueror en /dev/camera konqueror la monta por mi, posiblemente sea porque tengo compilado automount compilado en el núcleo, si no se monta automáticamente puede probar a hacerlo manualmente

Código: mount camera
# su
Password:
# mount /media/camera
# exit

La camára estará lista para usar

Para recordar

1. Enchufe la cámara
2. Asegurese de tener batería o estar conectado a la corriente electrica
3. Encienda la camara
4. Reinicie si ha recompilado el núcleo

[editar] Tomar fotos en GNOME

Advierta que GNOME puede usar automáticamente una cámara cuando esta esta conectada, para ello es necesario tener el paquete gnome-base/gnome-volume-manager y configurarlo en las preferencias, para mas información puede visitar en ingles HOWTO gnome volume manager. El comando predeterminado para las cámaras es gthumb (media-gfx/gthumb) y se reconocerán las cámaras y su sistema de almacenamiento con soporte en gphoto. Puede usar el guión de David Zeuthen que usara gthum en el directorio donde la cámara guarda las fotos. Se ejecuta de la siguiente forma: /path/to/gvm-gthumb-wrapper %h (nombre del guión) Al montar gnome la cámara preguntara por el directorio de la fotos y podrá usar gthum con el directorio de la cámara

[editar] Notas finales

Recuerde, Hotplug es responsable de saber cuando se conecta el hardware y Udev se encarga de darle el nombre de dispositivo. Para mas información consulte la página de manual de UDEV man udev

[editar] Soporte

Gentoo Forums
Contact the author
An alternative HOWTO

Herramientas personales
Otros idiomas