gentoo linux, java, software libre y otras hierbas
Sep, 26 2009 - 10:00 am

Trabajando con el Kernel Linux (II)

Anterior artículo…

Continuando con la serie de posts dedicados al Kernel, hoy vamos a hablar sobre las cámaras web y la herramienta sysctl.

Cámaras Web

webcam_pinguino

En la actualidad, el kernel tiene muy buen soporte para las cámaras web, tanto las integradas como las externas. Basado en mi experiencia, nunca he tenido ningún problema con dispositivos de captura de video en Linux aunque me imaginó que en algún hardware habrá incompatibilidades. La ventaja es que los desarrolladores del kernel cada día trabajan por mejorarlo y desarrollando controladores para maximizar el soporte en la mayor cantidad de máquinas posibles.

Lo primero que debemos hacer es identificar la referencia del dispositivo. Si tienes un portatil y lo que buscas es hacer funcionar la cámara integrada que trae, usando el driver UVC sería suficiente:

Device Drivers  --->
     <*> Multimedia support  --->
          [*]   Video capture adapters  --->
               [*]   Autoselect pertinent encoders/decoders and other helper chips
               [*]   V4L USB devices  --->
                    <*>   USB Video Class (UVC)
                          [*]     UVC input events device support

Ahora, en caso de que la cámara sea externa debes conectarla y hacer un lsusb. Hay tantos modelos disponibles que sería difícil hacer una guía definitiva, además de que ya existe un completo HOWTO que explica esto. Lo que haré, será mostrar un ejemplo haciendo uso de una vieja cámara Genius que tengo. Si la conecto y hago un dmesg puedo ver la información del dispositivo:

[ 4601.153221] usb 5-1: New USB device found, idVendor=093a, idProduct=2471
[ 4601.153228] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 4601.153235] usb 5-1: Product: CIF Single Chip
[ 4601.153241] usb 5-1: Manufacturer: Pixart Imaging Inc.

Ahora lsusb:

Bus 005 Device 003: ID 093a:2471 Pixart Imaging, Inc.

Teniendo el ID, debemos buscar cuál es el módulo necesario para esta cámara. Aquí tienes una larga lista de IDs con su respectivo módulo. Si buscamos también en la base de datos de drivers del kernel veremos la configuración que debemos hacer y el módulo a activar. El driver en cuestión es: gspca_pac207.

<*>   GSPCA based webcams  --->
     <M>   Pixart PAC207 USB Camera Driver

Si compilaste como módulo no olvides agregarlo al inicio del sistema (si es lo que deseas). En Gentoo con OpenRC y Baselayout 2:

# echo ‘modules_2_6=”${modules_2_6} gspca_pac207″‘ >> /etc/conf.d/modules

Para esta cámara es necesario tener instalada la librería v4l (Video 4 Linux).

# emerge -av media-libs/libv4l
En general, este es el proceso para todos las cámaras, aunque en algunas puede haber variaciones. Con los enlaces que expuse anteriormente debe ser suficiente para encontrar la información relativa a tu hardware.

Y listo. Reiniciamos con el nuevo kernel y usamos cualquier programa como cheese para comprobar que todo funciona bien.

Sysctl

A raíz de un comentario de arpunk, he decidido posponer uno de los temas que iba a tocar en este artículo y hablar sobre sysctl.

El kernel Linux es tan flexible que te permite modificar la manera en que trabaja, dinámicamente, a través del comando sysctl. Sysctl provee de una interfaz que permite examinar y cambiar cientos de parámetros en núcleos Linux y BSD. Gracias a esta herramienta podemos modificar y optimizar el kernel sin tener que recompilarlo. Los cambios son realizados inmediatamente e incluso pueden ser definidos como persistentes, de manera que continúen después de reiniciar.

Para ver los parámetros actuales del kernel en ejecución:

sysctl -a
sysctl -n vm.swappiness

Con el segundo lo que hacemos es ver el valor de un determinado parámetro, en este caso vm.swappiness. Suponiendo que quisiéramos decirle al kernel que use más la memoria RAM que la swap ó habilitar el forwarding en IPv4, bastaría con cambiar el valor de estas variables:

sysctl vm.swappiness=10
sysctl net.ipv4.conf.all.forwarding=1

Recuerda que las modificaciones que hagas con este comando serán temporales, y la próxima vez que reinicies el sistema se cargarán los valores por defecto. Para cambiar este comportamiento, hay que editar el archivo /etc/sysctl.conf

echo ‘net.ipv4.conf.all.forwarding=1′ >> /etc/sysctl.conf

Básicamente eso es sysctl. El tema podría tornarse más extenso pero la idea de estos artículos, es tan sólo, recopilar conceptos en torno al kernel Linux. Para más información man sysctl.

Hasta aquí por hoy. En el próximo artículo hablaremos un poco de optimizaciones para el procesador y de otras buenas prácticas a la hora de compilar el núcleo.

6 Comentarios | deja el tuyo

4 enlaces entrantes

2 Comentarios en “Trabajando con el Kernel Linux (II)”

  1. Asdruval dice:

    Saludos, leyendo tu post resulta que he tenido siempre un gran rollo con mi web cam Genius Slim N310. Lo que sucede es que mi sistema no la detecta.Estaba intentanto trabajar con el kernel pero llego a un punto donde se me traba todo. Y es con el fulano MAKEDEV. Podrias decirme please con que editor lo trabajo. Hago todo el procedimiento de la página http://www.tldp.org/HOWTO/Webcam-HOWTO/dev-intro.html#DEV-MANUAL paro nada.
    Cualquier ayuda seria apreciada.

    THanks.

  2. fermin dice:

    Hola
    Excelentes camaras¡¡

    Saludos

¡Déjanos tu comentario!