Remplacement du firmware d'un WRT54G
Par Petaramesh le vendredi 10 février 2006, 12:33 - Linksys WRT54G - Lien permanent
Où Swâmi Petaramesh se décide enfin à traiter de cette palpitante question...
Avant de vous attaquer au remplacement du firmware[1] du WRT54G, il vous faut choisir le type de firmware que vous désirez installer à la place du firmware d'origine, et vous assurer que votre routeur est bien compatible avec le firmware que vous envisagez d'installer.
Si vous ne l'avez pas encore lu, référez-vous à mon billet WRT54G, firmwares de remplacement et versions hardware.
Ensuite, par mesure de précaution, assurez-vous toujours de régler le flag boot_wait de votre routeur sur on, comme indiqué à la fin de cet autre billet.
Après avoir téléchargé le firmware adéquat, extrayez-le de l'archive zip ou tar.gz dans lequel il est le plus souvent fourni, avec, parfois, des instructions d'installation additionnelles que je vous conseille fortement de lire attentivement.
Pénétrez-vous enfin de ces vérités :
- L'installation d'un firmware qui n'est pas d'origine Linksys annule la garantie de votre routeur[2]
- L'installation d'un nouveau firmware sur ce type de routeur est susceptible de mal se passer. Ca arrive. Dans ce cas :
- Soit votre routeur ne fonctionne pas comme vous le souhaiteriez, et il est toujours possible de réinstaller un autre firmware ;
- Soit votre routeur est briqué, c'est-à-dire qu'il répond désormais autant qu'une brique à vos tentatives de communiquer avec lui. Pas de panique cependant, il existe des degrés de briquage plus ou moins sévères, le plus souvent pas très sévères, et il est, dans l'immense majorité des cas, possible de se tirer de se mauvais pas sans recourir au tournevis ou au fer à souder. Pour les cas les plus graves, c'est l'escalade, tournevis d'abord, fer à souder ensuite ;-)
Je décline toute responsabilité si vous flinguez votre routeur en suivant les indications que je donne dans cet article, où il est toujours possible qu'une erreur se soit glissée.
Bien. Ceci étant posé, on peut y aller.
Choix du firmware
Mon article WRT54G, firmwares de remplacement et versions hardware présente brièvement différents firmwares de remplacement disponibles pour le WRT54G.
J'utilise personnellement l'excellent DD-WRT, et c'est sur l'installation de ce firmware que cet article se focalisera plus précisément. Toutefois, la méthode de remplacement d'un firmware décrite ici est générale, aussi vous pourrez utiliser ces informations même si vous souhaitez installer un firmware d'une autre famille.
Par rapport à un firmware Linksys d'origine, le firmware DD-WRT apporte, parmi de nombreuses autres, les fonctionnalités supplémentaires suivantes:
- Mode client routé, client bridge ou Ad-hoc : Le WRT54G peut ainsi être utilisé non pas comme point d'accès, mais comme client, et remplacer avantageusement un pont de type WET54G ou similaire.
- Mode WDS permettant d'étendre un réseau sans fil.
- Peut également être utilisé comme point d'accès simple, liaison "Internet" désactivée.
- Réglage de la puissance d'émission permettant d'accroître la portée et la qualité de la liaison sans fil.
- Gestion de service DNS dynamique (plusieurs services supportés)
- Routage avancé
- Chiffrement/authentification WPA, WPA-Radius, WPA2, WPA2-Radius, WEP, etc.
- SNMP
- Firewall programmable, restrictions d'accès, filtres L7
- Port forwarding et port triggering, QoS / traffic shaping (très utile pour les jeux en réseau ou les applications P2P)
- Accès terminal par SSH
- Scripts de démarrage et cron
- Système de fichiers JFFS2 sur Flash permettant l'installation sur le routeur de modules d'applications supplémentaires
- Module d'authentification Radius
- Possibilité d'accéder depuis le routeur à un disque réseau hébergé sur un autre ordinateur, et de lancer ainsi des applications supplémentaires
- Fonction Hotspot / Chillispot
- Log système à distance
- Interface graphique web enrichie et améliorée, pages d'état améliorées.
Certaines versions de DD-WRT proposent également :
- Proxy VoIP
- OpenVPN
DD-WRT, c'est d'la balle, non ?
Méthodes de remplacement du firmware
Il existe plusieurs moyens de remplacer ou mettre à jour le firmware d'un WRT54G. Chacune a ses avantages et ses inconvénients :
- En utilisant un navigateur, par l'interface web d'administration du routeur.
- C'est la méthode la plus simple, et qui sera le plus couramment employée après la première installation d'une nouvelle famille de firmware.
- Peut être effectué soit en connection LAN/Ethernet sur le routeur, soit en connection radio (WLAN). Bien que la connexion par câble soit recommandée (pour minimiser les risques de problèmes), ça marche aussi généralement très bien via radio/WLAN, et je le fais régulièrement comme ça sur l'un de mes routeurs (éloigné de l'ordinateur).
- Malheureusement, les firmwares d'origine Linksys ne permettent pas toujours d'installer n'importe quel type de firmware de remplacement par cette méthode. Il me semble en particulier que certaines versions du firmware de Linksys limitent la taille du firmware que l'on peut installer ainsi à 3 Mo maximum, et que d'autres versions ne permettent pas d'installer ainsi des firmwares non-Linksys. Tout dépend en fait de la version de votre firmware d'origine...
- Une fois que vous aurez changé de firmware (par une autre méthode), cette limitation disparaîtra souvent, et vous pourrez faire vos mises-à-jour ultérieures en utilisant l'interface web.
- En utilisant TFTP sur un routeur en fonctionnement
- Les firmwares d'origine Linksys possèdent un serveur TFTP intégré, qui permet de mettre à jour le firmware par cette méthode, routeur en fonction
- Ce serveur TFTP nécessite l'emploi d'un client TFTP modifié sur votre ordinateur, car le client TFTP doit fournir le mot de passe administrateur, ce qu'un client TFTP "normal" ne fait pas[3]
- Cette méthode ne présente pas d'intérêt particulier par rapport aux autres méthodes que nous présentons
- De plus, certains firmwares spécifiques (comme DD-WRT par exemple) ont complètement supprimé cette possibilité, en supprimant le serveur TFTP pour gagner de place dans l'image du firmware pour d'autres choses plus utiles...
- Nous ne décrirons donc pas davantage cette méthode dans cet article.
- En utilisant TFTP via le bootloader CFE à l'instant du boot du routeur.
- C'est la méthode que nous utiliserons pour une première installation d'un firmware d'une nouvelle famille
- Cette méthode nécessite que le flag boot_wait du routeur soit réglé sur on, comme expliqué ici.
- Cette méthode nous limite à l'installation d'un firmware d'une taille de 3 Mo maximum.
- Cette méthode peut également servir dans de nombreux cas pour le débriquage d'un routeur briqué (bricked)
- Nous décrirons cette méthode plus en détail ci-dessous.
- En utilisant un câble JTAG
- Cette méthode permet d'écrire directement sur la mémoire flash du routeur en connectant celui-ci par un câble spécifique au port parallèle de l'ordinateur
- Elle nécessite de construire un câble spécifique, et de souder (!) un connecteur à l'intérieur du routeur. Est-il nécessaire de préciser que cette fois, vous pouvez vraiment vous asseoir sur la garantie ?
- Pour cette raison, elle sera considérée comme une méthode de secours pour les cas vraiment désespérés, et nous ne la décrirons pas davantage dans cet article. Peut-être dans un prochain ?
Quelle que soit la méthode que vous emploierez, la procédure d'update du firmware ne doit jamais être interrompue avant d'être terminée, faute de quoi vous avez de fortes chances de vous retrouver avec un routeur briqué.
L'écriture dans la mémoire flash par la plupart des méthodes se fait après que le routeur ait reçu le firmware complet. Après avoir envoyé le firmware au routeur, vous devez absolument lui laisser le temps d'écrire le firmware en flash, puis il reboote (normalement) de lui-même.
En toute hypothèse, attendez que le voyant Power ait cessé de clignoter et soit redevenu fixe avant d'éteindre ou de rebooter le routeur vous-même.
Lors d'une première installation d'une nouvelle famille de firmware, l'initialisation de la flash lors du boot peut parfois prendre plusieurs minutes, surtout si votre firmware gère un système de fichiers J2FFS ! Ne l'interrompez pas pendant qu'il s'initialise !
Ce n'est que si le voyant Power continue toujours de clignoter après plus de 5 minutes, et qu'il est impossible de communiquer avec le routeur, que vous devrez envisager de le rebooter de force. Mais attendez au moins 5 minutes !
Première installation d'un firmware d'une nouvelle famille - Méthode TFTP au boot
Pour cela, vous devrez choisir une image firmware adaptée, de moins de 3 Mo !
- Si vous voulez installer DD-WRT, vous installerez en premier lieu par TFTP la version mini, qui fait moins de 3 Mo, puis vous installerez ensuite une version complète de votre choix via l'interface web.
- Si vous utilisez DD-WRT, choisissez pour cela une version adaptée précisément à votre modèle de routeur (par exemple, DD-WRT.v23_mini_wrt54g.bin pour un WRT54G, ou DD-WRT.v23_mini_wrt54gs.bin pour un WRT54GS, etc...
Recopiez ensuite l'image firmware choisie sur votre disque dur, en lui donnant le nom: code.bin
Important : Quand vous utilisez la méthode TFTP au boot, l'adresse IP de votre WRT54G sera toujours 192.168.1.1, quelle que soit l'adresse IP sur laquelle il est "normalement" configuré. En effet, à ce stade, le système d'exploitation n'a pas encore démarré, et le bootloader PMON ou CFE met systématiquement le routeur en 192.168.1.1 au moment où il active son serveur TFTP rudimentaire.
- Assurez-vous que le flag boot_wait de votre routeur WRT54G a été réglé sur on
- Quand le flag boot_wait est réglé sur on, le bootloader attend 5 secondes avant de lancer le système d'exploitation du routeur, temps pendant lequel son serveur TFTP est actif, et pendant lequel il est possible d'uploader ainsi un firmware sur le routeur
- Si le flag boot_wait est sur off, il est tout de même possible d'uploader un firmware par TFTP lors du boot, mais, dans ce cas, le bootloader attend moins d'une seconde. Il est alors très difficile de synchroniser l'envoi du firmware par TFTP, et cela peut parfois demander plusieurs dizaines de tentatives. Mais ce n'est pas désespéré...
- Connectez votre ordinateur par câble réseau Ethernet à l'une des prises LAN (1-4) de votre WRT54G encore éteint.
- Personnellement, je connecte directement l'ordinateur sur le routeur, et ça marche chez moi
- Certains utilisateurs de Windows rapportent que la carte réseau de leur ordinateur est trop lente à s'activer quand celle du WRT54G s'active, ce qui provoque le "loupé" de la courte période durant laquelle le serveur TFTP est disponible au boot. Certains ont rapporté que dans ce cas, le fait d'interposer un switch Ethernet entre l'ordinateur et le routeur permet d'éviter ce problème. Si ça ne marche pas chez vous sans switch, essayez éventuellement avec... ca peut parficulièrement aider si vous avez oublié de mettre boot_wait sur on.
- Si vous êtes connecté directement (sans switch) au WRT54G, configurez la carte réseau de votre ordinateur en 10Base-T, half-duplex.[4]
Ceci ne semble pas strictement nécessaire avec tous les modèles de WRT54G, mais si ça ne fait pas de bien, ça ne peut pas faire de mal, et mieux vaut éviter par avance les problèmes.
Pour ce faire, si vous êtes sous GNU/Linux, vous taperez par exemple la commande:
mii-tool -F 10baseT-HD eth0
Si vous êtes sous Windows, vous irez cliquouiller quelque part dans le clickodrome (hint: Du côté des fenêtres des bidules réseau, est-il besoin de le préciser ?)
- Puisque le routeur sera toujours en 192.168.1.1, vous devez configurer la carte réseau de votre ordinateur en adresse IP fixe, avec par exemple l'adresse 192.168.1.2, masque 255.255.255.0.
Si vous êtes sous GNU/Linux, vous taperez par exemple la commande :
ifconfig eth0 192.168.1.2
Si vous êtes sous Windows, vous irez encore cliquouiller quelque part dans le clickodrome.
- Une fois cela fait, je vous conseille d'ouvrir deux fenêtres console, l'une dans laquelle vous lancerez un ping permanent vers le routeur (pour voir quand il commence à répondre), l'autre dans laquelle vous préparerez (sans l'exécuter) la commande TFTP d'envoi du firmware.
- Pour démarrer le ping dans une fenêtre, sous GNU/Linux, vous taperez par exemple :
ping -i 0.5 192.168.1.1
Le ping se poursuivra en permanence jusqu'à ce que vous l'interrompiez par [Ctrl]-C
...sous Windows, la syntaxe de la commande ping est un poil différente si l'on veut que le ping soit permanent (sinon, seuls 5 pings sont effectués, puis cela s'arrête). Si vous êtes sous Windows, renseignez-vous sur votre commande ping.
- Préparons dans l'autre fenêtre la commande TFTP
Nous utiliserons ici un client TFTP ordinaire, et non pas le client TFTP spécifique Linksys dont il a été question plus haut.
Sous GNU/Linux, nous taperons par exemple (SANS encore taper [Entrée]) :
tftp -m binary 192.168.1.1 -c put code.bin
Sous Windows, encore une fois, renseignez-vous, la syntaxe est un poil différente.
Prêt ?
- Allumons le routeur WRT54G, le doigt sur la touche [Entrée], en regardant la fenêtre où se déroulent les pings.
- Aussitôt que le routeur répond à un ping, tapons joyeusement [Entrée], ce qui enverra le firmware au routeur.
Si cela se passe bien, l'envoi du firmware doit se dérouler en moins de 20 secondes (la commande TFTP doit rendre normalement la main).
Le routeur WRT54G écrit alors le firmware en mémoire flash, puis reboote de lui-même. Il se peut que le clignotement du voyant Power lors du reboot dure plus longtemps que de coutume, et même plusieurs minutes si le nouveau firmware initialise un système de fichiers J2FFS.
Laissez au routeur le temps de booter et de faire ce qu'il a à faire. Ne le rebootez ou ne l'éteignez que si cela dure plus de 5 minutes et qu'il est impossible de communiquer avec lui.
Si cela se passe mal, la commande TFTP ne rendra pas la main, restera "figée" plus d'une minute, ou vomira une erreur du genre timeout, etc.
Si cela se produit, il faut recommencer : Arrêter le TFTP, éteindre puis rallumer le routeur, renvoyer...
Si cela ne marche toujours pas après plusieurs tentatives, c'est qu'il y a un problème (Le flag boot_wait du routeur est-il bien sur on ?). Vérifiez votre config réseau côté ordinateur, envisagez d'utiliser un switch, etc. Il se peut aussi que votre routeur soit sérieusement briqué.
Si vous pensez que le flag boot_wait n'est pas sur on, essayez plusieurs fois, et essayez encore. Dans ce cas-là, vous devez envoyer le firmware dès que le voyant de votre carte réseau s'allume. Vous n'aurez probablement pas le temps de voir que le routeur répond au ping, car il le fera bien trop brièvement.
Généralement toutefois, cela se passe bien, et vous avez votre nouveau firmware sur votre routeur.
- Une fois que vous pensez que l'upgrade a réussi, si vous avez changé de famille de firmware, la première chose à faire est un reset de la NVRAM aux valeurs usine. C'est indispensable, sinon votre nouveau firmware risque de faire des choses très bizarres.
- Suivez pour cela la méthode indiquée à la fin de ce billet. L'utilisation du bouton RESET enfoncé plus de 20 secondes est le moyen le plus simple.
Ca y est, ouf !
Si vous avez installé tout d'abord une version minimale (de moins de 3 Mo) de votre firmware favori, il est temps maintenant d'upgrader à nouveau le firmware en installant la version "complète" via l'interface web.
Installation d'un firmware via l'interface web
N.B.: Quand votre WRT54G est à ses valeurs usine:
- Son adresse IP est 192.168.1.1
- Pour vous connecter par l'interface web, laissez le champ utilisateur vide, et utilisez le mot de passe admin
- Pour vous connecter en console par telnet ou SSH, utilisez le nom utilisateur root, et le mote de passe admin
- Choisissez maintenant le firmware que vous voulez installer. Extrayez le binaire qu'il vous faut de son archive.
Si vous utilisez DD-WRT, vous prendrez par exemple le fichier DD-WRT.v23_generic.bin (pour la mise à jour via l'interface web de DD-WRT, utilisez les fichier génériques et non pas les fichiers comportant le nom de votre modèle précis de routeur, ces derniers étant réservés spécifiquement à la mise à jour par TFTP[5])
- Mettez maintenant à jour le firmware : Sur la plupart des familles de firmware, rendez-vous sous Administration / Firmware upgrade, et, à partir de là, envoyez le fichier de votre choix.
- Comme pour la méthode précédente, n'interrompez pas la mise-à-jour, laisser au routeur le temps de rebooter tranquillement, et remettez ensuite la configuration du routeur à zéro.
- Si vous upgradez entre deux versions successives et proches d'une même famille de firmware, il n'est généralement pas nécessaire de remettre la config à zéro. Cependant, si vous constatez des choses bizarres, n'hésitez pas à le faire avant de conclure que votre nouveau firmware "ne marche pas".
Voilà, votre nouveau firmware est installé, vous n'avez plus qu'à en découvrir les multiples possibilités...
Notes
[1] Pour aider Google: firmware upgrade, firmware update
[2] Toutefois, si vous rencontrez par la suite un problème matériel sur votre routeur, vous pourrez peut-être (s'il est toujours possible de communiquer avec le routeur) réinstaller un firmware Linksys avant de l'expédier en réparation...
[3] On peut trouver ici un client TFTP spécifique pour Linux, sous forme de code source à compiler avant emploi. Linksys fournit paraît-il un client TFTP spécifique pour Windows, mais je ne me suis jamais intéressé à la question, car je n'utilise pas Windows, heureux homme que je suis.
[4] S'il y a un switch entre votre ordinateur et le WRT54G, cela ne sert évidemment à rien
[5] C'est la théorie. En pratique, j'ai souvent envoyé via l'interface web des fichiers portant l'extension de mon modèle de routeur, et ça a toujours parfaitement marché. Par contre le contraire n'est pas vrai : par TFTP, il faut vraiment utiliser le firmware spécifique à votre modèle précis.









