Posted: Sun Feb 03, 2019 23:55 Post subject: actiontec mi424wr refuses to upgrade
Hopefully this is the right place to ask this. Please bear with me as it has been a while.
I have a couple mi424wr running v24-sp2 (06/23/14-24461).
I thought about upgrading it, so I went to the router db and grabbed the version from there.
Then I did the web based upgrade process, and when the router finishes rebooting it is on the same version.
I then grabbed a few versions from the betas folders, from 2015, 2016, 2017, etc.
And no matter which one I use for the upgrade, the routers always come back with the same v24-sp2 (06/23/14).
I have a feeling that I am either doing or forgetting something stupid.
Any clue here would be of great value.
I am having the same issue with my MI424WR Rev D. I have tried the web-gui with both the linux.bin file and the most recent actiontec-mi424wr-firmware.bin with the same result. Upgrade message says successful, but the the firmware does not change. Any suggestions will be much appreciated.
I had the same problem with my Actiontek MI424WR rev D. When I use the Firmware Upgrade page with the some files, after only 9 seconds it says "upgrade successful", and then the router restarts, but it is not upgraded. (Whatever error message is not displayed on the webpage.)
I first upgraded it from the factory firmware (using RedBoot) in 2016, with linux.bin (2013-03-25, r21061, 7,434,240 bytes).
I saw this post and, like you, I upgraded through the web interface using actiontec-mi424wr-firmware.bin (2014-06-23, r24461, 7492KiB (7.31MiB; 7,671,836 bytes)). On closed ticket #6875, on 20191027 they said they would fix this right away, but that fix was effectively "lost" because no one can find it because the links weren't updated.
In the end, I successfully upgraded through the web interface using a not-quite-new version, actiontec-mi424wr-firmware.bin, 2020-01-18, r42015, 7440KiB (7.26MiB; 7,618,560 bytes).
Before that, I had some failures:
Today, the Router Database told me this router is "supported by" "v3.0 [Beta] Build 40559". I downloaded that recommended version, actiontec-mi424wr-firmware.bin (2019-08-06, r40559, 9,479,342 bytes). It looked too big for this router, which has only 8MiB = 8,388,608 bytes of flash, and apparently it is. (Though I don't whether these .bin files are "raw", expand larger due to run-length encoding, or "expand" smaller due to checksums in the file.)
I also tried the newest version, actiontec-mi424wr-firmware.bin (2020-04-20, r42954, 7,745,536 bytes), but it failed to upgrade. It's bigger than the two that worked; maybe it is bigger than some unspecified size limit that happens to be less than 8,388,608 bytes. The newest one doesn't work, which means the same problem came back. (Or maybe my download corrupted?)
When the newest version failed, I tried some less-than-new versions:
20200103-r41874 7428KiB FAILED 7.25MiB 7,606,272 bytes (Wireless Security tab reboots the router)
20200105-r41892 7428KiB FAILED 7.25MiB 7,606,272 bytes (Wireless Security tab reboots the router)
20200109-r41954 7440KiB WORKED 7.26MiB 7,618,560 bytes [fixed broken Wireless Security] [new styling]
20200114-r41986 7440KiB skipped
20200118-r42015 7440KiB WORKED 7.26MiB 7,618,560 bytes [changed Wireless Security styling]
20200121-r42054 7464KiB skipped
20200128-r42132 7464KiB skipped
20200130-r42174 7464KiB WORKED 7.28MiB 7,643,136 bytes [no difference noticed]
20200205-r42278 7588KiB skipped (> 7564; must be too big)
20200206-r42287 7588KiB skipped (> 7564; must be too big)
20200210-r42335 7588KiB skipped (> 7564; must be too big)
20200214-r42366 7588KiB skipped (> 7564; must be too big)
20200217-r42410 7588KiB skipped (> 7564; must be too big)
20200220-r42460 7588KiB skipped (> 7564; must be too big)
20200225-r42514 7604KiB skipped (> 7564; must be too big)
20200227-r42542 7604KiB skipped (> 7564; must be too big)
20200228-r42557 7544KiB skipped
20200303-r42602 7544KiB skipped
20200303-r42602 7544KiB skipped
20200313-r42681 7540KiB skipped
20200318-r42729 7540KiB skipped
20200318-r42729 7540KiB skipped
20200325-r42803 7540KiB skipped
20200330-r42819 7540KiB skipped
20200406-r42847 7540KiB skipped
20200410-r42872 7540KiB WORKED 7.36MiB 7,720,960 bytes *KEEPING* [no difference noticed] [NEW BIGGEST WORKING]
20200415-r42910 7564KiB (= 7564; must be too big)
20200417-r42914 7564KiB (= 7564; must be too big)
20200418-r42925 7564KiB (= 7564; must be too big)
20200420-r42954 7564KiB FAILED 7.38MiB 7,745,536 bytes UPGRADE DIDN'T TAKE. (no error message) must be too big.
20200428-r43012 7564KiB FAILED 7.38MiB 7,745,536 bytes UPGRADE DIDN'T TAKE. (no error message) must be too big.
So far, up-to 7540KiB (7.36MiB; 7,720,960 bytes) is okay, but 7564KiB (7.38MiB; 7,745,536 bytes) and-up is too big. The latest version has alternated between working and not working (as web update) several times.
I think every download for this router that is >8MiB should be deleted (unless some MI424WRs have 16MiB hand-soldered in). (The actual cutoff is less than 8MiB. And it might be higher when upgrading via RedBoot than when upgrading via the web interface.) I also hope that any known "bricking" versions are always deleted from the download area.
Difference between the two downloads:
•actiontec-mi424wr-firmware 20200410-r42872.bin 7540KiB 7.36MiB 7,720,960 bytes = 0x75D000 bytes = 1885 x 4096
•linux 20200410-r42872.bin 7540KiB 7.36MiB 7,720,494 bytes
"Factory Flash" (linux.bin) is shorter. It looks "raw". Its size is not rounded up (no padding).
"Web Update" (actiontec-mi424wr-firmware.bin) contains "Factory Flash", but it is 466 bytes longer.
It prepends 28 bytes (header): "HDR0" 00 D0 75 00 (0x0075D000, the whole file's length) + 4-byte checksum? + 20 more constant
It appends 438 bytes (all zeros). ["linux 20200130-r42174.bin" appends 1086 zeros.] (rounding the file size up to the next 4096.) (though rounding up makes no sense.)
Last edited by guy8118 on Wed Apr 29, 2020 3:06; edited 3 times in total
Joined: 08 May 2018 Posts: 6891 Location: Texas, USA
Posted: Tue Apr 28, 2020 3:32 Post subject:
Were you flashing via serial / CLI? Sometimes webflash will not work, but the other method(s) will. There is also the possibility of flash size limitations due to the partition layout. Nice way to dig up an old thread. Thanks for the report.
I just searched the forum for MI424WR. In other posts (not necessarily the same version MI424WR), people reported the latest (usually largest) version that worked for them. Each version is usually bigger than the previous, but sometimes one is much smaller, after a special effort. Unfortunately, the website conceals smaller newer versions because it groups the downloads by version number. If it grouped downloads by model, with version-numbers in the filenames (ahem); then visitors could browse the size column and discover it.
In 2019, after a report, the developers reduced the download for MI424WR rev D to a usable size, but they left the Router Database pointing to a useless 9MiB version (and they didn't remove the useless 9MiB versions). For a while, people who downloaded the "latest" version got a usable version, and maybe they didn't report it here. But newer versions for this router continued to grow, until now the latest version is again too big for the web UI.
Some reported that RedBoot can flash a slightly newer (i.e. larger) version than the web UI can. If the code in the .bin file depends on other code in the flash, then the .bin file cannot specify all 8MiB. Maybe flashing via JTAG could flash a larger file, maybe not. Maybe there could be more room for code if a newer version of the unchanged block is smaller. If the .bin file is truly "raw" (a memory image of exact size), then the size of the unchanged block is somewhere between 643,072 and 716,772 bytes. (But the backup .bin file downloaded from the router is 8,838,608 bytes, exactly 8MiB.)
With so many releases, I wish there were user-friendly "release notes" that summarize vulnerabilities and bugs fixed, and features added or removed. (I only find lists of code "diffs".) Some vulnerabilities are so severe that older versions, if available at all, should come with extreme warnings.
Newer versions are scary too. Many builds are never released. But many published builds probably have good reasons not to use them. Some builds might fail only with some models or versions, but where is that information collected and displayed? Every version is a "beta" - every newer version could have new bugs, regressions, or even fatal flaws (bricking).
Hmm. Firmware FAQ: "Where do I download firmware?": "DO NOT USE THE ROUTER DATABASE unless directed in a device wiki. It does NOT have Recommended Builds, and the firmware build dates are not correct." Then what the hell is it for? User after use gets screwed by it. They keep crap on the front page, but that's fine and dandy because a middle page says "don't believe that crap"?
The current v30 only has one flavor, "std".
But the previous v24-sp2 had multiple builds. (These went away.):
•The mini contains all the features of the standard distribution, with the exception of chillispot, nocat, rflow, kaid, CIFS client, SNMP, IPv6, and MMC/SD card support.
•The standard (std) distribution includes all features, with the exception of VOIP.
•The standard-nokaid (std-nokaid) distribution includes all features of standard, with kaid removed to free some flash space.
•The VOIP distribution includes all features, with kaid removed to make room for Milkfish.
•The VPN edition includes OpenVPN but does not include IPv6, CIFS client, or kaid.
•The micro edition is a stripped-down version designed for the WRT54G v5 and other 2MB router models.
Other third-party firmware seems to mention "packages", implying mix-and-match your own feature preferences. But their flash procedure seems to only upload two files.
They deleted v24sp2 from the downloads (I was running it), but they left v24 and v24sp1 there!
How can a newer version get smaller? They have to make the binary code smaller or compress it better. Smaller code could mean dead code removal, deduplication, code reuse, or smaller tables or images (if that is even possible), if not, then they have to remove some features or functionality.
However many features are packed into the flash, unused and inactive features need not be expanded into RAM.