If you have yet to experience OKD, but are running release (22.x or 23.x) and you used v1.0.3 of the UBI Installer, then here is how you can downgrade BL2 to a version not affected by OKD.
- SSH into your router and verify that your BL2 has the OKD bug:
# grep "(release)" /dev/mtd0ro
v2.9(release):OpenWrt v2023-07-24-00ac6db3-2 (mt7622-snand-1ddr)
v2.9(release):OpenWrt v2023-07-24-00ac6db3-2 (mt7622-snand-1ddr)
v2.9(release):OpenWrt v2023-07-24-00ac6db3-2 (mt7622-snand-1ddr)
v2.9(release):OpenWrt v2023-07-24-00ac6db3-2 (mt7622-snand-1ddr)
If you see "v2.9", then you should proceed. If you have "v2.4", then you are fine and don't need to proceed.
- Update the package list and download a kernel module that lets you modify BL2 within OpenWRT:
# opkg update && opkg install kmod-mtd-rw
- Load the kernel module:
# insmod mtd-rw i_want_a_brick=1
- Next, we download the replacement BL2 image:
# cd /tmp
wget https://archive.openwrt.org/releases/22.03.0/targets/mediatek/mt7622/openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin
- Now we install the image into BL2 at 4 locations (double check everything because this is where things can go sideways):
# mtd -p 0x0 write openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0
Unlocking /dev/mtd0 ...
Writing from openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin to /dev/mtd0 ...
# mtd -p 0x20000 write openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0
Unlocking /dev/mtd0 ...
Seeking on mtd device '/dev/mtd0' to: 131072
Writing from openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin to /dev/mtd0 ...
# mtd -p 0x40000 write openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0
Unlocking /dev/mtd0 ...
Seeking on mtd device '/dev/mtd0' to: 262144
Writing from openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin to /dev/mtd0 ...
# mtd -p 0x60000 write openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0
Unlocking /dev/mtd0 ...
Seeking on mtd device '/dev/mtd0' to: 393216
Writing from openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin to /dev/mtd0 ...
# sync
- Lastly, we check that we have indeed loaded the proper image:
# grep "(release)" /dev/mtd0ro
v2.4(release):OpenWrt v2021-05-08-d2c75b21-3 (mt7622-snand-1ddr)
v2.4(release):OpenWrt v2021-05-08-d2c75b21-3 (mt7622-snand-1ddr)
v2.4(release):OpenWrt v2021-05-08-d2c75b21-3 (mt7622-snand-1ddr)
v2.4(release):OpenWrt v2021-05-08-d2c75b21-3 (mt7622-snand-1ddr)
All that's left to do is cross your fingers and reboot.
! WARNING ! ATTENTION ! NOTE ! ThisMeansYou ! - If something doesn't go properly and the router doesn't reboot, you will most likely need to connect via a TTL UART for recovery.