It is strange that enabling WED seems to affect anything without having firewall HW offloading enabled. Is bridger
enabling PPE by itself? BTW, I tested again bridger
with several large transfers between wired and wireless clients and the old issue with bridger
stuck and holding a core at 100% is no longer present (using latest master builds)
It gave me error when trying to set MTU higher for lan1-lan4 or eth0.
Where can I get a snapshot build that contains this patch? Thanks
Once it's pulled into 22.03 then from 22.03 branch .
I'm building from master on my devices, not sure you can do the same.
I was on an RC, I think RC4. I tried to update to the latest stable release 22.03.1 by downloading the sysupgrade.bin (The file name is "openwrt-22.03.1-mediatek-mt7622-linksys_e8450-squashfs-sysupgrade.bin"), and flashing it. It said that it was not a compatible image, and it gave me the option to force. I was pretty sure that it was the right image, so I forced it. I guess that was a mistake!
Now I can only access the recovery image. I don't know if this is useful information, but it says that the recovery image is: "OpenWrt SNAPSHOT r17758-b118efa0d2". I've since noticed that there are .bin files and .itb files. No matter which image I try to flash now, itb or bin, it always returns me to the recovery image. Some images need to be forced, some don't.
This is weird, because I've been using OpenWRT on this thing for a long time. What has changed, and how do I fix it?
Thanks.
BTW, should the openwrt info page be changed a little now that there's a stable image for this router? Do new users still need to go through the UBI stuff? Should they still use Dango's installer? What about old users that are upgrading? I feel lost with this router in a way that I haven't with older routers on OpenWRT.
You have used the non-UBI image and flashed it onto a device running UBI firmware. So that can't work as the operating system will not find its filesystem in the expected place. Use the recovery OS to flash the correct file (mind the word -ubi-
in the filename!) and everything should be fine.
I could do. Though I was rather hoping to be able to download a official build.
That's interesting. So the official build on the openwrt rt3200 info page isn't ubi? I thought UBI was required since late 2021. Is that not true anymore? It does say that on the info page. I think that info page should have an "if" statement, as in if you converted to UBI, then use x image, if not, use y image. I think it's a wiki so I could do it, but I'm kind of confused about how it works and will probably get it wrong.
In fact, maybe it'd be better to go back to a non-UBI layout, so one could simply flash the image provided on the info page? Don't know if that's possible though.
I'll try to flash again in a bit. Away from my computer ATM.
Okay, that didn't work. I flashed both of the following files:
openwrt-22.03.1-mediatek-mt7622-mediatek_mt7622-rfb1-ubi-squashfs-sysupgrade.bin
openwrt-22.03.1-mediatek-mt7622-mediatek_mt7622-rfb1-ubi-squashfs-factory.bin
After each flash and reboot, it returns to the initramfs recovery image. I may have really broken this thing. Something to note is that I have to use the "Force" option each time I do this.
Could I be haunted by an incompatible config somewhere? I would think not, since I think it'd be overwritten on flash, but maybe not?
Do I need to completely start the process over again, and maybe try to re-convert to UBI? Is this possible? Would flashing "openwrt-mediatek-mt7622-linksys_e8450-ubi-initramfs-recovery-installer.itb" do it?
And why do some images use the itb file extension, and others use the .bin extenstion? There is a file extension page on the OpenWRT wiki, but it doesn't mention itb.
I had a similar issue with openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-initramfs-recovery.itb (I didn't try the most recent 22.03.1 initramfs-recovery.itb image).
I loaded that image for taking full backup of stock firmware of my RT3200. After taking the backups, when I power cycled the device (disconnect power adapter, wait 2 mins, connect back power adapter), the RT3200 still booted into the initramfs-recovery screen instead of the stock firmware. That seemed weird to me.
I think I did another power cycle which still did not work. I think I had to ssh into the RT3200 (running initramfs-recovery image) and reboot (maybe even 2 times, do not remember) and then I booted into stock firmware. At this point in time I hadn't yet run the UBI installer, so the only image stored in the flash memory was still the stock firmware.
I am still not sure how initramfs-recovery image survived a power cycle, since ideally that should have cleared the RAM completely.
EDIT: I had similar experience when I loaded iniramfs-recovery.itb image on running regular UBI image, to load back the stock firmware (using the full backup files). At that time also, the RT3200 booted back into initramfs-recovery after a power cycle, and may 2 power cycles and 2 reboot commands later it booted into the stock firmware.
ITB files are UBI images. BIN files are non-UBI images.
You had to start over again with the original firmware at some point? I think I'm screwed because I don't have the full backup files. I didn't think I'd ever go back to the factory firmware.
Ok, let's go over it one by one. The images you got on OpenWrt's download server, e.g. for the current/upcoming 22.03.1 release are:
filename | hash | size | date |
---|---|---|---|
linksys_e8450-initramfs-kernel.bin | f8602b7a... | 7969.7 KB | Mon Oct 10 02:05:10 2022 |
linksys_e8450-squashfs-sysupgrade.bin | bdb30501... | 8960.3 KB | Mon Oct 10 02:05:12 2022 |
linksys_e8450-ubi-bl31-uboot.fip | 5cc986fb... | 920.5 KB | Mon Oct 10 02:05:13 2022 |
linksys_e8450-ubi-initramfs-recovery.itb | f082c6b8... | 8064.0 KB | Mon Oct 10 02:05:11 2022 |
linksys_e8450-ubi-preloader.bin | 8546b969... | 65.9 KB | Mon Oct 10 02:05:13 2022 |
linksys_e8450-ubi-squashfs-sysupgrade.itb | 44f7b2fb... | 10028.3 KB | Mon Oct 10 02:05:12 2022 |
So there are multiple files for both, use with the vendor loader and everything needed to run the OpenWrt-built replacement bootloader.
As explained also in the Wiki, you have the choice of either running OpenWrt on top of the vendor bootloader or you run the installer once to replace the bootloader with a modernized version built from source which brings support for UBI.
For running with the stock loader and original vendor-defined flash partition layout:
-
*linksys_e8450-initramfs-kernel.bin
Kernel image with built-in minimal filesystem for recovery purpose -
*linksys_e8450-squashfs-sysupgrade.bin
Production firmware image compatible with the vendor firmware flash layout.
However, both don't work well due to incompatible error detection/correction data in the out-of-band areas of the NAND flash which causes read-errors when using the upstream/Linux hardware BCH ECC driver used also by OpenWrt.
Hence converting the device to UBI is the recommended way and once that's done, you will have to use the *linksys_e8450-ubi-squashfs-sysupgrade.itb
file for sysupgrade. Do not use images intended for other boards or the non-UBI variant. If you see a warning which you can only skip by using the force option, that usually means you picked the wrong image and it will not work.
-
linksys_e8450-ubi-bl31-uboot.fip
U-Boot bootloader. Usually you won't need to ever touch this once it has been written once by the installer. -
linksys_e8450-ubi-initramfs-recovery.itb
Kernel image with built-in minimal filesystem for recovery purpose -
linksys_e8450-ubi-preloader.bin
ARM Trusted Firmware bl2 loader. Usually you won't need to ever touch this once it has been written once by the installer. -
linksys_e8450-ubi-squashfs-sysupgrade.itb
Production firmware image using UBI.
Use this file to upgrade your router when running the UBI firmware!
I didn't have to start over again. I flashed back the stock firmware since I had to return the device.
I actually bought the RT3200 for a relative. But due to it's short range and the complexity of OpenWrt (he is good with IT stuff but not with networking) he has decided to either go with Dynalink DL-WRX36 (AX3600 router (my recommendation, based on the advertised range and the fact that there might be a way to flash OpenWrt in the future Dynalink DL-WRX36 Askey RT5010W IPQ8072A technical discussion ) or a mesh wifi setup.
Hah! It's working! I'm on OpenWrt 22.03.1! Thanks for your help! Now I need to configure PPOE and Wifi. I'm afraid to try my old backup config!
Edit:
I used my old config anyway, and it seems fine so far. I'm no longer tethered to my phone! Thanks again Daniel and @ka2107 !
Edit2:
Unfortunately, I'm not sure exactly what fixed the issue. No matter what I did, the recovery image kept showing up everytime I booted. The last steps I took were flashing "openwrt-22.03.1-mediatek-mt7622-linksys_e8450-ubi-squashfs-sysupgrade.itb", and when it booted up, it was still in recovery mode. Finally, I power cycled a couple of times like @ka2107 talked about, and suddenly I was in 22.03.1 (non-recovery).
You likely had a few kernel crash error logs ("pstore files") in the debug file system in RAM (surviving a warm reboot).
If they are present, the router boots into recovery.
A hard power-off clears the files from RAM, and magically you are in the normal mode.
@daniel has placed that logic into uboot for debug reasons. But for my production routers (at my relatives) I have removed that setting from uboot command strings, as it is a too hard regimen for laymen.
This morning my wifi completely died and I found out my Belkin RT3200 went into recovery mode. The web interface looked like the dangowrt installer instead of the official openwrt image's interface. Does this mean my kernel crashed? I was running 22.03.1 btw.
Also I thought flashing official openwrt would replace the recovery, but it appears that it doesn't? dangowrt is clearly hanging around somewhere.
Yes, that's what happened. If there are crashlogs in pstore, the bootloader starts the recovery image. There you should check and view (and share!) files in /sys/fs/pstore/*
so we can find out why you have experienced that crash.
As there is plenty of space there is a dual-boot mechanism in place with a recovery and a production image. Flashing new firmware updates the production image only. The recovery image is still there, and used as dual-boot option in case booting the production images fails or a kernel crash has happened.
If you want to replace or update the recovery image, this is possible by writing *linksys_e8450-ubi-initramfs-recovery.itb
to the UBI volume recovery
. Make sure the volume is large enough, you may have to delete rootfs_data
and/or limit the size of rootfs_data
using the rootfs_data_max
U-Boot environment variable.
Thanks! Will share crash logs if it ever happens again.
I am interested in updating this but I have a few questions.
- How do I go about writing the recovery image? Do I do this via the
Backup / Flash firmware
UI or do I need to SSH in for this? - If I write this recovery image, does it wipe the production image and I have to reflash that as well?
- How do I change the u-boot environment variable if I need to?
I tried to find a few guides on the wiki for this but my Google-fu wasn't strong enough. Any help appreciated.