In May of 2025, Mikrotik released RouterOS v7.19.6. Among the changed, it has this:
routerboot - fixed load of other kernels (e.g. OpenWrt) on NAND-less boards with MT762x, IPQ40xx, QCA955x and QCA953x CPUs ("/system routerboard upgrade" required);
I recently bought a MikroTik mAP lite that ended up being v3 and factory flashed with RouterOS v7, so I tried to see how far I could get. I upgraded RouterOS, followed the common procedures for Mikrotik, setting “Try ethernet once then NAND” and “Force Backup Booter.”
I was able to boot using the mapl initramfs for 24.10.3. When I tried flashing with sysupgrade, it didn’t work, and RouterOS started again.
I repeated the procedure, and noticed there wasn’t much free memory before running sysupgrade. I stopped and killed a few things, but that still didn’t leave me with much more than the size of the full image. I went back through old releases for major versions, starting with 21. All were able to boot, and they all had much more free memory. I think I was able to flash older and newer versions, but none booted. RouterOS isn’t booting, either. The bootloader just goes to a network boot.
While it was booted, I grabbed the output of dmesg, logread, /proc/mtd, and a few more things.
My guess is that it’s a bootloader issue since network boot works.
dmesg:
root@OpenWrt:~# dmesg
[ 0.000000] Linux version 6.6.104 (builder@buildhost) (mips-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r28872-daca7c049b) 13.3.0, GNU ld (GNU Binutils) 2.42) #0 Fri Sep 19 21:19:38 2025
[ 0.000000] printk: bootconsole [early0] enabled
[ 0.000000] CPU0 revision is: 00019374 (MIPS 24Kc)
[ 0.000000] MIPS: machine is MikroTik RouterBOARD mAPL-2nD (mAP lite)
[ 0.000000] SoC: Qualcomm Atheros QCA9533 ver 2 rev 0
[ 0.000000] Initrd not found or empty - disabling initrd
[ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000000000000-0x0000000003ffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x0000000003ffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000003ffffff]
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Kernel command line: console=ttyS0,115200n8 rootfstype=squashfs,jffs2
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes, linear)
[ 0.000000] Writing ErrCtl register=00000000
[ 0.000000] Readback ErrCtl register=00000000
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 16240
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 50384K/65536K available (7783K kernel code, 600K rwdata, 988K rodata, 4828K init, 240K bss, 15152K reserved, 0K cma-reserved)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS: 51
[ 0.000000] CPU clock: 650.000 MHz
[ 0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 5880801374 ns
[ 0.000002] sched_clock: 32 bits at 325MHz, resolution 3ns, wraps every 6607641598ns
[ 0.008974] Calibrating delay loop... 432.53 BogoMIPS (lpj=2162688)
[ 0.076048] pid_max: default: 32768 minimum: 301
[ 0.093413] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.101749] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.120889] RCU Tasks Trace: Setting shift to 0 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=1.
[ 0.136632] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.147869] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[ 0.158820] pinctrl core: initialized pinctrl subsystem
[ 0.168156] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.175530] thermal_sys: Registered thermal governor 'step_wise'
[ 0.177450] /ahb/apb: Fixed dependency cycle(s) with /ahb/apb/interrupt-controller@18060010
[ 0.207482] clocksource: Switched to clocksource MIPS
[ 0.226263] NET: Registered PF_INET protocol family
[ 0.232151] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear)
[ 0.242093] tcp_listen_portaddr_hash hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.251780] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.260593] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.269308] TCP bind hash table entries: 1024 (order: 1, 8192 bytes, linear)
[ 0.277346] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.285403] MPTCP token hash table entries: 512 (order: 0, 6144 bytes, linear)
[ 0.293972] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.301449] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.310493] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.316986] PCI: CLS 0 bytes, default 32
[ 0.929446] workingset: timestamp_bits=14 max_order=14 bucket_order=0
[ 0.938863] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.945504] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.965759] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 0.978873] pinctrl-single 1804002c.pinmux: 576 pins, size 72
[ 0.987005] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[ 1.000061] printk: console [ttyS0] disabled
[ 1.005463] 18020000.uart: ttyS0 at MMIO 0x18020000 (irq = 10, base_baud = 1562500) is a 16550A
[ 1.015475] printk: console [ttyS0] enabled
[ 1.024554] printk: bootconsole [early0] disabled
[ 1.052797] spi-nor spi0.0: w25q128jv (16384 Kbytes)
[ 1.058171] 2 fixed-partitions partitions found on MTD device spi0.0
[ 1.064782] OF: Bad cell count for /ahb/spi@1f000000/flash@0/partitions
[ 1.071680] OF: Bad cell count for /ahb/spi@1f000000/flash@0/partitions
[ 1.078929] OF: Bad cell count for /ahb/spi@1f000000/flash@0/partitions
[ 1.085797] OF: Bad cell count for /ahb/spi@1f000000/flash@0/partitions
[ 1.092922] Creating 2 MTD partitions on "spi0.0":
[ 1.097977] 0x000000000000-0x000000020000 : "RouterBoot"
[ 1.106293] 5 routerbootpart partitions found on MTD device RouterBoot
[ 1.113131] Creating 5 MTD partitions on "RouterBoot":
[ 1.118463] 0x000000000000-0x00000000e000 : "bootloader1"
[ 1.137956] 0x00000000e000-0x00000000f000 : "hard_config"
[ 1.147965] 0x00000000f000-0x000000010000 : "bios"
[ 1.167990] 0x000000010000-0x00000001f000 : "bootloader2"
[ 1.174994] 0x00000001f000-0x000000020000 : "soft_config"
[ 1.664717] 0x000000020000-0x000001000000 : "firmware"
[ 1.671066] MiNOR YAFFS first type not matched
[ 7.046435] switch0: Atheros AR8229 rev. 1 switch registered on mdio.0
[ 7.099216] ag71xx-legacy 19000000.eth: invalid MAC address, using random address
[ 7.518712] ag71xx-legacy 19000000.eth: connected to PHY at mdio.0:1f:00 [uid=004dd042, driver=Qualcomm Atheros QCA9561 built-in PHY]
[ 7.531998] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode: mii
[ 7.538837] ath79-wdt 18060008.wdt: timeout value must be 0 < timeout < 14, using 14
[ 7.550848] MikroTik RouterBOARD hardware configuration sysfs driver v0.08
[ 7.559773] MikroTik RouterBOARD software configuration sysfs driver v0.05
[ 7.569105] NET: Registered PF_INET6 protocol family
[ 7.584350] Segment Routing with IPv6
[ 7.588335] In-situ OAM (IOAM) with IPv6
[ 7.592576] NET: Registered PF_PACKET protocol family
[ 7.597901] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 7.614089] 8021q: 802.1Q VLAN Support v1.8
[ 7.666014] clk: Disabling unused clocks
[ 7.697240] Freeing unused kernel image (initmem) memory: 4828K
[ 7.703414] This architecture does not have kernel memory protection.
[ 7.710079] Run /init as init process
[ 7.713857] with arguments:
[ 7.713863] /init
[ 7.713869] with environment:
[ 7.713874] HOME=/
[ 7.713880] TERM=linux
[ 8.557760] init: Console is alive
[ 8.561745] init: - watchdog -
[ 8.584895] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[ 8.596128] gpio_button_hotplug: loading out-of-tree module taints kernel.
[ 8.608064] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[ 8.626233] init: - preinit -
[ 11.347517] random: crng init done
[ 14.030380] eth0: link up (100Mbps/Full duplex)
[ 16.153763] eth0: link down
[ 16.173949] procd: - early -
[ 16.177297] procd: - watchdog -
[ 16.809248] procd: - watchdog -
[ 16.812901] procd: - ubus -
[ 16.872341] procd: - init -
[ 17.816468] kmodloader: loading kernel modules from /etc/modules.d/*
[ 19.403395] Loading modules backported from Linux version v6.12.44-0-g11a24528d080
[ 19.411306] Backport generated by backports.git v6.1.110-1-35-g410656ef
[ 19.695741] PPP generic driver version 2.4.2
[ 19.718651] NET: Registered PF_PPPOX protocol family
[ 19.796424] ath9k 18100000.wmac: Direct firmware load for ath9k-eeprom-ahb-18100000.wmac.bin failed with error -2
[ 19.807117] ath9k 18100000.wmac: Falling back to sysfs fallback for: ath9k-eeprom-ahb-18100000.wmac.bin
[ 20.274116] ath: EEPROM regdomain: 0x0
[ 20.274154] ath: EEPROM indicates default country code should be used
[ 20.274161] ath: doing EEPROM country->regdmn map search
[ 20.274178] ath: country maps to regdmn code: 0x3a
[ 20.274187] ath: Country alpha2 being used: US
[ 20.274195] ath: Regpair used: 0x3a
[ 20.286395] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[ 20.287434] ieee80211 phy0: Atheros AR9531 Rev:2 mem=0xa43737a1, irq=11
[ 20.357943] kmodloader: done loading kernel modules from /etc/modules.d/*
[ 21.156505] urngd: v1.0.2 started.
[ 62.898906] br-lan: port 1(eth0) entered blocking state
[ 62.904344] br-lan: port 1(eth0) entered disabled state
[ 62.909870] ag71xx-legacy 19000000.eth eth0: entered allmulticast mode
[ 62.916955] ag71xx-legacy 19000000.eth eth0: entered promiscuous mode
[ 64.990518] eth0: link up (100Mbps/Full duplex)
[ 64.997317] br-lan: port 1(eth0) entered blocking state
[ 65.002815] br-lan: port 1(eth0) entered forwarding state
root@OpenWrt:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00010000 "RouterBoot"
mtd1: 0000e000 00010000 "bootloader1"
mtd2: 00001000 00010000 "hard_config"
mtd3: 00001000 00010000 "bios"
mtd4: 0000f000 00010000 "bootloader2"
mtd5: 00001000 00010000 "soft_config"
mtd6: 00fe0000 00010000 "firmware"
root@OpenWrt:~# ubinfo
UBI version: 1
Count of UBI devices: 0
UBI control device major/minor: 10:127
root@OpenWrt:~# cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='24.10.3'
DISTRIB_REVISION='r28872-daca7c049b'
DISTRIB_TARGET='ath79/mikrotik'
DISTRIB_ARCH='mips_24kc'
DISTRIB_DESCRIPTION='OpenWrt 24.10.3 r28872-daca7c049b'
DISTRIB_TAINTS=''
root@OpenWrt:~# cat /etc/openwrt_version
r28872-daca7c049b
root@OpenWrt:~# cat /tmp/sysinfo/board_name
mikrotik,routerboard-mapl-2nd
root@OpenWrt:~# cat /tmp/sysinfo/model
MikroTik RouterBOARD mAPL-2nD (mAP lite)
root@OpenWrt:~# cat /proc/cpuinfo
system type : Qualcomm Atheros QCA9533 ver 2 rev 0
machine : MikroTik RouterBOARD mAPL-2nD (mAP lite)
processor : 0
cpu model : MIPS 24Kc V7.4
BogoMIPS : 432.53
wait instruction : yes
microsecond timers : yes
tlb_entries : 16
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16
Options implemented : tlb 4kex 4k_cache prefetch mcheck ejtag llsc dc_aliases perf_cntr_intr_bit perf mm_full
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available