Serielle schnittstelle

Aus Freifunk Rhein-Neckar Wiki
Version vom 28. Januar 2020, 17:15 Uhr von Maintenance script (Diskussion | Beiträge) (Import der alten DokuWiki)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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 ...