Router unbricken

Aus Freifunk Franken
Wechseln zu:Navigation, Suche

Bei manchen Routern gibt es auch die Möglichkeit eine neue Firmware aufzuspielen wenn der Router nicht mehr bootet (falsches Image aufgespielt, etc.).

Was wird benötigt?

  • Laptop/PC mit Ethernetport und Kabel
  • tftp Server
  • Wireshark
  • Passende Firmware (am besten die Original TP-Link Firmware)
  • Grundkenntnisse in Sachen Netzwerk

Bei welchen Routern klappt es

  • wr841n(d) v8 und v9
  • wr842n(d) v2
  • weitere müssen getestet werden

Bei welchen Routern klappt es nicht

  • wr841n(d) v7

vorgehen

  • Router ist stromlos
  • Auf den Laptop/PC Wireshark starten und auf der Netzwerkschnittstelle mitsniffen
  • Laptop/PC mit Ethernetkabel mit einer gelben Buchse des Routers verbinden
  • Resettaste am Router drücken und gedrückt halten, Router anschalten und nach ca. 10 Sekunden Resettaste los lassen.
  • Wireshark beobachten, nach einiger Zeit kommen Pakete in der Art "Who has 192.168.1.66? Tell 192.168.1.86" (die IPs können abweichen ich hatte auch schon 192.168.0.XX). Falls man dies sieht, dürfte das flashen auf jeden Fall klappen.
  • Am Laptop/PC nun die gewünschte IP einstellen (im oberen Beispiel 192.168.1.66) Subnetmask 255.255.255.0, Gateway und DNS kann leer gelassen werden
  • tftp Server starten und weiterhin Wireshark beobachten es wird versucht zu verbinden und der Router sucht nun nach der neuen Firmware am tftp, auch hier zeigt Wireshark an wie die Datei genau heißen muss z.b. "wr842ndv1_tp_recovery.bin".
  • Die Firmwaredatei genau so benennen und ins Homeroot des tftp Servers legen.
  • Anschließend holt sich der Router die Datei schreibt sie in den Flash und startet dann hoffentlich erfolgreich durch.

Falls irgendwelche Schritte nicht mehr klappen, hat es sich auch bewährt den Router nochmals mit gedrückter Resettaste (so wie oben beschrieben) neu zu starten, gerade nach ändern der IP am Laptop/PC kommt es immer wieder zu Probleme.

Falls es nicht klappt, kann auch der WAN Port oder die anderen Ethernetports probiert werden.

Besonderheiten

Manche Router brauchen expliziet ne bestimme Filesize damit sie die Firmware bei einem tftp akzeptieren.

Betroffene Router

  • wdr3600 v1.5

Lösung

das Original Image des Herstellers verwenden und die ersten bytes wegstrippen (findet man meist im OpenWRT Wiki wieviel), bsp. für den wdr3600:

dd if=orig.bin of=tplink.bin skip=257 bs=512

Hier will ich erläutern, wie man einen TP-Link TL-WR1043ND Version 1 per serieller Konsole neu flashen und so reparieren kann.

Vorbereitung des Routers

Gehäuse öffnen

Das Öffnen ist nicht schwer, wenn man weiß, wie es geht ;-)

Es gibt nur zwei Schrauben. Diese befinden sich unter den hinteren beiden Gummifüßchen. Sie haben einen Phillips-0-Kopf, ein entsprechender Schraubenzieher wird benötigt:

Als nächstes löst man die Muttern, mit denen die Antennenanschlüsse befestigt sind und drückt sie vorsichtig ins Innere des Routers. Hierzu benötigt man einen 8-mm-Gabel- oder Ringschlüssel:

Dann wird der untere Gehäuseteil vorsichtig aufgehebelt. Das geht am besten mit einem Schlitzschraubenzieher, den man an den Aussparungen zur Wandmontage ansetzt:

Die untere Schale wird dann vorsichtig angehoben …

… und das schwarze Hinterteil herausgezogen:

Dann löst man – wiederum vorsichtig – die beiden Clips an der Innseite der Vorderseite, vorzugsweise, ohne sie abzubrechen ;-) …

… und entfernt schließlich die obere Schale:

Datei:TL-WR1043-ND V1 Open Case 7.jpg

Nachdem dann der Vorderteil abgezogen ist …

Datei:TL-WR1043-ND V1 Open Case 8.jpg

… kann man die Platine entnehmen.

Datei:TL-WR1043-ND V1 Board Front.jpg

Pins für die serielle Konsole auflöten

Die Anschlüsse (UART) für die serielle Konsole befinden sich, von hinten betrachtet, unten rechts:

Datei:TL-WR1043-ND V1 Board Back UART.jpg

Netterweise sind die Löcher mit Lötzinn gefüllt, so dass man sie erstmal freimachen muss. Dafür braucht man mindestens eine Entlötsaugpumpe, besser eine Entlötstation.

Dann lötet man die Pins auf die Platine. Sinnvollerweise benutzt man eine 3er-Stiftleiste. Hier meine hervorragende Lötarbeit von unten …

Datei:TL-WR1043-ND V1 Board UART Pins Back.jpg

… und von oben. Das linke Loch bleibt frei, dann folgen Gnd, Rx und Tx:

Datei:TL-WR1043-ND V1 Board UART Pins Marked.jpg

Verbindung zum Router vorbereiten

Man benötigt für die Verbindung zum Router einen UART-Adapter. Ich habe einen „PL2303HX USB to TTL to UART Converter“ benutzt. Für die, die eine haben: Eine „normale“ RS232-Schnittstelle (mit einem 9-poligen D-Sub-Stecker) kann nicht benutzt werden, da die Spannungen nicht passen – auch, wenn es hier ebenfalls Gnd, Rx, Tx und Baud-Raten gibt!

Kommt der genannte Adapter zum Einsatz, muss er folgendermaßen angeschlossen werden: Schwarz (= Gnd) an Gnd, Grün(lich) (= Tx out) an Rx und Weiß (= Rx in) an Tx. Das rote Kabel, an dem die 5 V des USB-Anschlusses anliegen, wird nicht angeschlossen:

Datei:TL-WR1043-ND V1 PL2303HX Connection Marked.jpg

Zusätzlich zu der seriellen Verbindung benötigt man noch eine Verbindung per Netzwerkkabel. Das Ganze sieht dann in etwa so aus:

Datei:TL-WR1043-ND V1 UART-Connected.JPG

Firmware flashen

TFTP-Server vorbereiten

Zunächst benötigt man die Firmware, die man flashen will. Diese muss von einem TFTP-Server bereitgestellt werden.

Sinnvollerweise gibt man der Datei einen griffigen Namen wie etwa „firmware.bin“.

Auf dem Rechner (der als Server fungiert) setzt man eine IP-Adresse aus dem 192.168.0.0/24-Raum, in meinem Fall 192.168.0.5.

Linux

Unter Linux wurde tftp-hpa benutzt.

Windows

Unter Windows empfiehlt sich Tftpd32. Das ganze kann man sich hier von der Anbieterseite kostenlos herunterladen und installieren. Wenn man das Programm gestartet hat muss man unter den Buttom "Browse" auf den Ordner verweisen in dem die *.bin-Datei liegt (es empfiehlt sich einen separaten Ordner dafür zu erstellen). Über den Buttom "Show Dir" kann man dann prüfen ob die Datei richtig erkannt wird. Im Anschluss muss man im Dropdown Menü "Server Interfaces" die Netzwerkkarte/IP auswählen, über den man den Server zur Verfügung stellt.

Serielle Konsole starten

Zum Anzeigen der seriellen Konsole gibt es verschiedene Möglichkeiten. Die einfachste ist, screen zu verwenden (weil screen ist vermutlich eh da – und ja, screen kann tatsächlich auch serielle Konsolen anzeigen :-) – in diesem Fall (und für den Fall, dass der USB-UART-Adapter unter /dev/ttyUSB0 zu finden ist) führt man einfach

screen /dev/ttyUSB0 115200

aus. Unter Windows wird man PuTTY verwenden wollen.

Dann steckt man das Netzteil des Routers an, und kann die Bootmeldungen bewundern. Im Falle meines reparierten Boot-Loops sieht das dann in etwa so aus:

Datei:TL-WR1043-ND V1 Serial Console.jpg

Firmware per serieller Konsole einspielen

Beim Booten kommt irgendwann die Meldung „Autobooting in 1 seconds“. In diesem Moment hat man die besagte Sekunde Zeit, „tpl“ und Enter einzugeben, um den Bootvorgang zu unterbrechen. Man bekommt dann folgendes Prompt:

ar7100>

Zuerst stellt man die lokale IP-Adresse und die des Servers ein (natürlich ohne das „ar7100>“, das steht hier nur zur Verdeutlichung, dass die Befehle auf der seriellen Konsole eingegeben werden):

ar7100> setenv ipaddr 192.168.0.3
ar7100> setenv serverip 192.168.0.5

Dann löscht man den Speicher …

ar7100> erase 0xbf020000 +7c0000

… holt das Firmware-Image …

ar7100> tftpboot 0x81000000 firmware.bin

… schreibt es in den Speicher …

ar7100> cp.b 0x81000000 0xbf020000 0x7c0000

… und bootet den Router neu:

ar7100> bootm 0xbf020000

Den Erfolg des Flashens kann man dann gleich per serieller Konsole verfolgen.

Viel Spaß beim Reparieren!

Einzelnachweis