Troisdorf-Unbricking

Aus Freifunk Rheinland e.V.
Zur Navigation springen Zur Suche springen

Bemerkungen

Obwohl das Flashen von Routern mit der Freifunk-Firmware einfach ist, kann es vorkommen, daß das Flashen schiefläuft. Das Ergebnis ist dann ein Router ohne Firmware, auf den ein Zugriff über WLAN oder Ethernet nicht mehr möglich ist ("gebrickter" Router). Allerdings ist häufig der Bootloader [uboot] noch funktionstüchtig. Über eine serielle Schnittstelle kann man auf die Konsole des uboot zugreifen und eine Firmware auf das Gerät nachladen ("debricken").

Um Zugriff auf die serielle Schnittstelle zu bekommen, muß das Routergehäuse geöffnet werden. Außerdem muß eine Stiftleiste auf die Platine des Routers gelötet werden. Über einen Pegelwandler kann dann die serielle Schnittstelle des Routers mit einem Computer verbunden werden. Dann kann mit Hilfe eines Terminalprogramms eine Verbindung mit der Konsole des uboot hergestellt werden.

Über die Konsole von uboot kann dem Router eine IP-Adresse zugewiesen werden. Außerdem wird eine IP-Adresse eines Computers angegeben. Auf diesem Computer muß man einen [tftp]-Server aktivieren, über welchem dem Router die passenden Firmware-Datei angeboten wird.

Dieses Howto beschreibt das Unbricken des Routers TP-Link TP-WR841n(d), Version 9. Unterschiede beim Debricken anderer TP-Link Router werden ergänzt.

Benötigte Hilfsmittel

Für das Debricken eines Routers werden benötigt:

  • Kreuzschraubendreher zum Öffnen des Routergehäuses
  • Stiftleiste Rastermaß 2,54mm, 1-reihig, 4-polig
  • Lötkolben und Lötzinn
  • Ein Netzwerkkabel zur Verbindung des Routers mit dem Computer via Ethernet
  • Ein UART-USB-Konverter als Pegelwandler und Seriell-USB-Konverter. Sehr günstige Konverter auf Basis des Chips CP210x gibt es z.B. bei [eBay]. Außerdem wird ein passendes Kabel zwischen Konverter und Router benötigt (siehe unten).

Anlöten der Stiftleiste auf die Platine des Routers

Nach dem Öffnen des Routers ist die serielle Schnittstelle des Routers zugänglich. Es handelt sich um eine viepolige Reihe von Lötpads. Beim TP-WR841 v9 ist der Anschluß mit J3 bezeichnet. Bei diesem und vielen anderen Routern von TP-Link ist die Belegung der Schnittstelle wie folgt (dicken weißen Balken an einem Ende des Anschlusses beachten):

UART-Anschluß des TP-Link WR841n(d) v9 und einigen anderen TP-Link Routern

Auf die Oberseite der Routerplatine (Bestückungsseite) wird nun die 4-polige Stiftleiste eingelötet. Das Ergebnis sieht dann wie im folgenden Bild aus:

Datei:Tpl-stiftleiste.png
UART-Anschluß des TP-Link WR841n(d) v9 mit eingelöteter Stiftleiste

Vorbereitung des UART-USB-Konverters

Der UART-USB-Konverter dient der Verbindung des Routers über dessen [serielle UART-Schnittstelle] mit einem Computer. Günstige Konverter auf Basis des Chips [CP210x] finden sich auf eBay.

UART-USB-Adapter auf Basis des Chips CP210x

Das obige Bild zeigt einen Konverter auf Basis eines CP210x, an welchem ein passendes Adapter-Kabel aufgesteckt ist. Das Adapterkabel verbindet RX, TX und GND des seriellen Anschlusses des Routers mit dem Konverter. Hierbei ist zu beachten, daß RX des Konverters mit TX des Routers und TX des Konverters mit RX des Routers verbunden werden muß (Kreuzung). VCC wird nicht verbunden!

Die Schematik des Adapterkabels ist in folgender Abbildung dargestellt.

Adapterkabel zwischen Router und Konverter (schematisch). Bitte die konkrete Reihenfolge der Pins des Adapters beachten!

Viele der UART-USB-Adapter haben eine Stiftleiste. Es bietet sich also an, das Adapterkabel an beiden Enden mit passenden Buchsenleisten vorzusehen.

Verbindung des Routers mit dem Computer

Der Router wird auf zweierlei Arten mit dem Computer verbunden:

  • Mittels des UART-USB-Konverters zur Verbindung mit der Konsole des Bootloaders uboot
  • Mittels Netzwerkkabel zur Übertragung der Firmware-Datei auf den Router via tftp-Protokoll.

UART-USB-Konverter

Ggf. ist für den UART-USB-Konverter ein passender Treiber für das jeweilige Betriebssystem des Computers zu installieren.

Den Router über das Adapter-Kabel und den Konverter mit dem USB-Port des Computers verbinden. Den Router zunächst nicht einschalten.

Ethernet-Kabel

Das Ethernet-Kabel wird am Router an einem der gelben Netzwerk-Ports angeschlossen sowie am Computer. Anschließend wird der Computer auf eine feste IP-Adresse konfiguriert.

TP-Link Router mit einem Computer verbunden.

Linux

Netzwerkeinstellungen und tftp-Server

Zunächst werden alle IP-Adressen des Ethernet-Devices des Computers zurückgesetzt und eine statische IP-Adresse gesetzt. Hierzu benötigt man den Device-Namen des Ethernet-Devices (z.B. eth0 oder enp0s25). Der Name läßt sich über das Kommando

# ifconfig

ermitteln. Für das Device (hier: eth0) werden dann zunächst alle IP-Adressen gelöscht und anschließend eine feste IP-Adresse (hier: 192.168.3.2/24) gesetzt:

# ip addr flush dev eth0
# ip addr add 192.168.3.2/24 dev eth0

Die korrekte Einstellung kann mit

# ifconfig

überprüft werden.

Für den tftp-Client und -Server empfiehlt sich das Paket atftp.

Jetzt wird ein Verzeichnis für den tftp-Server angelegt:

# mkdir /var/tftpd
# chown 777 /var/tftpd

Nun muß eine passende Firmware für den Router heruntergeladen werden - am besten gleich die passende [Freifunk-Firmware]. Bitte die genaue Angabe der Modellversion des Routers beachten und die Factory-Version der Firmware verwenden! Die Firmware-datei kann direkt in das tftp-Verzeichnis heruntergeladen werden und sollte aus praktischen Gründen einen kurzen Dateinamen haben (hier: firmware.bin):

# cd /var/tftpd
# wget <URL Firmware> -O firmware.bin

Jetzt muß der tftp-Server gestartet werden:

# atftpd --daemon /var/tftpd/

Ob der tftp-Server ordnungsgemäß funktioniert, kann man testen, indem man einen tftp-Client auf dem Computer startet und versucht, die Firmware-Datei herunterzuladen:

$ atftp 192.168.3.2
tftp> get firmware.bin
tftp>

Ggf. ist in der Firewall des Computers der UDP-Port 69 für den tftp-Server zu öffnen.

UART-USB-Konverter

Unter Linux kann das ordnungsgemäße Erkennen des Konverters überprüft werden, in dem man nach dem Einstecken in einen USB-Steckplatz in einem Terminalfenster den folgenden Befehl eingibt:

$ dmesg

Üblicherweise wird der Konverter als Schnittstelle /dev/ttyUSB0 erkannt. Es ist sicherzustellen, daß der jeweilige Benutzer Zugriff auf diese Schnittstelle hat.

Nun wird ein geeignetes Terminalprogramm benötigt. In einem grafischen System empfiehlt sich [gtkTerm], in einem textbasierten System [minicom].

gtkTerm

In gtkTerm sind die Verbindungsparameter unter Configuration --> Port wie folgt einzustellen:

  • Port: /dev/ttyUSB0 (siehe Ausgabe von dmesg)
  • Baud rate: 115200
  • Parity: none
  • Bits: 8
  • Stopbits: 1
  • Flow control: none
Datei:Gtkterm.jpg
Einstellungen in gtkTerm

Nun den Router anschalten. Es sollten lesbare Zeichen im Terminalprogramm erscheinen (Konsole von uboot).

Wenn nun die Meldung

Autobooting in 1 seconds

erscheint, schnell die Zeichen

tpl

eingeben, um den Bootvorgang zu unterbrechen. Nun setzen wir einige Parameter:

> setenv ipaddr 192.168.3.1
> setenv serverip 192.168.3.2

Die Einstellungen können mit

> printenv

überprüft und ggf. erneut gesetzt werden. Nun holen wir das Firmware-File vom tftp-Server:

> tftpboot 0x80000000 firmware.bin

Und jetzt schreiben wir das Image in den Flash-Speicher:

> erase 0x9f020000 +0x3c0000
...
> cp.b 0x80000000 0x9f020000 0x3c0000
> bootm 0x9f020000

Nach Eingabe des letzten Befehls bootet der Router (hoffentlich) in den Setup-Modus der Freifunk-Firmware.

Die statische IP-Adresse am Ethernet-Port des Computers kann nun entfernt werden

# ip addr flush dev eth0

und die Adresse wie gewohnt vom Router bezogen werden. Falls dies ordnungsgemäß funktioniert, kann nun auch der Konverter samt Adapter-Kabel vom Router entfernt werden.

Windows

Unter Windows ist das Vorgehen prinzipiell analog wie unter Linux. Im Gerätemanager ist zu klären, unter welcher COM-Schnittstelle der Konverter verfügbar ist. Als Terminalprogramm empfiehlt sich [PuTTY].

Tipps

  • Damit ein Benutzer in Linux Zugriff auf eine serielle Schnitstelle hat, muß dieser abhängig von der eingesetzten Linux-Distribution Mitglied in den Gruppen uucp, dialout bzw. tty sein.
  • Das ordnungsgemäße Funktionieren von Terminalprogramm und Konverter kann man dadurch überprüfen, daß man RX und TX des Konverters mittels eines Drahtstücks kurzschließt (Loopback). Wenn man nun beliebige Zeichen in das Terminalprogramm eingibt, so erscheinen diese wiederum im Terminalprogramm. Ist im Terminalprogramm "lokales Echo" aktiviert, erscheinen die Zeichen doppelt.