Für ein Projekt brauchte ich auf einem TP-LINK WR710N unbedingt OpenVPN. Normalerweise sind die kleinen Router dafür gut geeignet. Leider habe ich die zweite Hardware-Revision V2 erwischt. Hauptunterschied zum Vorgänger ist der halbierte Flash. Somit hat man beim aktuellen OpenWRT Image Chaos Calmer 15.05 keine Chance, OpenVPN nachträglich zu installieren. Ein erster Versuch das Image eigenständig zu bauen, erzeugte leider einen Ziegelstein und der Router war nutzlos.
Also habe ich mir kurzer Hand einen UART-Adapter für USB mit CP2102 Chipsatz besorgt. Wichtig ist hierbei der Hinweis auf UART, denn ein RS232 Adapter funktioniert nicht. Die serielle Schnittstelle wird wie folgt gelötet:
Platine | Atheros AR9331 Pinout | UART-Adapter PIN |
TP_IN | TXD | RXD |
TP_OUT | RXD | TXD |
GND | GND | GND |
Die Anschlüsse TP_IN und TP_OUT sind auf dem Bild gut zu erkennen. GND findet man unterhalb der Antenne. Alternativ kann man auch die Erdung beim USB-Port verwenden. 3,3V oder 5V am UART-Adapter werden nicht benötigt. Der AR9331 liefert bereits die nötige Spannung und verträgt keine 5V.
Anschließend kann man mit einem Terminal-Programm seiner Wahl die serielle Konsole starten. Wichtig ist die Baud-Rate von 115200 bei 8N1. Hard- und Software Flow Control sind deaktiviert.
screen /dev/ttyUSB0 115200,-parenb,-cstopb,cs8
Anschließend direkt nach dem Einschalten den Bootvorgang mit “tpl” unterbrechen. Der Bootvorgang sieht zunächst so aus:
U-Boot 1.1.4 (Jan 14 2014 - 15:03:18) AP121 (ar9330) U-boot DRAM: 32 MB led turning on for 1s... id read 0x100000ff flash size 4194304, sector count = 64 Flash: 4 MB Using default environment In: serial Out: serial Err: serial Net: ag7240_enet_initialize... No valid address in Flash. Using fixed address No valid address in Flash. Using fixed address : cfg1 0x5 cfg2 0x7114 eth0: 00:03:7f:09:0b:ad ag7240_phy_setup eth0 up : cfg1 0xf cfg2 0x7214 eth1: 00:03:7f:09:0b:ad athrs26_reg_init_lan ATHRS26: resetting s26 ATHRS26: s26 reset done ag7240_phy_setup eth1 up eth0, eth1 Autobooting in 1 seconds
Für die Wiederherstellung wird ein TFTP Server benötigt. Dort wird das Image “openwrt-ar71xx-generic-tl-wr710n-v2-squashfs-factory.bin” abgelegt. Der TFTP-Server muss über die IP 192.168.1.100 erreichbar sein. Der Boot-Loader verwendet die IP 192.168.1.111.
Der uboot-Bootloader ist an der Eingabezeile mit “hornet>” erkennbar. Für die V2 muss der Speicherbereich angepasst werden, in den das Image geschrieben wird. Bei 4MB Modellen muss das Image ab 0x3c0000 geschrieben werden. Zusammenfassend werden diese Befehle verwendet:
tftpboot 0x81000000 openwrt-ar71xx-generic-tl-wr710n-v2-squashfs-factory.bin erase 0x9f020000 +0x3c0000 cp.b 0x81000000 0x9f020000 0x3c0000 bootm 9f020000
Und im uboot sieht es dann so aus:
hornet> tftpboot 0x81000000 openwrt-ar71xx-generic-tl-wr710n-v2-squashfs-factory.bin dup 1 speed 1000 Using eth1 device TFTP from server 192.168.1.100; our IP address is 192.168.1.111 Filename 'openwrt-ar71xx-generic-tl-wr710n-v2-squashfs-factory.bin'. Load address: 0x81000000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ###################################################### done Bytes transferred = 3932160 (3c0000 hex) hornet> erase 0x9f020000 +0x3c0000 First 0x2 last 0x3d sector size 0x10000 61 Erased 60 sectors hornet> cp.b 0x81000000 0x9f020000 0x3c0000 Copy to Flash... write addr: 9f020000 done hornet> bootm 9f020000
Mit dem Befehl “bootm” wird das System gestartet und nach kurzer Zeit sollte alles wieder in Ordnung sein.