viernes, mayo 06, 2011

Problema imagen bocabajo Webcam Asus N61JQ en ubuntu 10.10

Al poner Ubuntu 10.10 en mi portátil Asus N61Jq resulto que la imagen de la webcam aparecia bocabajo.
El problema parece que es debido a que la webcam está montada con un conexionado que no es el correcto.

Las posibles soluciones a este problema son:
1 Parchear el modulo de kernel para que de la vuelta a la imagen o para que por lo menos disponga de un parametro para hacerlo.
2 Modificar las librerías de usuario que usan las aplicaciones para acceder a la webcam, de forma que sean estás librerías las encargadas de cambiar la imagen.

En mi caso, descarte la primera opción, puesto que los parches del módulo que encontré no me compilaban con las versiones de kernel/modulos de mi ubuntu y no me apetecia ni tener que depurar el problema, ni mantener posteriormente una versión compilada (sin ser de paquete). Vamos, que básicamente lo descarte por perezoso :-)

Así que busqué la solución centrandome en la segunda vía, es decir, en encontrar parches para las librerías de acceso a la webcam. Por suerte, alguien hizo lo mismo e incluso dejo la solución en forma de librería v4l modificada, compilada y en un bonito paquete deb que ha dejado disponible en http://ppa.launchpad.net/libv4l/ppa/ubuntu.

Por tanto, para instalar el paquete parcheado de la librería v4l, debemos añadir el repositorio ppa a la lista de repositorios, y posteriormente actualizar la lista de paquetes e instalar el paquete libv4l-0.

En mi caso ejecute como usuario normal los siguientes comandos:

REPO=http://ppa.launchpad.net/libv4l/ppa/ubuntu
DISTRO=`lsb_release -c | awk '{print $2}'`
echo -e "\n# libv4l PPA\ndeb ${REPO} ${DISTRO} | awk '{print $2}'` main" \
| sudo tee -a /etc/apt/sources.list
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com C3FFB4AA
sudo apt-get update
sudo apt-get install libv4l-0


Con estos sencillos pasos, disponemos de una nueva versión de la librería v4l, que además no colisiona con la librería que ya tuviésemos disponible...

La mayor parte de las aplicaciones que usan la v4l inmediatamente usarán la nueva librería y el problema quedará solucionado. Pero algunos programas, como el skype, no usan directamente la librería v4l, por lo que se necesita forzar a que la usen, mediante el LD_PRELOAD.
Por ejemplo para arrancar el skype usando la nueva librería instalada podemos usar el comando:

LD_PRELOAD /usr/lib32/libv4l/v4l1compat.so skype



Se puede consultar información ampliada sobre este problema en:
http://radu.cotescu.com/flipped-images-ubuntu-webcam/
http://gejanssen.com/howto/U53jc/index.html#mozTocId84857