Nachdem die OpenWRT Seiten irgendwie nicht sehr deutlich sind, was das „debricken“ eines Routers mit OpenWRT angeht, der noch in den Recovery-Modus startet, schreib ich das hier mal auf, damit ich es nicht vergesse….
Das Problem
Nachdem ich eine Firmware für mein kleines Freifunk-Projekt in Talheim gebaut hatte, die ein openvpn mitbringen sollte, musste ich auf die harte Tour erfahren, dass der TL-WR841N wirklich wenig Flash-Speicher hat: Das Firmware-Image war zu groß, der Router ließ sich flashen, startete auch, stürzte nach dem Systemstart jedoch stets ab und befand sich somit in einem Boot-Loop – weder das Webinterface noch die Konsole via ssh waren erreichbar.
Auf den OpenWRT Seiten wird schön erklärt, was man mit dem Recovery-Modus alles anfangen kann (Passwort zurücksetzen, Werkseinstellungen…) zum Thema „zu großes Image geflasht“ gibt es leider keine Infos.
Das Lösungsprinzip
Wenn man eine funktionierende OpenWRT-Firmware hat, ist es im Prinzip ganz einfach, den Router zu retten:
- In den Recovery-Modus starten, via telnet auf den Router.
- Die Firmware mit
sysupgrade -n <firmware-sysupgrade>.bin
flashen.
Das eigentliche Problem besteht darin, die Firmware-Datei auf den Router zu bekommen – hier bieten sich zwei Varianten an.
- Man kann die Firmware-Datei auf einen Webserver legen und mit
wget
von der Routerkonsole auf den Router holen. - Wenn man eine Rechner mit ssh zur Hand hat, kann man die Datei direkt per
scp
von der Routerkonsole aus vom Desktop-Rechner auf den Router kopieren.
Schritt für Schritt in Variante 2
Das Vorgehen für den TP-Link TL-WR841N(D).
- Router mit einem LAN Kabel mit dem Desktop-Rechner verbinden. Eine Besonderheit für den TL-WR841N(D) besteht darin, dass dies an der blauen WAN Buchse geschehen muss.
- Desktop Rechner auf die statische IP-Adresse 192.168.1.2/24 konfigurieren.
- Router anmachen, warten bis die LED beim Zahnrad aufleuchtet, dann Reset-Knopf an der Rückseite des Routers drücken. Die LED am Zahnrad blinkt jetzt flott, der Router ist im Recovery-Modus.
- Nun kann man ohne Passwort vom Desktop-Rechner aus mit dem Befehl
telnet 192.168.1.1
auf die Konsole des Routers zugreifen. - Auf dem Router wechselt man nach /tmp, dort ist genug Platz für die Firmware, die geflasht werden soll und kopieren die Firmware Datei vom Desktop-Rechner auf den Router:
cd /tmp
scp 192.168.1.2:/tmp/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-sysupgrade.bin .
- Nun kann man den Router mit dem Befehl
sysupgrade -n <firmware-sysupgrade>.bin
flashen, nach dem Vorgang startet das Gerät neu und das Problem sollte behoben sein.
Es geht noch einfacher:
1. Man installiert sich einen TFTP-Server (z.B. SolarWinds für Windows, gibt es auf heise.de).
2. Die Netzwerkkarte wird auf die feste IP geändert 192.168.0.66.
3. In das Verzeichnis des TFTP-Servers wird die Firmware kopiert und in wr841nv9_tp_recovery.bin umbenannt. Danach ist der Server einsatzbereit.
4. Der Router wird über die blaue Buchse mit dem Rechner verbunden.
5. Am Router die Reset-Taste drücken und halten und den Router einschalten. Die Reset-Taste darf erst losgelassen werden, wenn im Log-Fenster angezeigt wird „TFTP verbunden von… …Gestartet“.
6. Der Abschluß der Übertragung wird im Log-Fenster angezeigt.
7. Router bootet neu und ist einsatzbereit.
Diese Funktion bezieht sich auf Version 9 der TL-WR841N, funktioniert aber auch bei anderen Modellen, wie dem WDR3500.