Linksys WRT160NL Firmware via TFTP und U-boot flashen
Nachdem, warum auch immer, der Webflash bei meinem Linksys WRT-160NL immer fehl schlägt, muss ich dannach das Update via Konsole und TFTP machen. Nachdem das Update fehlgeschlagen ist und der Router auf nichts mehr hört, aufschrauben, Konsolenkabel dran und rebooten. Er Bootet schon automatisch in den U-Boot Mode.
Unter Linux oder MacOS
Der Linksys Router muss in den U-Boot Modus gebootet werden. Das sieht dann wie folgt in der Konsole aus:
U-Boot 1.1.6 (Apr 14 2010 - 14:02:36) DRAM: ar7100_ddr_initial_config(237) enter! ar7100_ddr_initial_config(269) exit! U-Boot 1.1.6 (Apr 14 2010 - 14:02:36) AP81 (ar7100) U-boot sri 32 MB WRT160NL u-boot version: 1.0.0 Top of RAM usable for U-Boot at: 82000000 Reserving 279k for U-Boot at: 81fb8000 Reserving 192k for malloc() at: 81f88000 Reserving 44 Bytes for Board Info at: 81f87fd4 Reserving 36 Bytes for Global Data at: 81f87fb0 Reserving 128k for boot params() at: 81f67fb0 Stack Pointer at: 81f67f98 Now running in RAM - U-Boot at: 81fb8000 id read 0x100000ff flash size 8MB, sector count = 128 Flash: 8 MB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: ag7100_enet_initialize... ag7100 get ethaddr for device eth0 Fetching MAC Address from 0x81feb1e0 --------***** Get the RTL8306SD Manufactory ID=379c *****------- Reg6: speed=0 nway=1 duplex=0 Reg5: speed=0 nway=0 duplex=0 Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0 a5=0 Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0 Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0 Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0 Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0 eth0: 20:aa:4b:c0:bc:55 eth0 up eth0 ### main_loop entered: bootdelay=1 Hit any key to stop autoboot: 1 0 ## Booting WRT160NL ... Application code length 0x0070e000 Bad CRC: trx.crc32 0x06e39d80 calculate 0xdef98909 check link duplex:Full/speed:100 dup 1 speed 100 Tftpd start listening on port[69]!
Der PC bzw MAC muss eine IP im Netz 192.168.1.x bekommen, zum Beispiel die 192.168.1.100. Dann hier den folgenden Befehl im selben Ordner absetzten, in dem die in code.bin
umbenannte Firmware liegt.
echo -e "binary\nrexmt 1\ntimeout 160\ntrace\nput code.bin\n" | tftp 192.168.1.1
Auf der Konsole des Routers sollte es dann nach einer kurzen bedenkzeit so aussehen und nach ein paar Sekunden sollte er dann automatisch neustarten und booten.
Load address: 0x80060000 Receiving firmware [code.bin] from [192.168.1.100] Write File : CODE.BIN # Current Code Pattern:NL16 , Upgrade Code Pattern:NL16 Code Pattern is correct! ################################################################ ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################ done Bytes transferred = 7398400 (70e400 hex) load addr= 0x80060000 boot file= CODE.BIN NetBootFileXferSize= 0070e400 Erase linux kernel block !! From bf040000 To bf7dffff Erase Flash from 0xbf040000 to 0xbf7dffff in Bank # 1 First 0x4 last 0x7d sector size 0x10000 ���� 4���� 5���� 6���� 7���� 8���� 9���� 10���� 11���� 12���� 13���� 14���� 15���� 16���� 17���� 18���� 19���� 20���� 21���� 22���� 23���� 24���� 25���� 26���� 27���� 28���� 29���� 30���� 31���� 32���� 33���� 34���� 35���� 36���� 37���� 38���� 39���� 40���� 41���� 42���� 43���� 44���� 45���� 46���� 47���� 48���� 49���� 50���� 51���� 52���� 53���� 54���� 55���� 56���� 57���� 58���� 59���� 60���� 61���� 62���� 63���� 64���� 65���� 66���� 67���� 68���� 69���� 70���� 71���� 72���� 73���� 74���� 75���� 76���� 77���� 78���� 79���� 80���� 81���� 82���� 83���� 84���� 85���� 86���� 87���� 88���� 89���� 90���� 91���� 92���� 93���� 94���� 95���� 96���� 97���� 98���� 99���� 100���� 101���� 102���� 103���� 104���� 105���� 106���� 107���� 108���� 109���� 110���� 111���� 112���� 113���� 114���� 115���� 116���� 117���� 118���� 119���� 120���� 121���� 122���� 123���� 124���� 125 Erased 122 sectors Programming......... Copy to Flash... write addr: bf040000 done ## Booting WRT160NL ... Application code length 0x0070e000 CRC OK ## Booting image at bf04003c ... Image Name: DD-WRT v24 Linux Kernel Image Created: 2014-04-18 4:17:28 UTC Image Type: MIPS Linux Kernel Image (gzip compressed) Data Size: 1313112 Bytes = 1.3 MB Load Address: 80060000 Entry Point: 80064950 Verifying Checksum ... OK Uncompressing Kernel Image ... OK kernel: org len = 1313112, new len = 1376256 No initrd ## Transferring control to Linux (at address 80064950) ... ## Giving linux memsize in bytes, 33554432 Starting kernel ... [ 0.000000] flash_size passed from bootloader = 8 [ 0.000000] bootconsole [early0] enabled
Andere Lösung für Windows
Text copied from: http://wiki.openwrt.org/inbox/wrt160nl?do=show#oem.tftp.install
Set a PC on same network to some address in IP range 192.168.1.[2-254]. Download either Linksys or OpenWrt firmware image, store as code.bin. From serial console abort the U-boot process. Enter this on u-boot command line
ar7100> upgrade code.bin check link duplex:Full/speed:100 dup 1 speed 100 Tftpd start listening on port[69]! Load address: 0×80060000
Send file from PC with TFTP:
C:\tmp> tftp -i 192.168.1.1 put code.bin
You should see this on console wait for flash to finish:
Receiving firmware [code.bin] from [192.168.1.10] Write File : CODE.BIN
Once U-boot command prompt returns enter
ar7100 > go