Serielle schnittstelle
Notizen zur Wiederherstellung per Serieller Schnittstelle
<WRAP center important> Die Treiber der Seriellen Kabels sind u. U. fehlerhaft und es kann sich sowohl der COM-Port als auch der ganze PC aufhängen. Empfehlung: Alles speichern, Backup machen oder Bastel-PC benutzen.</WRAP>
Solange der Bootloader eines Geräts noch fehlerfrei geladen wird, kann die Firmware eines TP-Link-Routers relativ einfach über einen TFTP-Server (lokal oder im Netz) wiederhergestellt werden. Normalerweise reicht es dazu aus, beim Router den Reset-Taster beim Booten gedrückt zu halten. Funktioniert das nicht per Taster, so kann man sich per USB TTL-Adapter und putty-Client die Konsole anzeigen lassen und ggf. manuell das Update starten.
Eine deutsche Anleitung am Beispiel des WR841ND gibt es z. B. [[1]]
<WRAP center important>Sollte der Bootloader selbst fehlerhaft sein, so muss der Flash-Speicher rausgelötet und neu bespielt werden. Das ist wesentlich komplizierter, als der bloße Zugriff auf die Serielle Schnittstelle. Eine Anleitung dafür gibt es z. B. hier: https://wlan-si.net/en/blog/2013/01/07/writing-u-boot-directly-to-tp-link-wr741nd-router-flash/</WRAP>
Hängt das TP-Link-Gerät am seriellen Kabel, kann per Putty ganz einfach auf die Konsole zugegriffen werden. Beim Einschalten sieht man den Bootloader und muss vor dem Starten des Kernels "tlp" ins Putty-Fenster tippen. Dann bleibt das Gerät mit einem "hb>"-Prompt und folgenden Ausgaben stehen:
U-Boot 1.1.4 (Build from LSDK-9.5.3.16 at Oct 13 2014 - 17:01:20) ap143 - Honey Bee 1.1 DRAM: 32 MB Flash Manuf Id 0xc2, DeviceId0 0x20, DeviceId1 0x16 Flash: 4 MB Using default environment In: serial Out: serial Err: serial Net: ath_gmac_enet_initialize... ath_gmac_enet_initialize: reset mask:0xc02200 Scorpion ---->S27 PHY* S27 reg init GMAC: cfg1 0x800c0000 cfg2 0x7114 eth0: ba:be:fa:ce:08:41 athrs27_phy_setup ATHR_PHY_CONTROL 4:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 4:0x10 eth0 up Honey Bee ----> MAC 1 S27 PHY* S27 reg init ATHRS27: resetting s27 ATHRS27: s27 reset done GMAC: cfg1 0x800c0000 cfg2 0x7214 eth1: ba:be:fa:ce:08:41 athrs27_phy_setup ATHR_PHY_CONTROL 0:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 0:0x10 athrs27_phy_setup ATHR_PHY_CONTROL 1:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 1:0x10 athrs27_phy_setup ATHR_PHY_CONTROL 2:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 2:0x10 athrs27_phy_setup ATHR_PHY_CONTROL 3:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 3:0x10 eth1 up eth0, eth1 Setting 0x181162c0 to 0x5cb9a100 is_auto_upload_firmware=0 Autobooting in 1 seconds hb>
Hier sind folgende Befehle verfügbar:
hb> help ? - alias for 'help' boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootm - boot application image from memory cp - memory copy erase - erase FLASH memory help - print online help md - memory display mm - memory modify (auto-incrementing) mtest - simple RAM test mw - memory write (fill) nm - memory modify (constant address) ping - send ICMP ECHO_REQUEST to network host printenv- print environment variables progmac - Set ethernet MAC addresses reset - Perform RESET of the CPU run - run commands in an environment variable setenv - set environment variables tftpboot- boot image via network using TFTP protocol version - print monitor version
Hält man beim Einschalten den Reset-Taster gedrückt, macht der Router folgendes:
U-Boot 1.1.4 (Build from LSDK-9.5.3.16 at Oct 13 2014 - 17:01:20) ap143 - Honey Bee 1.1 DRAM: 32 MB Flash Manuf Id 0xc2, DeviceId0 0x20, DeviceId1 0x16 Flash: 4 MB Using default environment In: serial Out: serial Err: serial Net: ath_gmac_enet_initialize... ath_gmac_enet_initialize: reset mask:0xc02200 Scorpion ---->S27 PHY* S27 reg init GMAC: cfg1 0x800c0000 cfg2 0x7114 eth0: ba:be:fa:ce:08:41 athrs27_phy_setup ATHR_PHY_CONTROL 4:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 4:0x10 eth0 up Honey Bee ----> MAC 1 S27 PHY* S27 reg init ATHRS27: resetting s27 ATHRS27: s27 reset done GMAC: cfg1 0x800c0000 cfg2 0x7214 eth1: ba:be:fa:ce:08:41 athrs27_phy_setup ATHR_PHY_CONTROL 0:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 0:0x10 athrs27_phy_setup ATHR_PHY_CONTROL 1:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 1:0x10 athrs27_phy_setup ATHR_PHY_CONTROL 2:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 2:0x10 athrs27_phy_setup ATHR_PHY_CONTROL 3:0x1000 athrs27_phy_setup ATHR_PHY_SPEC_STAUS 3:0x10 eth1 up eth0, eth1 Setting 0x181162c0 to 0x5cb9a100 is_auto_upload_firmware=1 eth1 link down eth0 link down Using eth1 device TFTP from server 192.168.0.66; our IP address is 192.168.0.86 Filename 'wr841nv9_tp_recovery.bin'. Load address: 0x80800000 Loading: T T T Retry count exceeded; starting again ## Booting image at 9f020000 ... Uncompressing Kernel Image ... OK Starting kernel ...