TP-Link WR841ND/Flash und RAM erweitern bis v12
Der TP-Link WR841ND hat bis auf die Version 13 nur 4MB FlashROM und 32MB RAM, was für einige Freifunk-Communities zu wenig ist und in neueren OpenWrt-Versionen nicht mehr unterstützt wird.
Mit Lötkenntnissen und wenigen Werkzeugen ist es aber möglich, die Versionen bis v12.x auf 16MB Flash und 64MB RAM aufzurüsten.
Vorgehen
Der 8-Pin-SPI-Flash-Chip wird gegen z.B. einen Winbond W25Q128 (16MB), der 66-Pin-RAM-Chip gegen einen SK Hynix HY5DU121622DTP-D43 ersetzt. Beide Chips sind für Cent-Beträge zu bekommen.
Beim Flash-Chip ist zu beachten, dass bestimmte Infos (die Atheros Radio Test/ART-Partition) aus dem alten Chip ausgelesen und in den neuen Chip übertragen werden müssen. Das kann u.a. mit einem Kabel und einem Raspberry Pi gemacht werden (ggf. einen 4,7µF-Kondensator nahe des Chips in die Stromversorgung schalten), mit einem C232HM-DDHSL-0-Kabel (Infos), anderer Programmier-Hardware, die vom Flashrom-Tool unterstützt wird, oder auch den günstig erhältlichen CH341A-basierten Programmierern und ch341prog. Der Chip kann recht bequem noch im eingelöteten Zustand mit einem SOIC-8-Clip verbunden werden.
Das Entlöten des RAM-Chips funktioniert nur gut mit einem Heißluft-Lötkolben. Ein günstiger guter Vertreter ist z.B. der Yinhua 968DA. Zum (Ent-)Löten empfehlen sich eine 0,1mm-Lötspitze sowie eine 1mm-45-Grad-Lötspitze. Auch 2mm-Entlötlitze und No-Clean-Flussmittel sollten vorhanden sein.
ART auslesen
Die ART-Daten können auf verschiedene Weise ausgelesen werden. Es empfiehlt sich, ART vor dem Auslöten des Flash-Chips auszulesen, falls der Chip das Auslöten nicht übersteht.
- Per SPI/Flashrom-Tool, angeschlossen per SIOC-8-Clip
flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -r flashdump.bin
(spidev entsprechend setzen), mehrmals ausführen und überprüfen, ob die ausgelesenen Dateien identisch sind.dd ibs=1k skip=4032 if=flashdump.bin of=artdump.bin
zum Extrahieren der ART-Daten, die sich in den letzten 64k des ROMs befinden.
- Per SSH auf der Root-Konsole des Routers
dd if=/dev/mtd4 of=/tmp/artdump.bin
, kopieren auf den PC dann per SCP.
Neues ROM zusammenstellen
- Neuen passenden Bootloader (U-Boot, GitHub) herunterladen:
wget -O uboot.bin http://derowe.com/u-boot/stable/tp-link-tl-wr841n-vVERSION.bin
- Passende Firmware herunterladen; z.B. ein zur Router-Version passendes OpenWrt-Image in der
sysupgrade
-Variante. - Leere neue ROM-Datei (16MB) erstellen:
dd if=/dev/zero ibs=1k count=16384 | tr "\000" "\377" > out.bin
- ART in die neue ROM-Datei hineinkopieren:
dd conv=notrunc obs=1k seek=16320 if=artdump.bin of=out.bin
- Bootloader einfügen:
dd conv=notrunc if=uboot.bin of=out.bin
- Firmware einfügen:
dd conv=notrunc obs=1k seek=128 if=openwrt.bin of=out.bin
- MAC-Adresse (siehe Aufdruck des Routers) einfügen:
printf "\xaa\xbb\xcc\xdd\xee\xff" | dd conv=notrunc bs=1 seek=130048 count=6 of=out.bin
- Versionsnummer des Routers einfügen:
printf '\x08\x41\x00\x<VERSION>\x00\x00\x00\x01' | dd conv=notrunc bs=1 seek=130304 count=8 of=out.bin
mitVERSION
z.B.09
für v9.x bzw.10
für v10.x.
Neues ROM flashen
Den neuen Flash-Chip (bei ausgeschalteten Geräten) verbinden und per flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -w out.bin
(spidev entsprechend setzen) programmieren.
Auslöten der alten/Einlöten der neuen Chips
Im Forum gibt es ein Video dazu. Der Lötkolben und der Heißluftlötkolben sollten auf ca. 350°C eingestellt sein.
Weitere Infos
- Thread TP-Link WR841N: RAM und Flash aufrüsten auf forum.freifunk.net
- Frei zugänglicher c't-Artikel "Organspende - TP-Link WR841N: RAM und Flash aufrüsten". Achtung: Der Befehl zum Setzen der MAC-Adresse dort ist falsch (Errata).