Firmware FONBasic modifié pour Linksys WRT54G

Voici un articles pour les foneros utilisant un routeur wifi Linksys WRT54G comme moyen d’accès au réseau communautaire FON. Si vous utilisez le firmware officiel FONBasic 0.6.6 beta disponible sur le site de FON, vous êtes régulièrement confrontés à un problème de dysfonctionnement lié à une mauvaise configuration envoyée au routeur par les serveurs FON. Je vous propose ici un firmware qui permet de résoudre ce problème.

Linksys WRT54G

Linksys WRT54G

Mise en garde

Les informations contenues dans cet articles sont délivrée « telle qu’elles » . C’est à vos risques et périls que vous pouvez utilisez les firmwares proposés en téléchargement. Je ne peux être tenu responsable de dysfonctionnements liés à leur utilisation. La mise à jour d’un firmware est une opération critique pouvant endommager l’appareil.

Les Symptômes

Pour le propriétaire du routeur tout semble fonctionner. Le routeur est bien marqué comme actif dans l’interface de gestion et son status est UP sur la cartes des hotspots. Pour les clients c’est une autre histoire. Le hotspot est bien visible sur un canal wifi mais impossible de s’y attacher, il ne donne pas d’adresse IP (comme si le service DHCP ne fonctionnait pas).

La Cause

La faute au processus Chillispot qui est embarqué dans le routeur. C’est lui qui est en charge d’attribuer les adresses IP avec un DHCP intégré. Au lancement, il télécharge sa configuration d’un serveur FON sur internet qui lui dit comment identifier les utilisateurs (quel serveur radius, quelle page d’accueil, quelles URL accessibles sans authentification).

Ce fichier de configuration comporte parfois des erreurs de syntaxe et le processus Chillispot ne se lance pas. Vous ne pouvez pas le corriger puisque le fichier est hébergé sur un serveur distant. Parmis les erreurs que j’ai déjà rencontré : un nom de machine qui n’existe plus dans la liste des URL autorisées sans authentification, ou alors un nom de domaine DNS avec une étoile (ce qui est interdit).

Les foneras récentes utilisent la version modifiée Chillispot-Coova qui interprète le fichier de configuration d’une façon plus laxiste. L’erreur dans la configuration est signalée mais le processus se lance quand-même en les ignorant.

La Solution

J’ai téléchargé les sources du firmware FONBasic-0.6.6 et je les ai modifiées pour que cette fois le processus Chillispot se comporte comme la version coova. Les erreurs de syntaxe relatives aux noms de machines ou de domaines sont ignorées.

Liste des évolutions

0.6.7 – 13/02/2011

  • Corrections mineurs pour rendre possible la compilation du firmware
  • Accepte la présence de noms DNS inexistants dans la liste des options uamallowed de /etc/chilli.conf . Ces noms sont ignorés.

0.6.8 – 19/03/2011

  • Accepte la présence d’options newdomain dans /etc/chilli.conf . Ces options sont ignorées.

Téléchargements

Firmware 0.6.8 pour Linksys WRT-54G/GL (non testé) :
Télécharger “FONbasic-WRT54GL-0.6.8.bin” FONbasic-WRT54GL-0.6.8.bin – 1,78 Mo

Firmware 0.6.8 pour Linksys WRT-54GS V1-V3 (non testé) :
Télécharger “FONbasic-WRT54GS-0.6.8.bin” FONbasic-WRT54GS-0.6.8.bin – 1,78 Mo

Firmware 0.6.8 pour Linksys WRT-54GS V4 (testé) :
Télécharger “FONbasic-WRT54GS_v4-0.6.8.bin” FONbasic-WRT54GS_v4-0.6.8.bin – 1,78 Mo

Firmware 0.6.8 pour Buffalo WZR-RS-G54 / WHR-G54S / HP-G54 (non testé) :
Télécharger “FONbasic-BUFFALO-0.6.8.trx” FONbasic-BUFFALO-0.6.8.trx – 1,78 Mo

Sources 0.6.8 du firmware (ne contient pas les dl) :
Télécharger “FONbasic-0.6.8-src.tar.gz” FONbasic-0.6.8-src.tar.gz – 2,27 Mo

Sources 0.6.6 officielles du firmware (contient les dl)  :
Télécharger “FONbasic-0.6.6.tar.bz2” FONbasic-0.6.6.tar.bz2 – 93,38 Mo

Patch à appliquer aux sources FONBasic 0.6.6 pour obtenir la version 0.6.7 :
Télécharger “FONbasic-0.6.6-0.6.7.patch” FONbasic-0.6.6-0.6.7.patch – 12,95 Ko

Patch à appliquer aux sources FONBasic 0.6.7 pour obtenir la version 0.6.8 :
Télécharger “FONbasic-0.6.7-0.6.8.patch” FONbasic-0.6.7-0.6.8.patch – 2,24 Ko

Les checksum MD5 sont les suivants :

379f373cbb0d169f11139aa502c5fc19  FONbasic-0.6.6-0.6.7.patch
4b5b4403ee58d584ca2ebc9014df895a  FONbasic-0.6.7-0.6.8.patch
c33de3a68f0b4dc7b9beb81de09d737b  FONbasic-0.6.8-src.tar.gz
82f1719c11c5e526a9b46d0ab34a54c8  FONbasic-BUFFALO-0.6.8.trx
6a8ebd5001427cc7544530173321d945  FONbasic-WRT54GL-0.6.8.bin
d4baa3a5334ad263cc10e93072d24090  FONbasic-WRT54GS-0.6.8.bin
dddf214a95a598bc4f5cbfca6c381341  FONbasic-WRT54GS_v4-0.6.8.bin

Note : les dl sont les archives des sources des composants GNU du firmware. Le processus le compilation les télécharge automatiquement s’ils ne sont pas déjà présents dans le répertoire dl des sources. Comme cela représente un gros volume, je ne les ai pas inclus dans les sources. Si vous ne pouvez pas les télécharger à partir de votre plate-forme de compilation, utilisez les sources officielles 0.6.6 qui contiennent déjà ces archives.

Mise à jour du firmware

Utilisez le firmware correspondant à votre modèle de routeur Linksys. Certains modèles ne sont pas supportés (comme les WRT54GS V5 et plus). Rendez-vous sur la page de mise à jour du firmware dans l’interface d’administration http. Inutile de cocher la case pour purger la zone JSFF, le firmware ne l’utilise pas.

Update Firmware FON

Interface d’administration MAJ Firware

La procédure de mise à jour dure quelques minutes. N’éteignez surtout pas l’appareil pendant la mise à jour ! Une fois terminé vous pouvez vous reconnecter à l’interface de gestion. Le mot de passe d’administration est réinitialisée avec sa valeur par défaut (utilisateur: admin, mot de passe: admin). Les noms d’hôtes qui ont éventuellement été saisis manuellement sont supprimés (correspond au fichier /etc/hosts dans le routeur). En revanche le reste de la configuration est conservée (SSID, canal wifi, adresses des serveurs DNS, configuration IP/DHCP, …).

La clé du service ssh étant recalculée après la mise à jour, ne soyez pas surpris par un message d’avertissement vous signalant que la clé d’authentification a changé. Vous ne serez confrontés à cet avertissement que si vous êtes un utilisateur averti qui a l’habitude de se connecter en ssh au routeur.

Compilation

Si vous vous sentez l’âme d’un développeur et souhaitez améliorer le code voici quelques instructions pour compiler vous-même le firmware.

Voici la plate-forme que j’ai utilisé pour compiler le firmware :

  • Une petite machine virtuelle sous VMWare ESXi 4.1 : 512 Mo de RAM, 1vCPU (Intel XEON 3,6 GHz), 5 Go de disque.
  • Linux CentOS 5.5 32 bits avec toutes ses mises à jour sans desktop (eh oui, je travaille en mode texte, à la dure, question d’habitude).
  • Packages optionnels installés : gcc, gcc-c++, zlib-devel et toutes leurs dépendances (utilisez la commande yum install suivi du nom du paquet)

La partition sur laquelle vous compilerez doit disposer de 1,5 Go d’espace libre.

Les sources sont en réalité un firmware openwrt customisé par FON, la licence GPL2 s’applique donc à mes modifications que je dois  vous mettre à disposition. La base openwrt utilisée ici est déjà assez ancienne (elle date de 2005 je crois).

Une fois l’archive décompressée, placez-vous dans le répertoire des sources et tapez make. La première fois, vous entrerez dans le menu de configuration de OpenWRT (la base du firmware). Laissez la configuration par défaut et quittez ce menu en sauvegardant.

Configuration OpenWRT

Configuration OpenWRT

Tapez une seconde fois la commande make. Le processus de compilation ira jusqu’à son terme. Cela peut durer plusieurs dizaines de minutes en fonction de la puissance de votre machine.

Le processus de compilation est divisé en trois grandes étapes :

  • La création du kit de compilation croisée pour processeur mipsel (c’est plutôt long).
  • La compilation des composants du firmware en utilisant le kit de compilation croisée (moins long)
  • L’assemblage des composants dans un firmware spécifique à chaque modèle de routeur.

Chaque composant est téléchargé d’internet en utilisant la commande wget. J’ai corrigé les URL  car certaines n’étaient plus valides. Si vous devez utiliser un proxy http vous pouvez le préciser dans le fichier /etc/wgetrc ou dans $HOME/.wgetrc . Une fois téléchargé il est placé dans le répertoire dl, il ne sera plus téléchargé si vous relancez la compilation.

Les composants sont extraits dans un répertoire de compilation et des patchs leur sont appliqués, ces patchs sont dans le répertoire packages/nom/patches . Leur nom ont un numéro qui indique dans quel ordre ils seront appliqués aux sources avant compilation. Ceux qui portent la mention rgc sont de mon cru !

Les firmwares produits sont dans le répertoire bin. Utilisez ceux qui portent le nom squashfs (leur taille est de 1,8 Mo environ).

Si vous souhaitez recompiler les firmwares après avoir modifié un composant supprimer les fichiers build_mipsel/stamp/.package-prepare et build_mipsel/stamp/.package-compile correspondant au composant retouché puis refaites make depuis la racine des sources.

make clean : permet de supprimer tous les objets de compilation du firmware mais pas le kit de compilation croisée ni les téléchargements.

make distclean : supprime les objets de compilation, le kit de compilation croisé ainsi que les téléchargements.

44 réflexions sur « Firmware FONBasic modifié pour Linksys WRT54G »

  1. Salut a tous ,

    Je voudrais en faire de mon WRT 54 G serveur fonera.
    Mais si je transforme mon 54.. firware et t’il possible
    de revenir en arrière (Original) .

    Merci de votre réponse R A+++

  2. Un grand merci pour ce firmware mis à jour ! Possesseur d’un WRT54GS qui dormait dans un placard, je me suis dit qu’il pourrait devenir un second Fon-Spot en plus de ma Fonera 2100. Hier j’ai installé le firmware officiel 0.6.6 et effectivement impossible d’avoir une adresse iP sur l’ordi. Le Wiki de Fon indiquant que les Linksys ne sont plus supportés et ne permettent pas de « rejoindre Fon en tant que Linus ou Bill », j’ai fini par me dire que c’était l’explication et je suis allé me coucher. Tard car c’était après avoir bataillé pour remettre dd-wrt à la place du firmware fon vu que je n’avais pas d’ip sur le routeur…
    Mais ce matin, j’ai eu l’inspiration de continuer mes recherches et je suis tombé sur votre page. Un quart d’heure plus tard, mon WRT54GSv1 était ajouté à ma liste de fonspots et il a repris du service ! Pour l’instant, tout roule, pas de bug visible. Encore merci !

  3. « Realy » thanks for compile this openwrt firm , i confirm thats work fine in Linksys wrt54gL v1.1 and i can login with my « fon » user , but fon « dont » load the guest users and the SSID (but detected the hearbeat becouse in the panel control stell alive ( i’m searching how i can store guest users in the fonera but i dont had lucky)

    Thanks again
    Francesc

    🙂

    PD: FON realy is doing a nefast workjob with the users ….

    • To enable guest users you have to go to the guest user list in you fon account and revalidate them.
      FONBasic cannot manage two SSID, only FON_xxx SSID is generated, the private SSID is not available.

  4. Ping : FON op WBA conferentie in Parijs

  5. Gracias por la actualización, Funcionando en mi WRT54GL, solo un pequeño detalle, cuando actualice no me dió mensaje de actualización completada, despues de 10 minutos actualizando desconecté la alimentacion del router y la volví a conectar, y todo funciona correctamente, saludos

  6. Sacré boulot merci bien, effectivement ca tourne beaucoup mieux que l’original !
    Il serait assez sympa de pouvoir modifier l’adresse MAC par la console http, au cas ou comme moi on ne ce rappelle plus des login du compte FON associé ^^.

  7. This works great! 🙂 I’ve converted my WRT54GS (v1) into a working FonSpot without having to buy a SIMPL. Now I just have to find out how to edit chilli.conf without it getting restored again after a reboot (but I’m sure that’s only a matter of time 😉 ).

    • Cela fait bien longtemps que j’ai créé mon compte mais je pense que oui, c’est toujours possible. Ensuite le status, linus ou bill peut être changé par la suite dans la page d’administration du compte sur le site de FON.

  8. Je vais acheter un routeur, le WRTSL54GS semble techniquement supérieur aux autres models, je me demande si le firmware passe dessus ou si il faut le recompiler.

    • Il ne passera pas dessus même. Ce routeur est très différent et demandera plus qu’une recompilation. Il est en revanche compatible avec le firmware dd-wrt, il y a donc un espoir de le faire fonctionner. Le firmware FONBasic lui ferait perdre cette « supériorité technologique » .

  9. Hello l’expert 🙂
    J’aimerais programmer un routeur wifi Linksys sous Linux, afin que celui ci se connecte automatiquement à un réseau FON Sfr Wifi et s’authentifie automatiquement avec mes identifiants..
    Je cherche des infos sur le net mais c’est très galère.. Est-ce possible ?
    Le principe est simple : le routeur démarre, il vérifie la présence d’un réseau FON SFR Wifi Public, s’y connecte, et s’identifie.
    La connexion sera ensuite partagée par le routeur.

    Sais tu comment faire ?

    Merci par avance 🙂

    Sylvain

    • Cela est certainement possible, il faut creuser du coté d’outils en ligne de commande tels que wget avec prise en charge ssl si un requête http GET suffit. Sinon, le plus polyvalent serait d’utiliser du perl mais c’est plus rare à trouver dans un système linux embarqué.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *