Process to upgrade OpenWRT 21 to 23

Hi all!

I have a WRT3200ACM and a WRT32x running OpenWRT 21.02.2. Due to mvebu switch-port issues, there is not a release of the later OpenWRT 22-series for these devices (earlier releases exist).

The documentation says that directly upgrading from 21 to 23 is not supported. Fine, but how am I supposed to get the devices on 23 at all without opening the case?

I tried, on the 32x:

  • Normal sysupgrade to 22 sysupgrade: says partition layout changed, not supported
  • Normal sysupgrade to 22 factory: says incompatible, must be forced
  • Forced sysupgrade to 22 sysupgrade: boots back into 21 after 3 failures
  • Forced sysupgrade to 22 factory: boots back into 21 after 3 failures
  • Forced sysupgrade to 23 sysupgrade: boots back into 21 after 3 failures
  • Forced sysupgrade to 23 factory: boots back into 21 after 3 failures
  • Forced sysupgrade to stock OEM firmware: boots back into 21 after 3 failures
  • mtd writing stock OEM firmware to kernel1 (openwrt reports it is on partition 2): doesn't boot, boots back into 21 after I toggled the switch 3 times

What is the intended series of steps to get a device currently running OpenWRT 21 on kernel2, and nothing usable on kernel1, onto the current mainline?

1 Like

These particular devices have an increased kernel size update, so you have to use the factory.img to set the new kernel size. Just follow initial install from the device page. Force the firmware, do not update config.

You can then use the sysupgrade.bin to flash subsequent upgrades going forward.

Take a backup before flashing. This can be used for reference to update your network stack. Your package configs for the most part will restore cleanly from the backup.

Could you explain to me how I could "follow initial install from the device page" when the device is not running factory firmware, but is running OpenWRT 21?

Maybe I'm missing something here.

EDIT: step 1 at https://openwrt.org/toh/linksys/wrt3200acm is "login to the linksys webUI", which of course I can't because there is no "linksys webUI" on the thing, only luci.

No linksys webUI won’t exist, but the OpenWrt webUI does. By the steps:

  • download 23.05.2 factory.img
  • go to LuCI/System/Backup Flash/Firmware
  • make a backup of your current config. Generate Archive
  • flash new firmware image. Flash Image using factory.img

Force the image and do not update configs.

I did that. The result is that the router reboots, then drops me back into OpenWRT 21 again after a nice long while.

I don't see any diagnostic output to tell me what happened / went wrong.

Can you boot to both partitions? (System/Advanced Reboot)

As I said in my original, trying to switch to partition 1 (via setting boot_part) does not succeed and partition 2 still boots after three failures.

Let's assume I have absolutely nothing that can work on partition 1. How do I upgrade?

Sorry, I didn’t pick up on the setting boot_part.

The only way I can think of would be using a RAMDISK to allow you to upgrade to the working partition.You may want to look at generic de-bricking.

Have you tried to update the WRT3200ACM?

I haven't tried the other router yet, as my plan was to leap-frog so I didn't end up with no usable devices.

It sounds like you're saying that doing a sysupgrade -n -v -F with the factory 23 image is supposed to work. If that's correct, I'll look into why it isn't.

Exactly.

On the 3200, make sure you can boot from both partitions first, then return to your current working OpenWrt partition and flash the factory.img to the alternate partition. Worst case scenario, you always have the option to boot back to a working system.

1 Like