I have 19.07.2 on an WRT1900ACv1(mamba) and want to go to the latest release, (currently 21.02.3).
(I think) I have discovered that the kernels in the days of the 19.x.x series releases were 3mb in size, but the 21.x.x kernels are 4mb in size. And because of this, I can not simply use sysupgrade's .bin files to update to 21.
According to https://openwrt.org/toh/linksys/wrt1900ac#flash_layout :
mtd4 contains the primary kernel and mtd5
mtd5 contains the primary rootfs, rootfs1
mtd6 contains the alternate kernel and mtd7
mtd7 contains the alternate rootfs, rootfs2
According to fw_printenv, I was booted into the alternate kernel and rootfs all this time. And I installed the luci advanced reboot plugin, which confirmed the same.
So. I downloaded the factory img file from https://firmware-selector.openwrt.org/?version=21.02.3&target=mvebu%2Fcortexa9&id=linksys_wrt1900ac-v1 to my 1900ac, and wrote it to mtd4:
root@AP0:~# wget 'https://downloads.openwrt.org/releases/21.02.3/targets/mvebu/cortexa9/openwrt-21.02.3-mvebu-cortexa9-linksys_wrt1900ac-v1-squashfs-factory.img'
Downloading 'https://downloads.openwrt.org/releases/21.02.3/targets/mvebu/cortexa9/openwrt-21.02.3-mvebu-cortexa9-linksys_wrt1900ac-v1-squashfs-factory.img'
Connecting to 168.119.138.211:443
Writing to 'openwrt-21.02.3-mvebu-cortexa9-linksys_wrt1900ac-v1-squashfs-factory.img'
openwrt-21.02.3-mveb 100% |*******************************| 8192k 0:00:00 ETA
Download completed (8388608 bytes)
root@AP0:~#
root@AP0:~# mtd unlock /dev/mtd4
Unlocking /dev/mtd4 ...
root@AP0:~# mtd erase /dev/mtd4
Unlocking /dev/mtd4 ...
Erasing /dev/mtd4 ...
root@AP0:~# ls
openwrt-21.02.3-mvebu-cortexa9-linksys_wrt1900ac-v1-squashfs-factory.img
root@AP0:~# mtd write openwrt-21.02.3-mvebu-cortexa9-linksys_wrt1900ac-v1-squashfs-factory.img /dev/mtd4
Unlocking /dev/mtd4 ...
Writing from openwrt-21.02.3-mvebu-cortexa9-linksys_wrt1900ac-v1-squashfs-factory.img to /dev/mtd4 ...
root@AP0:~# mtd verify openwrt-21.02.3-mvebu-cortexa9-linksys_wrt1900ac-v1-squashfs-factory.img /dev/mtd4
Verifying /dev/mtd4 against openwrt-21.02.3-mvebu-cortexa9-linksys_wrt1900ac-v1-squashfs-factory.img ...
5925246cb97565502afcefbca64cf455 - /dev/mtd4
5925246cb97565502afcefbca64cf455 - openwrt-21.02.3-mvebu-cortexa9-linksys_wrt1900ac-v1-squashfs-factory.img
Success
root@AP0:~#
Then I refreshed the advanced reboot plugin's page and it recognized version 21 was on the primary partition and I clicked the button to boot into it........
and......
after ten minutes it seems to not have recovered.
I followed the power button procedure to get uboot(?) to switch back to the alternate firmware and that worked. I was able to get the AP back online running 19.x.x. But what was wrong with using mtd the way I did?
Should I have downloaded the kernel and wrote that to mtd 4 and then the factory image to mtd5?
Should I manually reconfigure some part of uboot to tell tit he kernel in mtd4 is now 4mb?