WNDR4700 - Stuck at TFTP Server Firmware Recovery

Last night I was running Openwrt on this Netgear WNDR4700 (22.03.0) and was ready to play today.. then I saw there was 23.05.0 and tried to upgrade and failed.

Disassembled, hooked up my arduino-as-TTL-adapter to the internal pins and logged in with putty. After awhile I was able to figure out how to set up a TFTP client and send over .img files. Seems to have transferred and written two of the choices:

openwrt-22.03.0-apm821xx-nand-netgear_wndr4700-squashfs-factory.img
WNDR4700-V1.0.0.56.img (OEM firmware from Netgear)

Both seem to write ok, and then reboot and it goes right back to the TFTP Recovery mode. Hoping to get it to boot from either of the images I seem to be able to flash to it.

I feel like I'm missing something really dumb, like turning off recovery mode. Can someone help me get this to boot into the installed firmware again?

=> fw_recovery
AR8327 GigaSW initialize...done

The Router is in TFTP Server Firmware Recovery mode NOW!
Listening on Port : 69, IP Address: 192.168.1.1 ...

Rcv:
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        .................................................................
        ....................................
Done!
Bytes transferred = 9830529 (960081 hex)
 131072 bytes read: OK
HW ID on board: 29763875+128+256
HW ID on image: 29763875+128+256
Firmware Image HW ID matched Board HW ID

 131072 bytes read: OK
MODEL ID on board: WNDR4700
MODEL ID on image: WNDR4700
Firmware Image MODEL ID matched Board model ID

Erasing: off 180000, size 20000
Erasing at 0x180000 -- 100% complete. Cleanmarker written at 0x180000.
OK
Writing: from RAM addr 2000080, to NAND off 180000, size 20000
 131072 bytes written: OK
Active-timer expires
Erasing: off 1a0000, size 20000
Erasing at 0x1a0000 -- 100% complete. Cleanmarker written at 0x1a0000.
OK
Writing: from RAM addr 2020080, to NAND off 1a0000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 1c0000, size 20000
Erasing at 0x1c0000 -- 100% complete. Cleanmarker written at 0x1c0000.
OK
Writing: from RAM addr 2040080, to NAND off 1c0000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 1e0000, size 20000
Erasing at 0x1e0000 -- 100% complete. Cleanmarker written at 0x1e0000.
OK
Writing: from RAM addr 2060080, to NAND off 1e0000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 200000, size 20000
Erasing at 0x200000 -- 100% complete. Cleanmarker written at 0x200000.
OK
Writing: from RAM addr 2080080, to NAND off 200000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 220000, size 20000
Erasing at 0x220000 -- 100% complete. Cleanmarker written at 0x220000.
OK
Writing: from RAM addr 20a0080, to NAND off 220000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 240000, size 20000
Erasing at 0x240000 -- 100% complete. Cleanmarker written at 0x240000.
OK
Writing: from RAM addr 20c0080, to NAND off 240000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 260000, size 20000
Erasing at 0x260000 -- 100% complete. Cleanmarker written at 0x260000.
OK
Writing: from RAM addr 20e0080, to NAND off 260000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 280000, size 20000
Erasing at 0x280000 -- 100% complete. Cleanmarker written at 0x280000.
OK
Writing: from RAM addr 2100080, to NAND off 280000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 2a0000, size 20000
Erasing at 0x2a0000 -- 100% complete. Cleanmarker written at 0x2a0000.
OK
Writing: from RAM addr 2120080, to NAND off 2a0000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 2c0000, size 20000
Erasing at 0x2c0000 -- 100% complete. Cleanmarker written at 0x2c0000.
OK
Writing: from RAM addr 2140080, to NAND off 2c0000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 2e0000, size 20000
Erasing at 0x2e0000 -- 100% complete. Cleanmarker written at 0x2e0000.
OK
Writing: from RAM addr 2160080, to NAND off 2e0000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 300000, size 20000
Erasing at 0x300000 -- 100% complete. Cleanmarker written at 0x300000.
OK
Writing: from RAM addr 2180080, to NAND off 300000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 320000, size 20000
Erasing at 0x320000 -- 100% complete. Cleanmarker written at 0x320000.
OK
Writing: from RAM addr 21a0080, to NAND off 320000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 340000, size 20000
Erasing at 0x340000 -- 100% complete. Cleanmarker written at 0x340000.
OK
Writing: from RAM addr 21c0080, to NAND off 340000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 360000, size 20000
Erasing at 0x360000 -- 100% complete. Cleanmarker written at 0x360000.
OK
Writing: from RAM addr 21e0080, to NAND off 360000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 380000, size 20000
Erasing at 0x380000 -- 100% complete. Cleanmarker written at 0x380000.
OK
Writing: from RAM addr 2200080, to NAND off 380000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 3a0000, size 20000
Erasing at 0x3a0000 -- 100% complete. Cleanmarker written at 0x3a0000.
OK
Writing: from RAM addr 2220080, to NAND off 3a0000, size 20000
 131072 bytes written: OK
Alive-timer 15
Erasing: off 3c0000, size 20000
Erasing at 0x3c0000 -- 100% complete. Cleanmarker written at 0x3c0000.
OK
Writing: from RAM addr 2240080, to NAND off 3c0000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 3e0000, size 20000
Erasing at 0x3e0000 -- 100% complete. Cleanmarker written at 0x3e0000.
OK
Writing: from RAM addr 2260080, to NAND off 3e0000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 400000, size 20000
Erasing at 0x400000 -- 100% complete. Cleanmarker written at 0x400000.
OK
Writing: from RAM addr 2280080, to NAND off 400000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 420000, size 20000
Erasing at 0x420000 -- 100% complete. Cleanmarker written at 0x420000.
OK
Writing: from RAM addr 22a0080, to NAND off 420000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 440000, size 20000
Erasing at 0x440000 -- 100% complete. Cleanmarker written at 0x440000.
OK
Writing: from RAM addr 22c0080, to NAND off 440000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 460000, size 20000
Erasing at 0x460000 -- 100% complete. Cleanmarker written at 0x460000.
OK
Writing: from RAM addr 22e0080, to NAND off 460000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 480000, size 20000
Erasing at 0x480000 -- 100% complete. Cleanmarker written at 0x480000.
OK
Writing: from RAM addr 2300080, to NAND off 480000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 4a0000, size 20000
Erasing at 0x4a0000 -- 100% complete. Cleanmarker written at 0x4a0000.
OK
Writing: from RAM addr 2320080, to NAND off 4a0000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 4c0000, size 20000
Erasing at 0x4c0000 -- 100% complete. Cleanmarker written at 0x4c0000.
OK
Writing: from RAM addr 2340080, to NAND off 4c0000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 4e0000, size 20000
Erasing at 0x4e0000 -- 100% complete. Cleanmarker written at 0x4e0000.
OK
Writing: from RAM addr 2360080, to NAND off 4e0000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 500000, size 20000
Erasing at 0x500000 -- 100% complete. Cleanmarker written at 0x500000.
OK
Writing: from RAM addr 2380080, to NAND off 500000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 520000, size 20000
Erasing at 0x520000 -- 100% complete. Cleanmarker written at 0x520000.
OK
Writing: from RAM addr 23a0080, to NAND off 520000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 540000, size 20000
Erasing at 0x540000 -- 100% complete. Cleanmarker written at 0x540000.
OK
Writing: from RAM addr 23c0080, to NAND off 540000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 560000, size 20000
Erasing at 0x560000 -- 100% complete. Cleanmarker written at 0x560000.
OK
Writing: from RAM addr 23e0080, to NAND off 560000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 580000, size 20000
Erasing at 0x580000 -- 100% complete. Cleanmarker written at 0x580000.
OK
Writing: from RAM addr 2400080, to NAND off 580000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 5a0000, size 20000
Erasing at 0x5a0000 -- 100% complete. Cleanmarker written at 0x5a0000.
OK
Writing: from RAM addr 2420080, to NAND off 5a0000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 5c0000, size 20000
Erasing at 0x5c0000 -- 100% complete. Cleanmarker written at 0x5c0000.
OK
Writing: from RAM addr 2440080, to NAND off 5c0000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 5e0000, size 20000
Erasing at 0x5e0000 -- 100% complete. Cleanmarker written at 0x5e0000.
OK
Writing: from RAM addr 2460080, to NAND off 5e0000, size 20000
 131072 bytes written: OK
Alive-timer 16
Erasing: off 600000, size 20000
Erasing at 0x600000 -- 100% complete. Cleanmarker written at 0x600000.
OK
Writing: from RAM addr 2480080, to NAND off 600000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 620000, size 20000
Erasing at 0x620000 -- 100% complete. Cleanmarker written at 0x620000.
OK
Writing: from RAM addr 24a0080, to NAND off 620000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 640000, size 20000
Erasing at 0x640000 -- 100% complete. Cleanmarker written at 0x640000.
OK
Writing: from RAM addr 24c0080, to NAND off 640000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 660000, size 20000
Erasing at 0x660000 -- 100% complete. Cleanmarker written at 0x660000.
OK
Writing: from RAM addr 24e0080, to NAND off 660000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 680000, size 20000
Erasing at 0x680000 -- 100% complete. Cleanmarker written at 0x680000.
OK
Writing: from RAM addr 2500080, to NAND off 680000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 6a0000, size 20000
Erasing at 0x6a0000 -- 100% complete. Cleanmarker written at 0x6a0000.
OK
Writing: from RAM addr 2520080, to NAND off 6a0000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 6c0000, size 20000
Erasing at 0x6c0000 -- 100% complete. Cleanmarker written at 0x6c0000.
OK
Writing: from RAM addr 2540080, to NAND off 6c0000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 6e0000, size 20000
Erasing at 0x6e0000 -- 100% complete. Cleanmarker written at 0x6e0000.
OK
Writing: from RAM addr 2560080, to NAND off 6e0000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 700000, size 20000
Erasing at 0x700000 -- 100% complete. Cleanmarker written at 0x700000.
OK
Writing: from RAM addr 2580080, to NAND off 700000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 720000, size 20000
Erasing at 0x720000 -- 100% complete. Cleanmarker written at 0x720000.
OK
Writing: from RAM addr 25a0080, to NAND off 720000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 740000, size 20000
Erasing at 0x740000 -- 100% complete. Cleanmarker written at 0x740000.
OK
Writing: from RAM addr 25c0080, to NAND off 740000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 760000, size 20000
Erasing at 0x760000 -- 100% complete. Cleanmarker written at 0x760000.
OK
Writing: from RAM addr 25e0080, to NAND off 760000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 780000, size 20000
Erasing at 0x780000 -- 100% complete. Cleanmarker written at 0x780000.
OK
Writing: from RAM addr 2600080, to NAND off 780000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 7a0000, size 20000
Erasing at 0x7a0000 -- 100% complete. Cleanmarker written at 0x7a0000.
OK
Writing: from RAM addr 2620080, to NAND off 7a0000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 7c0000, size 20000
Erasing at 0x7c0000 -- 100% complete. Cleanmarker written at 0x7c0000.
OK
Writing: from RAM addr 2640080, to NAND off 7c0000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 7e0000, size 20000
Erasing at 0x7e0000 -- 100% complete. Cleanmarker written at 0x7e0000.
OK
Writing: from RAM addr 2660080, to NAND off 7e0000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 800000, size 20000
Erasing at 0x800000 -- 100% complete. Cleanmarker written at 0x800000.
OK
Writing: from RAM addr 2680080, to NAND off 800000, size 20000
 131072 bytes written: OK
Alive-timer 17
Erasing: off 820000, size 20000
Erasing at 0x820000 -- 100% complete. Cleanmarker written at 0x820000.
OK
Writing: from RAM addr 26a0080, to NAND off 820000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 840000, size 20000
Erasing at 0x840000 -- 100% complete. Cleanmarker written at 0x840000.
OK
Writing: from RAM addr 26c0080, to NAND off 840000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 860000, size 20000
Erasing at 0x860000 -- 100% complete. Cleanmarker written at 0x860000.
OK
Writing: from RAM addr 26e0080, to NAND off 860000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 880000, size 20000
Erasing at 0x880000 -- 100% complete. Cleanmarker written at 0x880000.
OK
Writing: from RAM addr 2700080, to NAND off 880000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 8a0000, size 20000
Erasing at 0x8a0000 -- 100% complete. Cleanmarker written at 0x8a0000.
OK
Writing: from RAM addr 2720080, to NAND off 8a0000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 8c0000, size 20000
Erasing at 0x8c0000 -- 100% complete. Cleanmarker written at 0x8c0000.
OK
Writing: from RAM addr 2740080, to NAND off 8c0000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 8e0000, size 20000
Erasing at 0x8e0000 -- 100% complete. Cleanmarker written at 0x8e0000.
OK
Writing: from RAM addr 2760080, to NAND off 8e0000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 900000, size 20000
Erasing at 0x900000 -- 100% complete. Cleanmarker written at 0x900000.
OK
Writing: from RAM addr 2780080, to NAND off 900000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 920000, size 20000
Erasing at 0x920000 -- 100% complete. Cleanmarker written at 0x920000.
OK
Writing: from RAM addr 27a0080, to NAND off 920000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 940000, size 20000
Erasing at 0x940000 -- 100% complete. Cleanmarker written at 0x940000.
OK
Writing: from RAM addr 27c0080, to NAND off 940000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 960000, size 20000
Erasing at 0x960000 -- 100% complete. Cleanmarker written at 0x960000.
OK
Writing: from RAM addr 27e0080, to NAND off 960000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 980000, size 20000
Erasing at 0x980000 -- 100% complete. Cleanmarker written at 0x980000.
OK
Writing: from RAM addr 2800080, to NAND off 980000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 9a0000, size 20000
Erasing at 0x9a0000 -- 100% complete. Cleanmarker written at 0x9a0000.
OK
Writing: from RAM addr 2820080, to NAND off 9a0000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 9c0000, size 20000
Erasing at 0x9c0000 -- 100% complete. Cleanmarker written at 0x9c0000.
OK
Writing: from RAM addr 2840080, to NAND off 9c0000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off 9e0000, size 20000
Erasing at 0x9e0000 -- 100% complete. Cleanmarker written at 0x9e0000.
OK
Writing: from RAM addr 2860080, to NAND off 9e0000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off a00000, size 20000
Erasing at 0xa00000 -- 100% complete. Cleanmarker written at 0xa00000.
OK
Writing: from RAM addr 2880080, to NAND off a00000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off a20000, size 20000
Erasing at 0xa20000 -- 100% complete. Cleanmarker written at 0xa20000.
OK
Writing: from RAM addr 28a0080, to NAND off a20000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off a40000, size 20000
Erasing at 0xa40000 -- 100% complete. Cleanmarker written at 0xa40000.
OK
Writing: from RAM addr 28c0080, to NAND off a40000, size 20000
 131072 bytes written: OK
Alive-timer 18
Erasing: off a60000, size 20000
Erasing at 0xa60000 -- 100% complete. Cleanmarker written at 0xa60000.
OK
Writing: from RAM addr 28e0080, to NAND off a60000, size 20000
 131072 bytes written: OK
Alive-timer 19
Erasing: off a80000, size 20000
Erasing at 0xa80000 -- 100% complete. Cleanmarker written at 0xa80000.
OK
Writing: from RAM addr 2900080, to NAND off a80000, size 20000
 131072 bytes written: OK
Alive-timer 19
Erasing: off aa0000, size 20000
Erasing at 0xaa0000 -- 100% complete. Cleanmarker written at 0xaa0000.
OK
Writing: from RAM addr 2920080, to NAND off aa0000, size 20000
 131072 bytes written: OK
Alive-timer 19
Erasing: off ac0000, size 20000
Erasing at 0xac0000 -- 100% complete. Cleanmarker written at 0xac0000.
OK
Writing: from RAM addr 2940080, to NAND off ac0000, size 20000
 131072 bytes written: OK
Alive-timer 19
Erasing: off ae0000, size 20000
Erasing at 0xae0000 -- 100% complete. Cleanmarker written at 0xae0000.
OK
Writing: from RAM addr 2960080, to NAND off ae0000, size 20000
 131072 bytes written: OK
Alive-timer 19
Done
Auto calibration ---

U-Boot 2009.08 (Jul 03 2012 - 13:04:31)

CPU:   AMCC PowerPC APM82181 Rev. E at 1000 MHz (PLB=166, OPB=83, EBC=83 MHz)
       Security support
       Bootstrap Option D - Boot ROM Location NAND wo/ECC 2k page (8 bits), booting from NAND
       32 kB I-Cache 32 kB D-Cache
DNI HW ID: 29763875 NAND flash 128MB RAM 256MB U-Boot 2009.08 dni1 V1.4
Board: AMCC APM82181 Evaluation Board, PCIE0/SATA1, 1*USB OTG
I2C:   ready
DRAM:  256 MB (ECC not enabled, 500 Mb/s, 32-bit, CL3)
NAND:  128 MiB
Configure Max Payload 256B
PCIE0: successfully set as root-complex
        03  00  168c  0030  0280  ff
        02  02  111d  803a  0604  00
        04  00  168c  0033  0280  ff
        02  03  111d  803a  0604  00
        05  00  1912  0015  0c03  00
        02  04  111d  803a  0604  00
        01  00  111d  803a  0604  00
 131072 bytes read: OK
Net:   ppc_4xx_eth0
AR8327 GigaSW initialize...done
ENET Speed is 1000 Mbps - FULL duplex connection (EMAC0)

 Client starts...[Listening] for ADVERTISE...TTT
Retry count exceeded; boot the image as usual

 nmrp server is stopped or failed !

Type run flash_nfs to mount root filesystem over NFS

Hit any key to stop autoboot:  0

Loading from device 0: NAND 128MiB 3,3V 8-bit (offset 0x180000)
Unknown command 'chkdniimg' - try 'help'
AR8327 GigaSW initialize...done

The Router is in TFTP Server Firmware Recovery mode NOW!
Listening on Port : 69, IP Address: 192.168.1.1 ...

WNDR4700 requires a change in the uboot environment as described in multiple forum posts such as the one here:

After fixing that I could not get 23.05.0 to work but 23.05.2 did work fine on my device. The release notes of 23.05.2 show that an issue with the wndr4700 images has been fixed which may explain why 23.05.0 didn't work.

https://openwrt.org/releases/23.05/notes-23.05.2

So I recommend to do the uboot environment update and try the 23.05.2 images.

Thanks for chiming in on that. I put the latest 23.05.2 and that did the trick.

1 Like