Flash La Fonera avec firmware libre

J’ai une Fonera depuis des années. Pour rappel, le principe de La Fonera imaginé par Fon c’est de partager sa connexion Internet avec la communauté Fon et ainsi profiter de la connexion des autres membres.. Mais à peine avais-je fait son acquisition, que Free ouvrait son FreeWifi. Du coup, nul besoin de participer à une autre communauté.

La Fonera a donc rapidement commencé un long séjour dans son carton au fond du garage. A plusieurs occasions, j’ai voulu m’en servir pour faire hotspot ou pour améliorer la connectivité à un réseau FreeWifi un peu trop distant. Pour se faire, j’avais installé FrancoFon pour disposer de plus de flexibilité. Mais je n’ai jamais vraiment réussi à lui faire faire ce que je voulais. Même en rentrant dans le code des scripts, en bidouillant profondément le firmware officiel, je ne suis jamais arrivé à mes fins car le fonctionnement de ce dernier fini toujours par perturber mes projets.

Du coup, afin de mieux en profiter du routeur, j’ai pris la décision de flasher le routeur avec un firmware libre.

Avant de commencer

Avant de se lancer, il faut faire le point sur mon matériel.

  • Type de matériel : FON2200
  • Version du firmware : 0.7.2.r3

Documentation

Coté documentation, le problème à affronter est un classique sur Internet lorsqu’on s’intéresse à un sujet un peu ancien. En effet, la documentation est nombreuse, mais souvent obsolète et rarement identifiée comme telle. Du coup, avant de se lancer et de comprendre, il faut beaucoup lire et lire encore pour arriver à faire la part des choses et trouver les informations les plus à jour.

Ainsi, on trouve des informations sur le site de OpenWrt, celui de DD-WRT, des forums, des blogs.

La mixité des versions de Fonera, ainsi que les évolutions des firmwares ont rendu une partie de ces informations inappropriées. Et je ne vais certainement rien arrangé avec ce billet, si ce n’est que ce sera un peu actualisé.

Au milieu de toutes les docs, je me suis surtout appuyé sur les deux articles suivants :

Preparation

Avant de commencer, il faut récupérer un peu de soft.

Activation SSH

Etape inutile dans mon cas car je l’avais déjà fait pour installer FrancoFon.

Activation RedBoot

Déploiement d’un noyau pour permettre l’écrasement de la config redboot.

# route add -host 169.254.255.1 eth0
$ scp ./openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma  root@169.254.255.1:/tmp/ # Password: admin
$ ssh root@169.254.255.1 # Password: admin


BusyBox v1.1.3 (2006.11.21-19:49+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

 _______  _______  _______ 
|   ____||       ||   _   |
|   ____||   -   ||  | |  |
|   |    |_______||__| |__|
|___|

 Fonera Firmware (Version 0.7.2 rev 3) -------------
  * 
  * Based on OpenWrt - http://openwrt.org
  * Powered by FON - http://www.fon.com
  * Enhanced by FrancoFON v.2.23.7 - http://www.francofon.fr
-----------------------------------------------------

# cd /tmp
# mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
Unlocking vmlinux.bin.l7 ...
Erasing vmlinux.bin.l7 ...
Writing from openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma to vmlinux.bin.l7 ...  [w]
# reboot

Déploiement de la config redboot.

$ scp ./out.hex root@169.254.255.1:/tmp/
$ ssh root@169.254.255.1
root@169.254.255.1's password: 


BusyBox v1.1.3 (2006.11.21-19:49+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

 _______  _______  _______ 
|   ____||       ||   _   |
|   ____||   -   ||  | |  |
|   |    |_______||__| |__|
|___|

 Fonera Firmware (Version 0.7.2 rev 3) -------------
  * 
  * Based on OpenWrt - http://openwrt.org
  * Powered by FON - http://www.fon.com
  * Enhanced by FrancoFON v.2.23.7 - http://www.francofon.fr
-----------------------------------------------------
# cd /tmp
# mtd -e "RedBoot config" write out.hex "RedBoot config"
Unlocking RedBoot config ...
Erasing RedBoot config ...
Writing from out.hex to RedBoot config ...  [w]

# reboot

Accès prompt RedBoot

Une petite connexion manuelle, histoire de se faire plaisir en voyant que ça a fonctionné.

# route add -host 192.168.1.254 eth0
$ telnet 192.168.1.254 9000
Trying 192.168.1.254...
Connected to 192.168.1.254.
Escape character is '^]'.
== Executing boot script in 9.170 seconds - enter ^C to abort
RedBoot> No image 'vmlinux.bin.l7' found
RedBoot> Can't execute Linux - invalid entry address
RedBoot> ^C^C
RedBoot> reset
^]
Telnet> quit

Après le reset précédent, le device reboot. Il est temps de lancer l’utilitaire de flash. Mais avant tout, il faut absolument connecter les deux machines directement.

# ifconfig eth0 192.168.1.166
$ sudo ./fon-flash -i eth0 -c ddwrt linux.bin
Reading image file linux.bin with 6430720 bytes, rounded to 0x00630000
No packet.
Peer MAC: XX:XX:XX:XX:XX:XX
Peer IP : 192.168.1.254
Your MAC: XX:XX:XX:XX:XX:XX
Your IP : 192.168.1.0

Setting IP address...
ip_addr -l 192.168.1.254/8 -h 192.168.1.0


Initializing partitions ...
fis init

loading file:
load -r -b 0x80100000 -m tftp file_1

creating flash partition (this may take some time)
fis create -f 0xa8030000 -l 0x00630000  -e 0x80041000   -r 0x80041000   linux

Setting boot_script_data...
fis load -l linux
exec

Done. Restarting device...

Le flash de la version DD-WRT v24 SP1 (build 10020) ne semble pas fonctionner sur mon modèle. Le flash avec la version DD-WRT v24preSP2 (build 21061) semble bien plus concluant.

Conclusion

Après le dernier reboot, La Fonera est accessible via une connexion WiFi (pas ethernet). Je vais donc pouvoir m’en servir pour enfin m’en servir dans des situations trop complexes pour le firmware Fon. En tout cas, c’est dès à présent un vrai plaisir d’avoir accès à tout un tas de réglage ou d’information sur le fonctionnement du routeur.