Vor einigen Tagen habe ich DD-WRT 24 SP3 auf meinem TP-Link WR1043ND v2.1 Router installiert. Leider lief die Firmware nicht so stabil wie zuerst gedacht und ein Betrieb als WLAN Accesspoint war nicht möglich. Relativ schnell war klar, dass OpenWRT das Gerät befeuern sollte. Ich habe ein „Werksreset“ nach dieser Anleitung versucht, jedoch den Fehler begangen, das Upgrade über eine WLAN-Verbindung zum Router durchzuführen. Während des Upgrades brach die WLAN Verbindung ab und die Softwareinstallation war nicht vollständig. In Folge dessen war der Router gebricked – d.h. es war keine Verbindung mehr über die üblichen Schnittstellen (LAN, WAN, WLAN) möglich und ein Reset über den Hardwaretaster blieb wirkungslos.
Es gibt zum Glück noch eine andere Möglichkeit, um mit dem Router zu kommunizieren: Die auf der Platine befindliche UART Schnittstelle kann genutzt werden, um über eine Konsole mit dem Gerät Kontakt aufzunehmen und Befehle zu geben. Auf diese Weise – und mit einem TFTP Server – ist es möglich, den gebrickten Router wieder zu beleben.
Benötigt werden ein 3,3V-UART USB Wandler, ein Kreuzschlitz-Schraubendreher, etwas Geschick, Nerven und Geduld ;)
UART Schnittstelle vorbereiten
Auf der Gehäuseunterseite befinden sich vier Schrauben, die mit einem handelsüblichen Kreuzschlitzschraubendreher herausgedreht werden können. Des weiteren befinden sich im den Gehäuserand herum einige Widerhaken, mit denen die beiden Gehäusehälften zusammengehalten werden. Um das Gehäuse vollständig zu öffnen, ist etwas Gewalt nötig.
Auf der linken Seite der Platine (die schwarze Moosgummileiste mit den eingebetteten LEDs liegt unten) befindet sich ein Streifen von vier Lötstellen. Dabei handelt es sich um die UART Schnittstelle, zu der vom PC aus eine Verbindung hergestellt wird. Für die Kommunikation über UART sind nur drei Pins nötig: GND, RX und TX. GND stellt üblicherweise die Masse dar, RX ist der Empfängerport und TX der Senderport. Die oberste Lötstelle kann mit VCC, also Versorgungsspannung beschriftet werden – sie wird nicht benötigt.
Die Pins befinden sich in folgender Reihenfolge auf der Platine (vom Kondensator aus abwärts): VCC, GND, RX, TX.
Für einen einfachen (und wiederverwendbaren) Kontakt zum UART Adapter habe ich vier Pins auf die Platine aufgelötet. Sollte ich die Schnittstelle noch einmal benötigen, benötige ich keinen Lötkolben mehr, sondern bin ich der Lage, eine Steckverbindung herzustellen.
Zum Auflöten der Pins kann die Platine als ganzes aus dem Gehäuse gehoben werden. Die Drähte zu den Antennenanschlüssen müssen dazu aus ihren Halterungen entfernt werden.
TFTP Server einrichten
Die OpenWRT Firmware wird vom Router aus über eine TFTP Verbindung von einem PC via LAN heruntergeladen. Der Router hat dabei die Rolle des TFTP Clients – wenn dem Router eine Datei angeboten werden soll, muss auf dem PC deshalb ein TFTP Server eingerichtet werden.
Wie ihr einen TFTP Server einrichtet, könnt ihr an verschiedenen Stellen im Netz nachlesen. Arch Linux user sollten sich die Seiten im Wiki anschauen: https://wiki.archlinux.org/index.php/tftpd_server
Wichtig bei der Einrichtung: Legt ein extra Verzeichnis z.B. in eurem Home-Verzeichnis an (bei mir: „code.bin“) und macht es für den TFTP-Server zum Standard-Serververzeichnis. In dieses Verzeichnis wird später die Firmware-Datei (.bin) abgelegt. In der Beispielkonfiguration im Arch Wiki wird als Serververzeichnis /srv/tftp/ festgelegt – ändert das gegebenenfalls.
Noch ein Tipp für Arch User: Bevor der tftpd.service gestartet werden kann, muss der Dienst tftpd.socket laufen.
OpenWRT downloaden
Downloadet die aktuelle OpenWRT Firmware (Codename „Barrier Breaker“) für euren WR1043nd v2 (Download hier).
Die Firmware-Datei (bei mir: „openwrt-ar71xx-generic-tl-wr1043nd-v2-squashfs-factory.bin“) wird in das TFTP Serververzeichnis auf eurem PC verschoben. Von dort lädt der TFTP-Client (Router) die Firmware herunter.
LAN vorbereiten
Damit der Router weiß, zu welchem PC mit welcher IP-Adresse er eine TFTP Verbindung aufbauen soll, gibt es eine Festlegung: Der Rechner mit dem TFTP-Server muss die IP-Adresse 192.168.1.100 haben. Verbindet die Netzwerkschnittstelle eures PCs über ein LAN Kabel mit dem LAN-Switch des Routers und legt für euren Rechner die statische IP 192.168.1.100 fest (Netzmaske: 255.255.255.0 | Gateway: 0.0.0.0).
PC mit UART Schnittstelle verbinden
Für die Verbindung zum Mainboard des Routers habe ich diesen UART Wandler genutzt. Stellt sicher, dass ggf. erforderliche Treiber auf eurem PC installiert sind.
Die Kommunikation findet über eine Kommandozeile statt. Ich empfehle Putty (für Linux, MacOS und Windows) als Client für die serielle Schnittstelle. Der UART Wandler wird via USB mit dem PC verbunden und Putty gestartet. Dort wird die korrekte serielle Schnittstelle (bei mir /dev/ttyUSB=) und als „Connection type“ „Serial“ gewählt sowie eine Baud-Rate von 115200 („Speed“). In den Einstellungen Links wird unter „Connection => Serial“ „Flow Control“ auf „None“ gesetzt.
Nun wird der UART Wandler mit dem Router-Mainboard verbinden. Dabei ist unbedingt zu beachten, dass die Stecker für RX und TX vertauscht angeschlossen werden. Der TX-Anschluss des Wandlers wird mit dem RX-Port des Routers verbunden und umgekehrt. GND wird mit GND verbunden und VCC wird nicht benötigt.
Nun wird der Router eingeschaltet und die serielle Verbindung mit dem „Open“ Button in Putty gestartet. In der Konsole sollten jetzt Informationen zum Bootvorgang erscheinen.
Sobald die Zeile
Autobooting in 1 seconds
erschienen ist, bleibt weniger als eine Sekunde Zeit, um
tpl
in die Kommandozeile zu tippen und den Befehl mit ENTER abzuschicken. Wenn ihr eine Kommandozeile mit dem Präfix
ap135>
(oder ähnlich) vor euch habt, kann es weitergehen.
OpenWRT Firmware flashen
Gleich ist es geschafft – jetzt muss die Firmware nur noch über LAN vom PC heruntergeladen und geflashed werden. Gebt die folgenden Befehle in eure Router-Kommandozeile ein:
tftp 0x80060000 openwrt-ar71xx-generic-tl-wr1043nd-v2-squashfs-factory.bin erase 0x9f020000 +0x7c0000 cp.b 0x80060000 0x9f020000 0x7c0000 boot.m 0x9f020000
Nach dem letzten Kommando startet der Router neu und lädt die OpenWRT Firmware. Im Terminal könnt ihr den Bootvorgang nachverfolgen. Sobald sich dort nichts mehr bewegt, drückt ENTER, um die root-Kommandozeile von OpenWRT zu erreichen.
OpenWRT ist jetzt fertig installiert.
Setzt die Netzwerkeinstellungen eures PCs wieder so, dass er die IP-Adresse vom Router via DHCP zugeteilt bekommt. Startet den Router über die Konsole neu:
reboot
Über die IP-Adresse 192.168.1.1 erreicht ihr nun die LuCI Weboberfläche zur Konfiguration, wo ihr umgehend ein Passwort für die Routerkonfiguration festlegen solltet. Der erste Login funktioniert übrigens noch ohne Passwort. ;)
Quellen: http://www.dd-wrt.com/phpBB2/viewtopic.php?p=499750 | http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd#oem.installation.using.the.tftp.and.rs232.method
Guten Abend,
wie richte ich OpenWrt im Detail ein? Ich habe unter /etc/config/network
config interface ‚wan‘
option ifname ‚eth0‘
option proto ‚pppoe‘
option username ’name‘
option password ‚geheim‘
eingetragen aber erhalte immer die Fehlermeldung „Unable to complete PPPoE Discovery“. Ich habe einen Account bei Arcor und vor dem Router eine EasyBox hängen. Habe ich etwas in der Konfiguration übersehen? Muss ich eine weitere Datei einrichten? Wäre über Hilfe dankbar. Eine Seite mit einer Beispieldokumentation (deutsch) würde mir sehr weiterhelfen.
Danke
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Hi,
stellt deine EasyBox nicht schon eine Internetverbindung her? Wenn du deinen OpenWRT Router via LAN an die EasyBox hängst, brauchst du dich nicht nocheinmal via PPPoE einzuloggen. Oftmals ist das auch gar kein zweites Mal möglich.
LG Thomas
http://www.arcor.de/hilfe/files/pdf/arcor_starterbox_bedienungsanleitung3.pdf
Sorry – ich habe eine StarterBox. Deshalb kann es nicht gehen. Ich hatte nicht bedacht, dass ich in meinem alten Router ein Modem verbaut hatte und das neue Gerät nicht über diese Funktion verfügt… Ärgerlich – aber wenigstens habe ich mein Problem lösen können. Einfach das alte Modem aus dem Keller geholt, angeschlossen und nun funzt es. :)
Hey,
ich habe den TL-WR1043ND mit der Firmware DD-WRT v24-sp2 (06/23/14) – build 24461. Komischer Weise kann ich über das Webinterface nun keine andere Firmware mehr flashen.
Er sagt zwar immer, dass das flashen erfolgreich war, aber die Firmware ist danach noch genau die gleiche.
Ich wollte die OpenWRT flashen. Habt ihr eine Idee, woran das liegen kann?
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Das Problem hatte ich auf einem anderen Router auch. Hier hat es nur geholfen, die Firmware über den „Emergency Room-Modus“ des D-Link Routers zu flashen.
LG Thomas
Hallo,
ich habe alles nach Deiner Anleitung gemacht. Wenn ich tpl eingebe, passiert nichts! Woran kann das liegen? Vielleicht ist der mittlere Pin nicht richtig verlötet?
Gruß Maik
Thanks for you!
I fixed my router!
Der Router kostet 39€. Mal ehrlich, wer tut sich das an ? Allein das Kabel bei reichelt kostet knapp 18€ und dann der ganze Aufwand !
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Das tun sich Leute wie ich an, die nicht alles sofort wegwerfen, sondern nachsehen wollen, ob man es wieder zum Laufen bringt. Auf diese Weise habe ich Elektroschrott vermieden und dabei auch etwas gelernt.
LG Thomas
Danke für die tolle Anleitung – habe einen 1043-er vor der Verschrottung damit gerechnet. Der USB UART hat mich 7,99 EUR gekostet….also eine sehr lohnende Investition :-)
Vielen dank aus Holland!
Mit http://www.hobbyelectronica.nl/product/pl2303-usb-ttl-programmer-kabel/ habe ich es geschaft. (keine angst: 5V uber VCC arbeitet (3,3 auch))