Router Recovery - TFTP Pushbutton und TTL (Serial Recovery)

Moin FF’er,

da ich es kürzlich selber nutzen musste, hier ein kleines HowTo zum Thema Router Recovery.

Begriffsdefinition:

TFTP Pushbutton Methode:
Viele Router haben in ihrem Bootloader ein kleines Notfallsystem, welches in der Lage ist den Router im Notfall wiederherzustellen. Hierzu wird von einem FTP Server, die Firmware des Router geladen und installiert. Dieser FTP Server muss eine fest definierte IP haben und die Firmware eine bestimmte Namensgebung aufweisen.

TFTP Serial (TTL) Methode:
Hierfür ist eine serieller Zugriff auf den Router nötig. Was bei der Pushbutton Methode automatisch funktioniert, muss mit der seriellen Varriante per Hand gemacht werden.

1. TFTP Pushbutton Methode

Vorbereitung:

  • gebrickten Router bereitlegen
  • LAN Kabel
  • original Firmware vom Hersteller herunterladen oder ein Freifunk / OpenWRT/LEDE Factory Image verwenden
  • TFTP herunterladen und entpacken
  • unter Windows die Firewall komplett ausschalten
  • TFTP ausführen

Wie es geht:

  • Nun im OpenWRT Wiki nachlesen, ob euer Router diese Methode unterstützt. Ihr findet diese Informationen unter der Rubrik „Recovery, un/debrick oder Flash via tftp“

  • Dort steht auch, wie ihr die Firmwaredatei benennen und auf welche statische IP Adresse ihr euren LAN Adapter einstellen müsst.

  • Kopiert nun die Firmwaredatei in das Verzeichnis des TFTP Servers und benennt sie wie im Wiki beschrieben um.

  • Verbindet euren Router (gelber Port) mit dem PC und stellt sicher, dass kein anderer Netzwerkadapter, z.B. WLAN derzeitig verbunden ist.

  • Haltet nun die Reset Taste gedrückt und schaltet den Router ein, nach kurzer Zeit wird dieser die Firmware vom TFTP Server laden und sich neu initialisieren. Sobald die Datei geladen wird könnt ihr den Resetknopf wieder loslassen. Je nachdem welche Firmware ihr installiert habt, ist eurer Router dann wieder unter der auf dem Router Etikett angegebenen IP oder bei OpenWRT unter 192.168.1.1 erreichbar.

Tip!
Dieser Weg funktioniert auch mit jedem Freifunk Factory Image.
Ein englischsprachiges Video, welches das o.g. beschreibt findet ihr hier.

2. TFTP Serial Methode

Vorbereitung:

Wie es geht:

  • Streckt nun zunächst den TTL Adapter in einen USB Port und installiert ihn mittels des o.g. Treibers. Öffnet im Gerätemanager die Eigenschaften eurer neuen COM Verbindung und stellt die Anschlusseinstellungen wie folgt ein:

    Bits pro Sekunde: 115200 Datenbits: 8 Parität: keine Stopbits: 1 Flussteuerung: keine

    Merkt euch die COM Port Nummer (z.B COM15).

  • Nun im OpenWRT Wiki nachlesen, wie die PIN Belegung der seriellen Schnittstelle eures Router ist. Zu den meisten Routermodellen findet ihr hier Bilder des PCB. Ich empfehle euch die o.g. Stiftleisten einzulöten. Es ist zwar etwas mehr Arbeit, aber so geht ihr auf Nummer sicher. Es geht jedoch auch indem ihr die losen Kabelenden in die Löcher steckt (manche Modelle haben zugelötete Löcher, diese müssen natürlich entlötet werden).

Dann verbindet ihr zuerst den Massekontakt (GND), dann die Datenleitungen. Beachtet, dass TX vom Router zu RX am USB Adapter verbunden werden muss. RX vom Router muss natürlich auch zu TX am Adapter! **Keine** weiteren Kontakte müssen verbunden werden!
  • Öffnet Putty klickt unten links auf Serial und gebt dort die o.g. Werte ein, COM Port nicht vergessen! Flow control auf None!

  • Nun erneut im OpenWRT Wiki nachlesen, wie ihr die Firmwaredatei benennen und auf welche statische IP Adresse ihr euren LAN Adapter einstellen müsst.

  • Kopiert nun die Firmwaredatei in das Verzeichnis des TFTP Servers und benennt sie wie im Wiki beschrieben um.

  • Verbindet euren Router (gelber Port) mit dem PC und stellt sicher, dass kein anderer Netzwerkadapter, z.B. WLAN derzeitig verbunden ist.

  • Fassen wir kurz zusammen:

    1. Firewall ist aus
    2. LAN Adapter hat die im Wiki genannte statische IP
    3. alle anderen LAN Adapter sind aus
    4. TFTP Server läuft
    5. Firmware ist wie im Wiki benannt und befindet sich im TFTP Verzeichnis
    6. USB TTL Adapter ist installiert, angeschlossen und eingerichtet
    7. Putty ist wie beschrieben konfiguriert
    8. Router ist noch aus und per LAN Kabel mit dem PC verbunden
  • kopiert nun die Buchstaben tpl in die Zwischenablage, klickt in Putty auf open, schaltet euren Router ein und legt den Mauszeiger über das Putty Fenster.

  • Putty zeigt nun die Konsolenausgaben des Bootvorgangs eures Routers. Nun heißt es schnell sein, seht ihr im Putty Fenster den Schriftzug Autoboot in 1 seconds … klickt mit der rechten Maustaste in das Putty Fenster und drückt Enter. Nur einmal drücken :slight_smile: , das unterbricht den Bootvorgang.

  • Ein letztes mal muss im OpenWRT Wiki nachgelesen werden welche Befehle ihr nun ausführen müsst. Ihr findet diese idR unter Flash via tftp ->Using a serial line.

Ein Beispiel:

erase 0x9f020000 +0x3c0000 tftpboot 0x81000000 code.bin cp.b 0x81000000 0x9f020000 0x3c0000 bootm 0x9f020000

Diese Befehle bewirken, dass zunächst der Speicherbereich von 0x9f020000 bis 0x3c0000 gelöscht wird. Danach wird die Datei code.bin von eurem TFTP Server geladen und im Speicher ab 0x81000000 abgelegt. Der nächste Befehl kopiert die Firmware dann an ihren endgültigen Ort. Der letzte Befehl läßt den Router von dieser neuen Firmware booten.

Das wars auch schon, der Router installiert nun die Firmware und startet neu. Je nachdem welche Firmware ihr installiert habt, ist eurer Router dann wieder unter der auf dem Router Etikett angegebenen IP, oder bei OpenWRT, unter 192.168.1.1 erreichbar.

Tip!
Dieser Weg funktioniert auch mit jedem Freifunk Factory Image.
Ein englischsprachiges Video, welches das o.g. beschreibt findet ihr hier.

Viel Spaß beim nachmachen!

Verknüpfte Themen:

10 „Gefällt mir“

Zwischen den beiden Methoden (bzw als einzige einfache Alternative für ältere TP-Links wie 841v8 oder 741er) :

  • Anschalten
  • Warten bis „Lock“ zu leuchten beginnt (dauert ca 10s)
  • innerhalb von 1s auf Wps/Reset drücken und halten bis Lock mit schnell flackert.
  • per Telnet mit 192.168.1.1 verbinden
  • mount_root
  • passwd root
  • dropbear
  • per scp mit 192.168.1.1 als root verbinden, PW siehe oben
  • ein factory-image nach /tmp kopieren
  • auf dem noch offenen Telnet ein sysupgrade -n mit dem obigen File aus /tmp starten
3 „Gefällt mir“

Was du beschreibst ist der Rescue Mode von OpenWRT . was oben generell beschrieben ist der bootloader tftp „rescue“ bzw Flashprozess.

Nur für Überblick mal eine Auflistung der Modi in ihrer Reihenfolge

  1. Bootloader Firmware Ebene → Tftp flashen
  2. OpenWRT → Rescue Mode (mehrfach beim hochfahren den Reset Knopf, bis Lämpchen sehr schnell blinkt, danach hat man idR Telnet)
  3. Gluon → config Mode (im Betrieb lange den Reset Knopf drücken, http/telnet/ssh)
  4. SSH → wenn aktiv / gesetzt im Betrieb

je nachdem was kaputt ist, bzw auf welcher Ebene man Zugriff braucht kann man da jeweils ansetzen.

1 „Gefällt mir“

So, ich krame das alte Ding mal wieder raus, weil ich einfach nicht mit den unzureichenden Informationen über das Programm tftp klar komme (selber Typ, also ein 4300, anderes GErät, selbes Problem wie in Post 1):

  1. ich habe in Windows dem LAN die IP 192.168.0.66 gegeben. Mit tftp wird im Log auch ein request nach der Firmware wiederholt angezeigt. Soweit so gut.
  2. kriege ich tftp aber in keinster Weise so eingestellt, dass es die FW „bereit stellt“. Der name ist exakt wie gewünscht, die Datei liegt im Verzeichnis wo auch die tftp.exe liegt.

Kann mir jemand - ggfs. auch mit einem Screenshot mal Zeigen AUF WELCHER Seite von tftp WAS GENAU eingestellt sein muss, damit das Ding auch läuft, bzw. dem Router ermöglicht, die neue FW zu ziehen?

Ich bin zwar nicht doof, aber ich brauche hier wohl Bilder, denn ich kann es nicht erraten…

P.S. TFTP speichert auch absolut keine Einstellungen: wenn ich vom Reiter TFTP-Server zu TFTP-CLient wechsle wird die Schnittstelle oben zurück gesetzt, andere Einstellungen in „settings“ werden nicht gespechert, ist immer wieder dieselbe default Einstellung nach einem neuen Start.

Nimm doch das TFTP32, das im obigen Thread verlinkt ist.

Das ist ja genau dieses… :wink:
folgende Fehlermeldung aus dem Log von TFTP:

Connection received from 192.168.0.86 on port 1815 [10/03 23:40:22.761]
Read request for file <wdr4300v1_tp_recovery.bin>. Mode octet [10/03 23:40:22.761]
File <wdr4300v1_tp_recovery.bin> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [10/03 23:40:22.761]

Det Router fragt ja nach der Datei, also was mache ich falsch?

tftpd32.ini.zip (535 Bytes)

Bei mir hat das damals mit den Einstellungen in obiger Ini-Datei geklappt. Muß logischerweise im gleichen Verzeichnis wie tftpd32.exe liegen. Dort ist als „BaseDirectory“ das aktuelle Verzeichnis eingetragen. Du legst also die Firmware an die gleiche Stelle.

Hey,

bitte denk daran, deine Windows Firewall komplett zu deaktivieren. Auch dann wenn tftp erlaubt ist, wird dadurch die Bereitstellung verhindert.

Achte auch drauf, dass die IP des PCs manuell auf die korrekte (siehe OpenWrt Wiki) IPv4 gesetzt wird.

Auch sollten für die Übertragung alle anderen Netzwerkadapter wie WLAN Karten inaktiv sein.

Beachte bitte auch die korrekte Benennung der Imagedatei. Diese muss im gleichen Ordner wie die tftp.exe liegen.

Hast du die Unbrickanleitung von mir im Erklärbar schon gesehen?

ein weiterer häufiger Problemfall ist, dass die Netzwerkkarten zum Teil viel zu langsam reagieren, ein switch daher manchmal zwingend notwendig ist.
(die meisten Communities haben die 841er Kisten so das dort an allen gelben Ports quasi switched)

hab hier drei Anleitungen, die ich vor einem Jahr mal gebraucht habe, auch für Windows:

TP-Link Firmware recovery.pdf (658,1 KB)
TP-Link-Anleitung-für-Win7.pdf (218,1 KB)
Back to original firmware [OpenWrt Wiki].pdf (130,4 KB)

1 „Gefällt mir“

hab’ mir die drei mal gezogen - mal sehen, ob das hilft… thx schonmal!

hab den Router ja direkt am Rechner, die Anfrage vom Router nach der Software kommt ja auch, aber eben die Bereitstellung durch den Computer startet eben nicht.

erklärungsbedürftig. Bei mit schnappt sich der Router die sofort, wenn er Strom bekommt (und ich rechtzeitig vorher Finger auf Reset habe). Ging so schnell, dass ich dachte es würde nicht funktionieren, bis ich dann sah, war alles längst durch.

bei mir sehe ich dann das „ping“ vom Router, wie er die FW anfordert auf immer wieder verschiedenen Ports… aber das Hochladen funktioniert überhaupt nicht…
Kann man das ggfs. unter Linux versuchen? gibt es da auch sowas wie TFTP unter Ubuntu?

also, so funktioniert es bei mir problemlos:

  1. auf PC automatische IPvergabe aus und IP von PC auf 192.168.0.66 /255.255.255.0

  2. TFTP und in das TFTP-Verzeichnis auch das in wr941ndv6_tp_recovery.bin umbenannte bin, also beides muss im selben Verzeichnis sein

  3. Router ist noch AUS, mit LAN PC und Rouuter verbinden, kontrollieren, ob PC die IP auch genommen hat.

  4. Reset-Taste drücken und festhalten, und DANACH Power on für Router, bei festgehaltener Resettaste. Die erst loslassen nach ca. 10 sec.

  5. warten, ca. 2 Min, Router holt sich automatisch das Futter

  6. freuen, danach nach Reboot mit 192.168.0.1 in TP-Link gehen und FF-firmware aufspielen.

exact wir hier beschribenen:
https://www.gargoyle-router.com/phpbb/viewtopic.php?f=8&t=8197

Recovered to factory

setup TFTP
set PC to 192.168.0.66 /255.255.255.0
http://www.friedzombie.com/tplink-stripped-firmware/
rename recovery file to: wr941ndv6_tp_recovery.bin
Connect PC to WAN port (eth0) of router.
Power on router then immediately hold RESET button for about 3 seconds. Two lights now on:- Power and the „LOCK“ light at other end.
Router should automatically retrieve the recovery file, reflash and reboot.
Good to go in about 2 minutes …if you have more than just one light showing then it’s OK.
nb. I could not get router to recognise my PC lan port at all (HP 2570p) so swapped to spare PC.
Could see eth0/eth1 down in console messages and no traffic was flowing.

1 „Gefällt mir“

Trick ist für einige Rechner wirklich, dass man einen möglichst tumben Switch (oder alten Hub…) dazwischen setzt.
Gerade einige Linux-Derivate in Verbindung mit merkwürdigen Stromspar-Laptops brauchen bisweilen 15s bis ein Ethernet-Link hochkommt nach dem Anstecken/Powerup des Endgerätes.
Da ist es dann schlicht zu spät, wenn in diesen 15s eben noch kein TFTP „reagiert“ auf den gerade kalt startenden Router.
(Bei WDR3600 an so „komischen USB3-Ethernet-Adaptern“ (am Macbook) hat man ohne Switch dazwischen keine Chance, wie ich von mehreren Leuten glaubhaft versichert bekam.)

Also er hat sich nun die FW gezogen - hab’s mit der stripped versucht - aber es tut sich noch nichts in Richtung reboot…

DHCP: proposed address 192.168.0.1 [16/05 19:32:03.569]
Rcvd DHCP Discover Msg for IP 0.0.0.0, Mac 78:84:3C:FE:09:BB [16/05 19:32:05.378]
Client requested address 192.168.0.66 [16/05 19:32:05.379]
Freeing item 192.168.0.1 78:84:3C:FE:09:BB [16/05 19:32:05.379]
<wdr4300v1_tp_recovery.bin>: sent 15745 blks, 8060928 bytes in 5 s. 0 blk resent [16/05 19:32:06.137]

also, wenn er die original Firmware drauf hat. auf PC wieder autmatische IP wieder anschalten, ggf. reboot PC, LAN von Router weg, ausschalten, warten, einschalten, warten, Reset Router, warten bis blinki durch (der 940 / 941 gehen erst noch mal aus, dann erst LAN dran, browser, 192.168.0.1
dann kommt da Login für TP-Link

Hinweis zum Reset-Ablauf
Reset ist bei 841n v9 und 841n v10 und 940n v3 / 941nd v6 unterschiedlich und kann
verwirrrend sein:

  1. beim 841n v10 erfolgt nach „Speichern und Neustart“ in LUCi i.d.R. kein Reboot, d.h.
    WLAN schaltet noch nicht an und man kann sofort danach mit WinNCP weiter machen.
  2. beim 940n v3 und 941nd v6 gehen nach „Speichern und Neustart“ in LUCi oder bei
    jedem Drücken der Reset-Taste erst alle LEDs an, dann alle LEDs aus, dann beginnt die
    linke LED erst schnell, dann langsam zu blinken, dann konstant an, dann sehr langsam
    blinkend, und erst dann folgt die WLAN-LED bzw. man kann nun das LAN-Kabel
    einstecken.
    Bleibt die linke LED aber konstant an und beginnt nicht zu blinken, muss erst Strom aus,
    ca. 1-2 Min warten, Strom wieder an und erneut auf den Ablauf warten bis links die LED
    langsam blinkt und entweder WLAN auch blinkt oder man LAN einstecken kann.
    Das kann auch geschehen, wenn man mal einfach nur aus gemacht hat, so dass es
    empfohlen wird, das einmal richtig laufende Gerät immer an zu lassen.
    Ausserdem leuchtet beim 941n v3 / 941nd v6 die rechte LED nicht auf, die beim 841n
    anzeigt, ob VPN läuft.

Habe es nochmal versucht:
Connection received from 192.168.0.86 on port 2213 [16/05 19:54:35.284]
Read request for file <wdr4300v1_tp_recovery.bin>. Mode octet [16/05 19:54:35.284]
OACK: <timeout=5,> [16/05 19:54:35.284]
Using local port 51361 [16/05 19:54:35.284]
<wdr4300v1_tp_recovery.bin>: sent 15745 blks, 8060928 bytes in 4 s. 0 blk resent [16/05 19:54:39.486]

warte jetzt schon 5 Minuten, aber der Router macht kein Reboot. Ist ein WDR4300 btw.

hat einer mal einen link zu einer funktionierenden recovery? Evtl. ist meine ja defekt…