Today I upgraded from OpenWRT 24.10.5 to 25.12.4. The first attempt to upgrade failed, so I went through TFTP and flashed the factory image.
Now my data is no longer persistent. After some fiddeling around I found this log entry:
root@OpenWrt:~# logread | grep -i overlay
Wed May 13 22:42:48 2026 user.warn kernel: [ 14.223899] mount_root: no usable overlay filesystem found, using tmpfs overlay
Wed May 13 22:43:38 2026 daemon.err mount_root: failed - mount -t jffs2 /dev/mtdblock5 /rom/overlay: Invalid argument
Which explains it. Now the question is how to fix it?
What I tried so far and did not help:
- Reflash via TFTP
- Flash via sysupgrade
factoryreset:/dev/mtdblock5 is not mounted; /dev/mtdblock5 will be erased on next mountmount -t jffs2 /dev/mtdblock5 /mnt:mount: mounting /dev/mtdblock5 on /mnt failed: Invalid argumentmtd erase rootfs_data:Unlocking rootfs_data ...; Erasing rootfs_data ...
The router is an TPLink Archer C6 v2 EU and I used the firmware selector to build an image with kmod-ath10k instead of kmod-ath10k-ct, ath10k-firmware-qca9888 instead of ath10k-firmware-qca9888-ct and wpad-mesh-mbedtls instead of wpad-basic-mbedtls.
My current workaround is to use uci-defaults to configure the router on every boot.
ubus call system board
{
"kernel": "6.12.87",
"hostname": "OpenWrt",
"system": "Qualcomm Atheros QCA956X ver 1 rev 0",
"model": "TP-Link Archer C6 v2 (EU/RU/JP)",
"board_name": "tplink,archer-c6-v2",
"rootfs_type": "squashfs",
"release": {
"distribution": "OpenWrt",
"version": "25.12.4",
"firmware_url": "https://downloads.openwrt.org/",
"revision": "r32933-4ccb782af7",
"target": "ath79/generic",
"description": "OpenWrt 25.12.4 r32933-4ccb782af7",
"builddate": "1778712129"
}
}
cat /proc/cpuinfo
system type : Qualcomm Atheros QCA956X ver 1 rev 0
machine : TP-Link Archer C6 v2 (EU/RU/JP)
processor : 0
cpu model : MIPS 74Kc V5.0
BogoMIPS : 385.84
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp dsp2
Options implemented : tlb 4kex 4k_cache prefetch mcheck ejtag llsc dc_aliases perf_cntr_intr_bit cdmm contextconfig perf mm_full
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00010000 "u-boot"
mtd1: 00010000 00010000 "info"
mtd2: 007a0000 00010000 "firmware"
mtd3: 0029cb1f 00010000 "kernel"
mtd4: 005034e1 00010000 "rootfs"
mtd5: 00030000 00010000 "rootfs_data"
mtd6: 00020000 00010000 "tplink"
mtd7: 00010000 00010000 "art"
mount
/dev/root on /rom type squashfs (ro,relatime,errors=continue)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
tmpfs on /tmp/root type tmpfs (rw,noatime,mode=755)
overlayfs:/tmp/root on / type overlay (rw,noatime,lowerdir=/,upperdir=/tmp/root/upper,workdir=/tmp/root/work,uuid=on)
tmpfs on /dev type tmpfs (rw,nosuid,noexec,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,noatime)
bpffs on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,noatime,mode=700)