OpenWrt/LEDE Project

  • Status Closed
  • Percent Complete
  • Task Type Bug Report
  • Category Base system
  • Assigned To
    Adrian Schmutzler
  • Operating System All
  • Severity Very Low
  • Priority Very Low
  • Reported Version Trunk
  • Due in Version Undecided
  • Due Date Undecided
  • Private
Attached to Project: OpenWrt/LEDE Project
Opened by txt.file - 17.09.2019
Last edited by Adrian Schmutzler - 08.07.2020

FS#2510 - WNDR3700v2, WNDR3800 unable to update from ar71xx-generic to ath79


  • WNDR3700v2
  • WNDR3800

Software version of OpenWrt release

  • tested on master branch

Steps to reproduce

  • install openwrt-trunk ar71xx-generic image on device
  • copy openwrt-trunk ath79 image to device
  • sysupgrade from ar71xx-generic to ath79
  • get error message that device is not correct


Tried that a month ago. Will add further information as soon as I find time. I would really love to patch this but will need some help. I own both devices and can test.

Closed by  Adrian Schmutzler
08.07.2020 17:46
Reason for closing:  Fixed
Additional comments about closing:  

This has been fixed quite some time ago.

Hannu Nyman commented on 21.09.2019 07:03

You can use the "-F" or "–force" option in sysupgrade to jump between ath79 and ar71xx firmwares for WNDR3700v2 and WNDR3800. The configs are practically identical. (I do that frequently when testing my community build.)

Petr Štetiar commented on 21.09.2019 08:35
get error message that device is not correct

Please provide the error message.

Petr Štetiar commented on 21.09.2019 08:37
You can use the "-F" or "–force"

This switch is very dangerous and should be used as a last resort and only if the people know how to unbrick their router.

txt.file commented on 23.09.2019 19:16

flashed (2019-06-17) onto a wndr3700v2

root@OpenWrt:/# cat /proc/cpuinfo 
system type             : Atheros AR7161 rev 2
machine                 : NETGEAR WNDR3700/WNDR3800/WNDRMAC
processor               : 0
cpu model               : MIPS 24Kc V7.4
BogoMIPS                : 452.19
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 16
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa                     : mips1 mips2 mips32r1 mips32r2
ASEs implemented        : mips16
Options implemented     : tlb 4kex 4k_cache prefetch mcheck ejtag llsc dc_aliases perf_cntr_intr_bit nan_legacy nan_2008 perf
shadow register sets    : 1
kscratch registers      : 0
package                 : 0
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available

root@OpenWrt:/# wget
Downloading ''
Connecting to 2a01:4f8:150:6449::2:80
Writing to 'openwrt-ath79-generic-netgear_wndr3700v2-squashfs-sysupgrade.bin'
openwrt-ath79-generi 100% |*******************************|  4032k  0:00:00 ETA
Download completed (4129066 bytes)
root@OpenWrt:/tmp# sysupgrade -n openwrt-ath79-generic-netgear_wndr3700v2-squash
Device wndr3700 not supported by this image
Supported devices: netgear,wndr3700v2 wndr3700v2
Image check 'fwtool_check_image' failed.

I expect that the problem to be in "target/linux/ar71xx/image/". The BOARDNAME is not set for wndr3700v2 / wndr3800.

Hannu Nyman commented on 24.09.2019 06:22

To my knowledge, the one-time transition logic from ar71xx to ath79 is not complete for most ar71xx devices, as the DTS based device name detection in ath79 deviates from the old mach file based one in the old ar71xx. You practically need to force the sysupgrade, or use a tool like the Netgear TFTP recovery tool to flash the ath79 build.

For ar71xx the BOARDNAME is WNDR3700 for all three routers in the series (3700, 3700v2, 3800) and a separate NETGEAR_BOARD_ID separates them.

In ath79 the boardname (compatible string) is defined for each device in DTS with a different naming structure than in ar71xx.

For the ath79 sysupgrade to be compatible aith the sysupgrade logic in ar71xx, 3700v2 should declare compatibility with WNDR3700, which is not wanted.

You are talking about one-time transition logic from ar71xx to ath79 target for an ancient router. So the issue is not major, and likely nobody will create a fix unless you do it by creating logic for ar71xx to accept just the correct ath79 sysupgrade files while still maintaining the correct separation of router versions inside both ar71xx and ath79.

Ps. For WNDR3700, 3700v2 and 3800 the configs in ar71xx and ath79 are compatible. I have been constantly jumping between them as I have tested my community build for the 3700 series (which has been running since year 2011). Using the force flag in WNDR3700 sysupgrade for ar71xx –> ath79 –> ar71xx works quite ok, although Petr raised concern about mentioning it.

Petr Štetiar commented on 24.09.2019 19:20

If I understand all this correctly following patch should fix it

txt.file commented on 25.09.2019 21:32

compilation is running. I will runtime test it next Monday.

txt.file commented on 30.09.2019 20:29

3800 also tested and works too. This time tested with "preserve config".

Thanks Petr.

Project Manager
Adrian Schmutzler commented on 14.11.2019 16:41

ynezz and I agreed that we will address this differently:
We won't change the boardnames in ar71xx, but just add the shared boardname in ar71xx to the SUPPORTED_DEVICES in ath79.


This will enable to upgrade to ath79 directly without flashing an intermediate version. (Though it will theoretically introduce the problem that someone can flash wndr3700v2 image on wndr3700v1 when upgrading from ar71xx.)


Available keyboard shortcuts


Task Details

Task Editing