Gpio en la fonera

28 abril 2007

Mucho más fácil de lo que pensaba en un principio.
Descargamos el módulo para el kernel 2.4.32 (el que trae el firmware de fon en la misma página podemos encontrar un módulo para los kernels 2.6)
Lo instalamos insmod proc_gpio.o
y ya está….
Para activar el pin 1 como salida basta con ejecutar
echo 1 >/proc/gpio/1_dir
Para ponerlo en estado alto
echo 1 >/proc/gpio/1_out
(Si quisieramos leer pondríamos a 0 el “1_dir” y haríamos cat /proc/gpio/1_in
Basta conectar los pines a los conectores que hay entre la antena y el conector ethernet (los dos primeros y los dos últimos a los que se ve claramente que llegan pistas de la placa) y otro más a tierra (yo he usado la de la antena)

Pinout Fonera
GPIO Descripción
0 TP3
1 pin 5 de SW1
2 WLAN LED
3 pin 1 de SW1
4 pin 2 de SW1
5 RESET (!)
6 RESET botón
7 pin 6 de SW1


Además he añadido unos conectores a los 3 led de estado que así puedo sacar o utilizar para otros fines. También es posible usar el reset y algun otro más que aún no he localizado (podemos ver donde conectar los pines aquí.
Un ejemplo usando un led RGB conectado a 3 de los pines

El siguiente paso será controlar algo más útil: calefacción, cocina, luces,…
Informacion en español y en inglés
PD: Después de usarle varias veces he visto algunas cosas:
* No guardeis nada en /tmp, se borra cada vez que se reinicia.
* Algunas veces no funcionan al cambiar el estado de los pines (si son de entra o salida), por lo que siempre hay que ver el valor después de hacerlo para estar seguro con cat /proc/gpio/n_*
Gracias Varsawski

Para obtener un entorno de desarrollo para generar programas para la fonera (sistema operativo openwrt) basta que nos descarguemos el paquete de código que distribuye Fon.
Podemos obtenerlo de la página de descargas de fon. Incluye no sólo el código fuente sino el entorno de compilación cruzada.
Una vez obtenido lo descomprimimos y lo compilamos con make V=99 (si nos sentimos capaces podemos configurar el resultado antes de compilar con make menuconfig V=99 o make config V=99)
Necesité instalarme algunos paquetes como g++, zlib1g-dev, flex, byacc, bison

Añadimos al path el path de la tool-chain para mips
$ PATH=$PATH:/some/where/fonera-src/staging_dir_mips/bin
$ export PATH

Creamos un fichero con codigo fuente

$ cat > test.c #include

int
main(int argc, char *argv[])
{
printf("Programando para la fonera!\n");
}
EOF

Lo compilamos
$ mips-linux-uclibc-gcc test.c -o test
Lo copiamos a la fonera
$ scp test root@fonera:/tmp
y a ejecutarlo!!!
root@OpenWrt:~# ./test
Ahora solo falta programar algo interesante….

Sigo realemente encantado con mi n800. Lo uso mucho y cada vez más. Si algo me tiene fascinado es el modelo de desarrollo de Nokia.

Adaptan un sistema operativo a sus necesidades, toman lo que necesitan y publican lo que quieren. Se sirve de una comunidad de fanáticos desarrolladores a los que deberían de incluir en plantilla porque saben bastante más que los propios desarrolladores de nokia.

Para muestra los correos de Siarhei Siamashka en la lista de desarrolladores de maemo donde corrije (y mejora) el código del encargado del sistema (del que omitiré el nombre) de reproducción de video del n800, que termina disculpándose por la falta de tiempo para ver sus revisiones (pensaba que era su trabajo y el ocio de otro).
Siarhei trabaja desensamblando las dlls del sistema ya que no tiene el código fuente que no es público.

En un momento dado de la conversación en la que el desarrollador niega que se pueda hacer lo que Siarhei afirma, este le envía un código que demuestra su afirmación y con el que obtiene un 50% más de rendimiento en la conversión de color. El desarrollador de nokia se disculpa diciendo que en el código fuente siempre ha tenido un enorme FIXME

The branch has always been a giant FIXME, but it
never got properly sorted thanks to the magic of deadlines…

Para terminar la conversación el desarrollador le muestra el código que piensa incluir en la siguiente versión con el fin de que Siarhei lo valide:

*d1++ = (*sy & 0x000000ff) | ((*sc & 0x00ff) *d1++ = ((*sc & 0xff00) >> 8) | (*sy & 0x0000ff00);

No?

Hay que decir en favor de Nokia que a primeros de año regaló 100 n800 a otros tantos desarrolladores/contribuidores de las listas de desarrollo. Todo un detalle cuando en realidad les están haciendo el trabajo.

Otro ejemplo es el cutrísimo visor multimedia que trae el n800 de parte de nokia y la maravillosa aplicación Canola o quiver.

Nunca antes había comprado un cacharro que estaba a medio hacer y con el disfrute tanto.

Me he decidido a destripar mi fonera y he visto que abunda la información sobre el tema, lo que me indica que puede pasarmelo bien haciéndolo.
Lo primero que hay que hacer es abrir el ssh para conectarse cómodamente desde cualquier ordenador.
La manera más fácil es cambiar el DNS a 88.198.165.155 (explicación de porque funciona) desde la página de configuración de la Fonera (En la red privada MyPlace) para abrir el puerto SSH. Para evitar que tengamos un firmware más actualizado que corte este “truquito” basta con pulsar el reset durante 30 segundos lo que hará que se carga desde la rom el firmware inicial que seguro que permite usar el truco del DNS.
Una vez conectado por ssh (root/admin), permitimos las conexiones ssh cambiando /etc/firewall.user descomentando las siguientes líneas

iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT

activamos de forma permanente el ssh
ln -s /etc/init.d/dropbear /etc/init.d/S50dropbear
y desactivamos las actualizaciones automáticas editando el archivo /bin/thinclient comentando la última línea del fichero
#. /tmp/.thinclient.sh
Aquí y aquí explican como hacerlo con mayor detalle.

Hay otra forma de abrir el ssh usando un cable serie con lo que accedemos a la consola directamente.
¿Qué hacer después? Instalarle un SO como Dios manda o al menos retocarlo. Hay quien le activa el samba para que pueda usar discos compartidos con un bittorent o ftp, para instalarle openwrt: aquí, para controlar electrodomésticos aquí y aquí y aquí o para enviar sms o controlar un robot con wifi
También me interesa sobre poder ejecutar un cliente torrent o un emule. Sería todo un regalazo.
Como ya comenté, tengo en casa una fonera sin uso. Está conectada y encendida pero ni yo ni nadie se conecta (¿realmente funciona la utopía de fon?). La registré ilusionado cuando la recibí pero nunca llegó a aparecer en los mapas de fon. Vi en los foros (y hasta envié un correo a soporte@fon que nunca nadie contestó) que era problema de la gran cantidad de gente que se estaba registrando simultáneamente.
Tampoco he conseguido nunca conectarme a ningun punto donde en teoría hay un acceso fon.
Gracias señor Varsawski.

UPNP en Ubuntu

26 abril 2007

Un servidor UPNP permite que un cliente adecuado vea todos los servicios que proporciona.
Yo en concreto quería que me permitiera exportar mi música y videos para poder verlos por streaming en mi n800 (con mediastreamer, gracias DarkFace) y en los portátiles.

Desde el mediastreamer veremos que existe un servidor y nos mostrará el contenido (las carpetas compartidas en mi caso).

Yo he usado ushare. Las instrucciones están en geexbox, de donde podemos descargar el paquete directamente o usando apt-get para lo que tendremos que añadir al fichero /etc/apt/sources.list el repositorio
deb http://www.geexbox.org/debian/ unstable main
y para instalarlo
apt-get update && apt-get install ushare

Para compartir una carpeta solo hay que ejecutar ushare -c directorio y está. A disfrutar del streaming

Lista de capítulos

26 abril 2007

En esta hoja de cálculo iré actualizando la información.

¿Qué ver en la tele?

26 abril 2007

Siempre me ha dado mucha envidia la gente que tiene tiempo para ver la tele. Yo siempre tengo que estar haciendo algo además de verla. Nunca estoy concentrado viéndola sino que la tengo de fondo.
Son cada vez más las opciones que tenemos para ver. Yo mismo tengo más de 200 canales en casa de los sólo zapeo en 4 ó 5.
Además es complicado consensuar el programa que quieres ver con el resto de la familia, aunque realmente no me puedo quejar porque siempre veo lo que quiero (pero tampoco se puede abusar…). Mis inquietudes siempre han ido por ver documentales o al menos programas de divulgación o series donde pudiera aprender algo (CSI o House frente a telenovelas o series del estilo de “Aqui no hay quien viva”).
De pequeño vi varias veces Cosmos en la tele y la volví a ver después de grabarla en video. Conseguí que mi padre se gastara una pasta en comprarme la serie Cosmos en video originales porque añadía una introducción. Me apasionaba escuchar a Carl Sagan con su hablar tranquilo hablando de mil cosas: física, astronomía, historia, biología…
Supongo que por eso estudié física. Quería ser como él.
Desde hace mucho tiempo he querido ver el programa Redes, pero entre las horas a las que lo ponen y que si lo grabo luego no lo veo … nunca lo he visto.
Por recomendación de un amigo me descargué un par de programas: El alma está en el cerebro y otro que no recuerdo y me encantaron. Los vi en mi flamante n800 y quiero más.
En un sólo capítulo ya obtuve varias ideas interesantes y en las que no había pensado nunca.
Por eso me he decido a escribir en este blog lo que vaya aprendiendo.
Intentaré escribir un post por cada capítulo que vaya viendo.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.