OpenWrt support for Linksys MX4200

Hmm maybe it may work

Have tried it, unfortunately no change from what I can see?

Yeah it hasn't switched to mtd24 you need to do that thing I said before

Alright, I've tried to do so, but I don't seem to be able to get it to work. The router just doesn't respond? Then I have to turn it off and on again on the 4th try and it boots into OpenWrt again, but the same partition as before?

So, just to confirm, all that's left to do is get the WiFi radios up. And that's because the firmware files are on mtd24, which is alt_rootfs? I'm not sure I'm fully on the same page though. Is the OpenWrt that boots on the rootfs partition, mtd22? And that's what was flashed when going from Stock -> OpenWrt? So whenever I do a sysupgrade it's NOT upgrading the OpenWrt that's currently installed, but instead flashing the alt_rootfs that we can't boot into..?

Tue Sep 19 08:14:02 2023 kern.warn kernel: [    9.912432] ath11k c000000.wifi: qmi ignore invalid mem req type 3
Tue Sep 19 08:14:02 2023 kernel: [    9.919922] ath11k c000000.wifi: chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff
Tue Sep 19 08:14:02 2023 kernel: [    9.919976] ath11k c000000.wifi: fw_version 0x290104a5 fw_build_timestamp 2023-08-02 20:32 fw_build_id WLAN.HK.
Tue Sep 19 08:14:02 2023 kern.err kernel: [   10.068950] ath11k c000000.wifi: failed to fetch board data for bus=ahb,qmi-chip-id=0,qmi-board-id=255,variant=Linksys-MX4200 from ath11k/IPQ8074/hw2.0/board-2.bin
Tue Sep 19 08:14:02 2023 kern.err kernel: [   10.069018] ath11k c000000.wifi: failed to fetch board data for bus=ahb,qmi-chip-id=0,qmi-board-id=255 from ath11k/IPQ8074/hw2.0/board-2.bin
Tue Sep 19 08:14:02 2023 kern.err kernel: [   10.082471] ath11k c000000.wifi: failed to fetch board.bin from IPQ8074/hw2.0
Tue Sep 19 08:14:02 2023 kern.warn kernel: [   10.095261] ath11k c000000.wifi: qmi failed to fetch board file: -12
Tue Sep 19 08:14:02 2023 kern.warn kernel: [   10.102281] ath11k c000000.wifi: failed to load board data file: -12

That is correct as far as I understand it.

In fact according to some docs for other Linksys routers the recommended way of updating OpenWRT is in fact to never use sysupgrade but instead force a reboot into the OEM firmware and use that to flash. That might be very old advice though:

That's a bit late for you though! You could try using your working OpenWRT install to flash the OEM firmware to the alt_rootfs and then use that installation to flash over the rootfs.

Oh that might be interesting!

So from your boot log of your working OpenWRT firmware @MrAlex94 I see this:

[    2.807606] ubi0: background thread "ubi_bgt0d" started, PID 514
[    2.808085] block ubiblock0_0: created from ubi0:0(kernel)
[    2.823583] block ubiblock0_1: created from ubi0:1(rootfs)

and from the broken sysupgrade installation boot log posted on Github I see this:

[    2.790098] ubi0: background thread "ubi_bgt0d" started, PID 513
[    2.790581] block ubiblock0_0: created from ubi0:0(rooβ–’[    2.811394] Waiting for root device /dev/ubiblock0_1...

Now, to me that looks like it has flashed the rootfs to ubiblock0_0 whereas in the working installation ubiblock0_0 is the kernel. Could this be the issue? The sysupgrade is flashing the kernel and rootfs the wrong way around? Or could it be due to the overlapping kernel + rootfs?

Could probably be due to the overlap

1 Like

There is logic to handle the overlap when writing though it looks like:

Though maybe we haven't got it configured correctly somewhere for this logic to work.

Damn hope I haven't bricked anything according to the message there lol

Well... the other firmware is bricked :sweat_smile: It won't boot. But to be truly bricked you'd need to do it to both firmwares! Thank goodness for dual firmwares! :stuck_out_tongue_winking_eye:

Yeah it's recoverable, done it by hosting a server with an IP and boom flashes stock

What are the steps for that?

Can someone try with bootargs-append = " ubi.block=0,1 root=/dev/ubiblock0_1? Again, not sure that it'll work and if it does then I don't understand why it works without it on first flash... But hey ho!

(and if it doesn't work then I maybe understand why it doesn't :sweat_smile:)

I've ordered myself a spare MX4200 so will have more of a play myself when it arrives.

Edit: actually pretty sure that won't help... but it might...

1 Like

If I'm free I'll see if I can do it

Setup a server with with Port 69 iirc, then rename stock fw to chiron.img, and then in the router uboot mode 'run flashimg Chiron.img'

Some serious dedication bought a new router for one bug lol

I'm a tinker-er... what can I say.

Ah, need to use the serial port for that, right?

To enter uboot yeah

This also concerns me in comparing the bootlog from the working OpenWRT

[    2.784918] ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128

to the broken one

[    2.767426] ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128

Not sure why the number of volumes would be different? Or maybe that isn't what that means? Maybe a difference between booting from boot_part 1 vs 2?