
Aqui aprenderemos a utilizar el router de la fonera utilizando su puerto serie con arduino. Esto nos proporcionara wifi para nuestro proyecto y mucho mas. Para ello lo primero que tenemos que hacer es hacer un downgrade del firmware de la fonera para poderle cargar el linux dd-wrt que nos permitira tener nuestras aplicaciones un pequeño espacio de disco flash, etc.
Para hacer el downgrade se ha seguido el enlace que aparece en las referencias. En definitiva nos hace falta tener conectado la fonera a un router que tengamos en casa, al cual ahi que ponerle los siguientes parametros. (IP: 213.134.45.129, MASK: 255.255.255.0, DNS: 88.198.165.155). Por otro lado a nuestra fonera tendremos que ponerle la siguiente informacion de red (IP: 213.134.45.00, MASK: 255.255.255.0, GATEWAY y DNS: 213.134.45.129 ).
Ahora el siguiente paso es reiniciar la fonera hasta que se haga el downgrade. El autor del enlace de referencia asegura que le salio al segundo o tercer reinicio. Yo puedo decir que la mia funciono al intento numero treinta y pico. Esta bien saberlo para que no creais que no funciona. Pero de dos o tres nada, que me pegue una tarde entera reiniciando la dichosa fonera.
Bueno pues una vez que tenemos ya la version 0.7.1 r1, el siguiente paso es habilitarle la conexion por ssh. Para ello tenemos que crear dos archivos html que tendremos que ejecutar abriendolos con el navegar y haciendo click en sus respectivos botones de submit.
step1.html
<html>
<head>
</head>
<body>
<center>
<form method="post" action="http://192.168.10.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/usr/sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT)" size="68" >
<input type="submit" name="submit" value="Submit" onClick="{this.form.wifimode.value='";' + this.form.wifimode.value +';"'}" />
</form>
</body>
</html>
step2.html
<html>
<head>
</head>
<body>
<center>
<form method="post" action="http://192.168.10.1/cgi-bin/webif/connection.sh" enctype="multipart/form-data">
<input name="username" value="$(/etc/init.d/dropbear)" size="68" >
<input type="submit" name="submit" value="Submit" onClick="{this.form.wifimode.value='";' + this.form.wifimode.value +';"'}" />
</form>
</body>
</html>
En el primer paso lo que hacemos es habilitar en el cortafuegos de la fonera el acceso por el puerto 22 y en el segundo paso lo que hacemos es iniciar el demonio del ssh.
Ahora ya podemos conectarnos por ssh a la fonera, y de echo tenemos que conectarnos para hacer el siguiente paso que consistira en subir un firmware modificado de la fonera, que entre otras cosas nos permitira utilizar el espacio que tiene la misma.
cd /tmp
wget http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
reboot
Este proceso es normal que tarde un tiempo. Entre la descarga y la subida del firmware pueden pasar 10 minutitos.
Ahora el siguiente paso es volver a conectarnos por ssh y ejecutar los siguientes comandos para hacer que el RedBoot (Servicio de arranque antes de iniciar la fonera) no arranque el firmare de la fonera y se nos quede escuchando para conectarnos.
cd /tmp
wget http://fonera.info/camicia/out.hex
mtd -e “RedBoot config” write out.hex “RedBoot config”
reboot
Una vez echo, ahora tenemos que conectarnos a dicho RedBoot mediante telnet. La direccion ip que toma redboot en este estado es la 192.168.1.254, con lo que necesitaremos configurar en nuestro pc o donde estemos una ip que este en esa misma subred. (pe. 192.168.1.166).
Hacemos telnet al puerto 9000 en los primeros 10 segundos de arrancar y voilá, ya estamos dentro. Nos aparecera el prompt de RedBoot.
Antes de continuar con este paso tendremos que descargarnos la ultima version buena del DD-WRT. La que yo use es la v24 Final. El link esta mas abajo en las referencias.
Una vez lo hemos descargado lo colocamos bajo un servidor tftp en nuestro pc, nos aseguramos que esta arrancado y volvemos al prompt del RedBoot en la fonera para ejecutar los siguientes comandos:
ip_address -l 192.168.1.254/24 -h 192.168.1.166
RedBoot> fis init
About to initialize [format] FLASH image system – continue (y/n)? y
*** Initialize FLASH Image System
… Erase from 0xa87e0000-0xa87f0000: .
… Program from 0x80ff0000-0×81000000 at 0xa87e0000: .
RedBoot> load -r -b 0×80041000 linux.bin
Using default protocol (TFTP)
Raw file loaded 0×80041000-0x80662fff, assumed entry at 0×80041000
RedBoot> fis create linux
Este ultimo proceso de subida del firmare suele durar bastante tiempo (45min – 2 horas), asi que paciencia.
Una vez terminemos con esto reiniciara la fonera y ya la tendremos con nuestro nuevo firmware.
En cuanto a la conexion con arduino utilizando el puerto serie, esto dependera del modelo de nuestra fonera. En la siguiente imagen se ven los pines del puerto serie de la fonera para su modelo 2100 que es el que yo use. Aun asi en las referencias esta el enlace a la pagina donde lo saque y esta tambien el esquema de la fonera 2200.

Para conectarlo a arduino tendriamos conectar los cables de Rx y Tx de la fonera al Rx y Tx del arduino. Dos cosas. Estos Rx y Tx (al menos en el 2100) estan al reves, es decir, el Rx de la Fonera va al Rx del arduino y el Tx de la fonera al Tx del arduino. La otra cosa es que al menos de momento solo he conseguido echarlo andar con el puerto serie hardware del arduino. Las pruebas que he hecho con las librerias de softserial no terminan de funcionar correctamente.
Una vez que tenemos conectado por serie la fonera ya seria cuestion de utilizar por ejemplo el programa minicom para mandar comandos al arduino.
Bueno hasta aqui este primero post de la fonera. En breve sacare otro con mas de las cosas que se pueden hacer con este cacharrito de 20 €.
Referencias:
http://www.dd-wrt.com/wiki/index.php/LaFonera_Software_Flashing
http://www.geocities.jp/arduino_diecimila/wifi/index_en.html
http://www.dd-wrt.com/dd-wrtv2/down.php?path=downloads%2Fv24%2FAtheros+WiSoc%2FFonera/