Tftp

Aus Freifunk Dresden - Anwender-Wiki
Zur Navigation springen Zur Suche springen

Recovery mit TFTP und Bootloader

Wenn der Router aus irgend einem Grund nicht mehr über die Konfigurationsseite des Routers und auch nicht über den Failsafe-Mode (via sysupgrade) die firmware aktzeptiert, so kann versucht werden, die Firmware via des Bootloaders zu laden. Die meisten Router können in einen Zustand gebracht werden, bei dem sich der Router entweder als tftp-Client oder tftp-Server verhält. Dies ist abhänig vom Gerät und kann auf openwrt.org eingesehen werden. Wenn der Router in einem der beiden Modi läuft, so besitzen diese eine IP Adresse (oder der Server muss eine bestimmte IP Adresse besitzen), die von der gewohnten IP abweicht. Beide Geräte, Router und Linux-Rechner müssen im gleichen Subnetz liegen.

Hinweis: Cross-Over-LAN Kabel
Wenn ein normales Patchkabel nicht funktioniert, so konnte der Router im TFTP Mode die Leitungen nicht automatisch vertauschen. In diesem Fall muss ein Cross-Over-LAN Kabel verwendet werden.

Router verhält sich als tftp-Client (Beispiel TP-Link WR841)

Router verhält sich als tftp Client: Dieses Beispiel gilt NUR für den TP-Link TL-WR841 V8,V9,V10,V11. (openwrt.org:tftp_recovery_via_bootloader_for_v8_v9_v10_v11)

Zuerst muss auf dem Linux-Rechner der tftp-Server installiert sein.

apt-get install tftpd-hpa

Der Linux-Recher muss die IP 192.168.0.66 besitzen. Der Router selber nimmt sich die 192.168.0.86

ip addr add 192.168.0.66/24 dev eth0

Normalerweise wird bei der Installation des tftp-Servers (tftpd-hpa) ein Verzeichnis angelegt, in dem die Firmware mit einem speziellen Namen kopiert werden muss. Siehe dazu openwrt.org:tftp_recovery_via_bootloader_for_v8_v9_v10_v11. Es kann vorkommen, dass der Server zwar läuft, aber nicht mehr richtig arbeitet. In diesem Fall muss man diesen Server beenden und kann diesen manuell im Vordergrund aufrufen.

killall -9 in.tftpd
in.tftpd -lL --secure --address 192.168.0.66:69 /var/lib/tftpboot
                                          

Die Firmware wird nach /var/lib/tftpboot kopiert und dabei umbenannt.

cp openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-factory.bin /var/lib/tftpboot/wr841nv8_tp_recovery.bin

Nun muss der Router in den Update-Mode versetzt werden. Dazu den Reset-Knopf drücken, halten und anschließend den Router einschalten. Der Reset-Knopf kann nach einigen Sekunden losgelassen werden.

Mit tcpdump kann man sich die Client-Anfrage an den Server (Linux-Rechner) anzeigen lassen und ebenfalls den Transfer der Firmware in den Router beobachten.

> tcpdump -tni any host 192.168.0.66
IP 192.168.0.86.3792 > 192.168.0.66.69:  43 RRQ "wr841nv9_tp_recovery.bin" octet timeout 2

Der Router startet sich selber mehrfach neu, bitte abwarten bis die Weboberfläche via http://192.168.1.1/ verfügbar ist.

Router verhält sich als tftp-Server (Beispiel Ubiquiti NanoStation M2 / Loco M2 / Ubnt UniFi-AP)

Es gibt Router die den umgekehrten Weg gehen. Diese arbeiten dann als ftp-Server, man muss dann mit einem Client-Programm die Firmware aufspielen. Hierfür braucht man dass entsprechende Client-Programm.

apt-get install tftp-hpa

Der Linux-Rechner muss eine IP aus dem Subnetz 192.168.1.x besitzen (aber nicht 192.168.1.20).

ip addr add 192.168.1.31/24 dev eth0  # oder ifconfig eth0 192.168.1.254

Jetzt muss der Router in den Zustand gebracht werden, damit dieser als tftp server arbeitet und die Firmware flashen kann.

  1. Router vom Strom nehmen.
  2. kleinen Reset-Knopf drücken und halten. Dieser befindet sich hinter der Abdeckung zum Netzwerkanschluss.
  3. Router einschalten und Reset-Knopf noch mindestens 25 s halten bis die LEDs zunächst 3/4/5 gleichzeitig blinken und anschließend 3/5 (rot und grün gleichzeitig) und 4/6 (orange und grün gleichzeitig) abwechselnd blinken. Nun kann der Reset-Knopf wieder losgelassen werden.

Die Firmware kann jeden beliebigen Namen haben, aber es ist einfacher diesen einfach zu halten. Dieser Name muss dann im zweiten Befehl verwendet werden.

cp  openwrt-ar71xx-generic-ubnt-nano-m-squashfs-factory.bin firmware.bin
echo -e "binary\nrexmt 1\ntimeout 300\ntrace\nput firmware.bin\n" | tftp 192.168.1.20

Der Router braucht einige Minuten, um die Firmware zu speichern, er startet anschließend selber mehrfach neu. Bitte warten bis die Weboberfläche via http://192.168.1.1/ verfügbar ist.