Tag Archive: Firmware

Installing Freifunk firmware on newer Archer C7

When installing some new TP-Link Archer C7v2 from the Citizens’ budget, we found out that the pre-installed firmware (3.15.1 Build 160616 Rel.44182n) does not allow unknown updates.

The upgrade is denied with the following meaningless error message:

Error code: 18005
Upgrade unsuccessfully because the version of the upgraded file was incorrect. Please check the file name.

All this is because of FCC regulations, which prevent changing the transmission power-levels. Then TP-Link felt compelled not to allow any other firmware. Also a downgrade to a previous firmware version is no longer possible.

There are some instructions on the Internet which, for example, allow a downgrade of the software via a separate DD-WRT firmware, and then upgrade to the Freifunk or OpenWRT software.

What finally helped us is the Failsafe Mode, in conjunction with a TFTP server. This requires some preparations.

First, a TFTP server must be installed. On Linux, the tftpd-hpa package is just fine. For the Ubuntu which is used here, we changed the file /etc/default/tftpd-hpa to the extent that TFTP_OPTIONS now contains the following options: “–secure –verbose –verbose“. This shows (after a restart of the TFTP server) in the log which file was retrieved.

In addition, the computer must have the IP address 192.168.0.66. How this is done depends on the operating system.

The Ubuntu used here also runs “systemd” – and this shuts down the interface, if there is no physical connection on the cable (because for example the router just booted). This is crap because when the router is reset, the interface is down and then comes up again at some point when the router starts its interface. Unfortunately, the bootup and configuration of the interface takes some time, and this may overlap with getting the boot image from the TFTP server. The solution would be to discard systemd – but as a workaround it is enough to connect the own computer and the router to a switch, instead of connecting both directly with a cable.

When all this is done, the boot image (the Freifunk factory image) for the Archer C2 must be deployed to the TFTP server directory. This is “/var/lib/tftpboot” and the file name must be “ArcherC7v2_tp_recovery.bin“.

Checklist:

* TFTP server is running
* The IP address of the computer is 192.168.0.66
* Computer and router are connected to a switch
* Boot image with the correct name in the TFTP server directory
* Watch logfile: tail -n 50 -f /var/log/syslog

Now turn the router on and wait until the second LED from the left (looks like a star) flashes. Then press the reset button for approx. 15-20 seconds until the following message appears in the log:

Apr 9 21:59:54 freifunk in.tftpd [26987]: RRQ from 192.168.0.86 filename ArcherC7v2_tp_recovery.bin

The router has received the new image from the TFTP server and will install it now. This takes a few minutes. After that change the IP address of your own computer back to automatic assignment, unplug the network cable for a few seconds (so that systemd will recognize the change) and then proceed normally with the configuration of the Freifunk router according to your community’s instructions.

Installieren von Freifunk Firmware auf neueren Archer C7

Beim Installieren einiger neuer TP-Link Archer C7v2 aus dem Bürgerhaushalt durften wir feststellen, dass die vorinstallierte Firmware (3.15.1 Build 160616 Rel.44182n) kein Einspielen fremder Updates mehr zulässt.

Das Upgrade wird mit folgender nichtssagenden Fehlermeldung verweitert:

Error code: 18005
Upgrade unsuccessfully because the version of the upgraded file was incorrect. Please check the file name.

Das ganze ist zurückzuführen auf Anweisungen der FCC, welche das Verändern der Sendeleistung verhindern soll. Daraufhin sah sich TP-Link gezwungen, keine andere andere Firmware mehr zuzulassen. Auch ein Downgrade auf eine vorherige Firmware Version ist nicht mehr möglich.

Es gibt einige Anleitungen im Netz, welche z. B. über den Umweg einer gesonderten DD-WRT Firmware ein Downgrade der Software und dann ein Einspielen der Freifunk oder OpenWRT Software ermöglichen.

Was bei uns letztendlich geholfen hat ist der Failsafe Mode, im Zusammenspiel mit einem TFTP-Server. Dazu sind einige Vorbereitungen notwendig.

Zuerst einmal muss ein TFTP-Server installiert werden. Unter Linux tut es tftpd-hpa. Beim hier verwendeten Ubuntu haben wir die Datei /etc/default/tftpd-hpa insoweit geändert, dass TFTP_OPTIONS nun folgende Optionen enthält: “–secure –verbose –verbose“. Das zeigt (nach einem Neustart des TFTP-Servers) im Log an welche Datei abgerufen wurde.

Außerdem muss der Rechner mit der IP-Adresse 192.168.0.66 versehen werden. Wie das erfolgt ist jeweils vom Betriebssystem abhängig.

Das hier verwendete Ubuntu hat desweiteren “systemd” laufen – und das fährt ein Interface runter, wenn auf dem Kabel keine Verbindung besteht (weil zum Beispiel der Router gerade bootet). Das ist Schrott, weil beim Reset des Routers das Interface herunter und dann irgendwann wieder hochgefahren wird, wenn der Router sein Interface wieder hoch fährt. Leider dauert das Hochfahren und Konfigurieren des Interfaces einige Zeit, und das kann sich mit dem Abrufen des Boot-Images vom TFTP-Server überschneiden. Die Lösung wäre ja, systemd wegzuwerfen – aber als Workaround reicht es auch, den eigenen Rechner und den Router an einen Switch anzuschließen, statt beide direkt mit einem Kabel zu verbinden.

Wenn das alles erledigt ist, muss das Boot-Image (das Freifunk Factory Image) für den Archer C2 noch im Verzeichnis für den TFTP-Server bereitgestellt werden. Das ist hier “/var/lib/tftpboot“, und die Datei muss “ArcherC7v2_tp_recovery.bin” heißen.

Checkliste:

* TFTP-Server läuft
* IP-Adresse des Rechners ist 192.168.0.66
* Rechner und Router sind mit einem Switch verbunden
* Boot-Image mit richtigem Namen im TFTP-Server Verzeichnis
* Logfile beobachten: tail -n 50 -f /var/log/syslog

Jetzt den Router anschalten und warten bis die zweite LED von links (sieht wie ein Stern aus) blinkt. Dann die Reset-Taste für ca. 15-20 Sekunden gedrückt halten, bis folgende Meldung im Log erscheint:

Apr 9 21:59:54 freifunk in.tftpd[26987]: RRQ from 192.168.0.86 filename ArcherC7v2_tp_recovery.bin

Der Router hat sich das neue Image vom TFTP-Server gezogen und wird das jetzt installieren. Dauert ein paar Minuten. Danach die IP-Adresse des eigenen Rechners wieder auf automatische Vergabe umstellen, das Netzwerkkabel für ein paar Sekunden ausstecken (damit systemd das mitbekommt) und dann ganz normal mit der Konfiguration des Freifunk Routers nach Anweisung eurer Community fortfahren.

Archer C7 auf TP-Link Firmware zurücksetzen

Die bei uns eingesetzten Archer TP-Link Router werden mit der Freifunk Firmware bespielt. Dabei kann es schon mal passieren dass der Flash-Vorgang nicht funktioniert: als Ergebnis hat man einen Router der nicht mehr ansprechbar ist. Wäre natürlich schade, wenn man den Router wegwerfen muss, hier ist die Anleitung wie man die originale Firmware wiederherstellen kann.

Zuerst den Router vom Stromnetz trennen, einige Sekunden warten und dann wieder verbinden. Sobald die zweite LED von links (sieht aus wie ein Stern) anfängt zu blinken, drückt man den Reset-Knopf und löst damit eine Unterbrechung des Boot-Vorgangs aus. Irgendwann blinkt die LED doppelt so schnell und signalisiert damit, dass der Router im Failsafe-Modus ist.

Der Router hat nun die IP-Adresse 192.168.1.1. Allerdings stellt der Router im Failsafe Modus keine automatische Konfiguration für angeschlossene Geräte (DHCP) bereit, das muss man selbst übernehmen. Dazu kann man eine beliebige Adresse aus dem Bereich zwischen 192.168.1.2 und 192.168.1.254 wählen, sowie 255.255.255.0 (/24) als Netzwerkmaske. Wie genau man die IP auf seinem eigenen Rechner konfiguriert, wird hier nicht beschrieben, da dieser Vorgang von Betriebssystem zu Betriebssystem verschieden ist.

 
Nach der IP-Configuration kann man testweise schauen ob der Router erreichbar ist. Dazu sollte die LAN-Buchse mit dem Netzwerkkabel einen Link anzeigen (manchmal ist eine LED an der LAN-Buchse verbaut, die anzeigt ob ein physikalischer Link vorhanden ist). Außerdem wird das Betriebssystem des eigenen Rechners mitteilen ob der Netzwerkport verbunden ist. Ein Ping gibt dann letzte Gewissheit:

ping 192.168.1.1

Steht das Netzwerk, kann man den Router über ssh ansprechen:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@192.168.1.1

Ein Passwort ist nicht notwendig.

Links zur originalen Firmware gibt es auf der TP-Link Webseite. Aus der heruntergeladenen Datei muss noch der Bootloader herausgeschnitten werden:

dd if=”ArcherC7v1_en_3_15_3_up_boot(150511).bin” of=tplink.bin skip=257 bs=512

Mittels scp kopiert man die tplink.bin Datei auf den Router.

scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null tplink.bin root@192.168.1.1:/tmp/

Nun nur noch das Upgrade des Routers mit dem neuen Image starten:

sysupgrade /tmp/tplink.bin

Nach einem Neustart des Routers sollte die originale Firmware mit Defaulteinstellungen vorhanden sein.