28 de diciembre de 2008

HOWTO: Utilizar Un Telefono Symbian SmartPhone como Webcam en Ubuntu 8.10 con SmartCam

Títulos Largos, pero útiles. (Por cierto, Esta _no_ es una broma del día de los inocentes, lo digo sólo por la fecha)

Hoy me agarro la curiosidad de probar este experimento que no creía que era posible, hasta que una amiga me incito a intentar y después de investigar un poco me di cuenta que el software necesario, efectivamente, existe.

Primero veamos los requerimientos previos a la instalación:

Sistema Operativo: GNU/Linux o Windows
Telefono Celular: Symbian SmartPhone s60
Tecnología Bluetooth en la computadora

En este Howto usaremos:
-Ubuntu Linux 8.10 Intrepid Ibex
-Nokia 6260 Symbian SmartPhone(Del que ya he hablado)
-Dispositivo Bluetooth USB


Primero, Descargamos la aplicación necesaria, SmartCam, esta aplicación incluye los binarios del teléfono, los de la computadora, el código fuente y el driver (controlador) necesario.

Bien, primero veamos el lado de la computadora.

Descomprimimos el archivo zip en el lugar de nuestra preferencia.

Ahora, lo primero que hay que hacer es recompilar el driver para que se adapte a nuestra versión del kernel, aquí es donde encontré el primer problema, ya que el código parece usar funciones despreciadas en las nuevas versiones del kernel, afortunadamente encontré un parche para el archivo. Descargamos el parche aquí y lo ponemos en la carpeta smartcam donde quiera que hayamos descomprimido y llegamos a ese directorio desde la terminal y ejecutamos el siguiente comando

patch -p0 < smartcam-linux-2.6.27.1.patch
Ahora compilamos el controlador:
cd driver
make -C /lib/modules/2.6.24-18-generic/build M=`pwd` modules
Y lo cargamos:
sudo modprobe videodev
sudo insmod smartcam.ko
chmod 0666 /dev/video0
Cambiemos de directorio a la aplicación ahora y compilamos utilizando los comandos del ReadMe.txt
cd ../app
gcc `pkg-config --cflags --libs gtk+-2.0 gthread-2.0` -lbluetooth smartcam.c -o smartcam
Si no hay ningún error entonces ya podremos ejecutar la aplicación simplemente con:
./smartcam
En caso de haber un error en la compilación puede ser que no tengamos algunas dependencias necesarias así que las instalamos desde los repositorios con el siguiente comando:
sudo apt-get install build-essential libbluetooth-dev
y tratamos de compilar de nuevo:
gcc `pkg-config --cflags --libs gtk+-2.0 gthread-2.0` -lbluetooth smartcam.c -o smartcam
Debemos tener la siguiente ventana ahora:



Ok, con esto terminamos la configuración por parte de la computadora, ahora vamos al teléfono. Tenemos que pasar el archivo de instalación correcto al celular, los 3 archivos se encuentran en el directorio 'smartcam/release/phone_files', los pasamos con nuestro método preferido, en mi caso bluetooth fue suficiente y my telefono Nokia 6260 lleva Symbian 2nd Ed, así que pase SmartCamS602ndEd.SIS y lo instale en el teléfono:

Lo corremos y tendremos esta pantalla:



Ahora sólo tenemos que dar Connect y seleccionar nuestra computadora:


Si todo salió bien, ahora deberemos ver la cámara en lugar del ojo de antes en la ventana:


OMG FUNCIONA!

Resumen de comandos (Para los que les da flojera leer y sólo quieren ejecutar cosas en la terminal)

unzip smartcam_v_2008.09.18.2.zip
cd smartcam
wget http://sathya.freeshell.org/smartcam-linux-2.6.27.1.patch
patch -p0 < smartcam-linux-2.6.27.1.patch
cd driver
make -C /lib/modules/2.6.24-18-generic/build M=`pwd` modules
sudo modprobe videodev
sudo insmod smartcam.ko
chmod 0666 /dev/video0
cd ../app
sudo apt-get install build-essential libbluetooth-dev
gcc `pkg-config --cflags --libs gtk+-2.0 gthread-2.0` -lbluetooth smartcam.c -o smartcam
./smartcam

Y listo, ahora nuestro SmartPhone es también una webcam en Ubuntu, el dispositivo se encuentra en /dev/video0 talvez después haga el tutorial de Windows, si alguien lo pide o me pica la curiosidad, aunque creo que será más fácil que en linux, pero no tan divertido :P.

No duden en preguntar si tienen algún problema/inquietud en los comentarios.

Problemas que pueden surgir:

En caso de que no se pueda accesar a la cámara después de reiniciar, tenemos que volver a cargar los drivers y cambiar el modo de acceso con los comandos:
gksu modprobe videodev
gksu insmod /home/mario/smartcam/src/driver/smartcam.ko
gksu chmod 0666 /dev/video0
Lo que hice fue ponerlo en un script, junto con la dirección para ejecutar el programa:
#! /bin/sh
gksu modprobe videodev
gksu insmod /home/mario/smartcam/src/driver/smartcam.ko
gksu chmod 0666 /dev/video0
/home/mario/smartcam/src/app/smartcam &
Y pregunta la contraseña de sudo al iniciar el programa para hacer las tareas que lo requieren, así lo ejecuto cadavez que necesite SmartCam

3 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Hola, no consigo pasar del punto "make -C /lib/modules/2.6.27-11-generic/build M=`pwd` modules" Mi controlador es 2.6.24-18-generic y es el que he puesto, y sustituí 2.6.24-18-generic por este (aunque en mi carpeta /lib/modules tengo cuatro, así que cogí el mas alto pensando que seria el último el adecuado). Y me quede ahí estancado, si hay alguna forma de que me puedas orientar.. Gracias

    ResponderEliminar
  3. @Antonio Hmm ¿que error te marca? podrías tratar con make -C /lib/modules/`uname -r`/build M=`pwd` modules para asegurar que vaya a la carpeta correcta

    ResponderEliminar