Image Builder for ar71xx tiny build

Hi,

I'm trying to come up with a customized tiny build for WNR2000v1(4/32) and have several questions.

A) Is there a way to shrink uImage-lamz.bin. As shown below the size always stays at 1398132 and my goal is 1280k or 1310720, while the rootfs-squashfs.bin is much more manageable and it reacts to PACKAGES="-xyz" customization during make.

build1

-rw-r--r-- 1 1398132 Feb 18 00:03 openwrt-19.07.7-ar71xx-tiny-uImage-lzma.bin
-rw-r--r-- 1 1703936 Feb 18 00:04 openwrt-19.07.7-ar71xx-tiny-wnr2000-rootfs-squashfs.bin

build2

-rw-r--r-- 1 1398132 Feb 18 11:14 openwrt-19.07.7-ar71xx-tiny-uImage-lzma.bin
-rw-r--r-- 1 1966080 Feb 18 11:14 openwrt-19.07.7-ar71xx-tiny-wnr2000-rootfs-squashfs.bin

B) At one point I collected these logs. My question is: how's the offset of rootfs_data decided? Does it move around automatically when different sizes of rootfs-squashfs.bin images are written to the rootfs partition, or is it hardcoded?

setenv bootargs "board=WNR2000 console=ttyS0,115200 mtdparts=spi0.0:256k(u-boot)ro,
64k(u-boot-env)ro,3712k(firmware),64k(art)ro rootfstype=squashfs,jffs2 noinitrd"

[    0.804845] 0x000000000000-0x000000040000 : "u-boot"
[    0.812809] 0x000000040000-0x000000050000 : "u-boot-env"
[    0.820371] 0x000000050000-0x0000003f0000 : "firmware"
[    0.840447] 0x000000050000-0x0000002b0000 : "rootfs"
                       270000-0x0000002b0000 : "rootfs_data"
[    0.867001] 0x0000002b0000-0x0000003e79f7 : "kernel"
[    0.874322] 0x0000003f0000-0x000000400000 : "art"

mtd0: 00040000 "u-boot"
mtd1: 00010000 "u-boot-env"
mtd2: 003a0000 "firmware"
mtd3: 00260000 "rootfs"
mtd4: 00040000 "rootfs_data"
mtd5: 001379f7 "kernel"
mtd6: 00010000 "art"

Is this applicable mtdsplit

New partitions are usually some offset into the start of the original partition. The size and number of the “children” depends on what is detected. For example if SquashFS image is found then the rootfs partition is added. For SquashFS image the splitter also automatically adds rootfs_data to the list of the available mtd partitions, setting this partition's beginning to the first appropriate address after the SquashFS end and size to the remainder of the rootfs partition.

C) Since ar71xx is no longer in 19.07, how can we compile kernel/image from source? And how is the tiny build system made, source code anywhere? Like this?

  • uImage is the kernel image. The only way you shrink that is by compiling (using the buildroot), not by using the image generator (image builder).
  • Concerning offset: OpenWrt is limited to the OEM flash layout. I don't think the rootfs_dataoffset is actually calculated; OpenWrt just formats whatever's left of free space within the space it can operate in. Notice how that space starts at 0x50000 and ends at 0x3f0000, with the kernel claiming space from 0x2b0000 till the end of the 'partition'. Your rootfs will get written from 0x50000 and anything that remains after that, until 0x2b0000, is available for rootfs_data: that remaining space gets formatted as jffs2. If there's not enough space that doesn't happen and you're left with a system that cannot save settings.
  • 19.07 still has ar71xx (it's the only OpenWrt release having both ath79 and ar71xx images). So what are you talking about?

Compilation instructions can be found in the wiki, the tiny subtarget is a flag in the codebase that sets some options to shave some extra kB, and the source code is at git.openwrt.org?

I see it now it's under the 19.07 branch. Sounds like not only the tiny build but also the ar71xx altogether will be removed from next major release.

All my questions are answered. Thank you very much!

1 Like

If ath79 (the target ar71xx is being replaced by) supports your board, you can switch to that. Images are disabled by default for 4/32 images as of upcoming 21.02 (and in current master), but you can still re-enable it yourself and compile. The developers made the call just to disable the 4/32 devices, but the supporting code is still there for those who want to try their hand at it.

1 Like

If your problem is solved, please consider marking this topic as [Solved]. See How to mark a topic as [Solved] for a short how-to.

If ath79 replaces ar71xx, then I assume that they can support the same physical devices, just that the accompanying scripts may need to be updated(e.g. init parameters, device name presented to users). Is that correct? I wasn't sure why the transition from ar71xx to ath79 appears to require lots of effort i.e. done one by one, per model. What exactly needs to be done?

How to enable 4/32 in master?

How does initramfs plus rootfs on iscsi sound?

The biggest change is it's DTS based. So you need to write a device tree. And adapt your code to the newer kernel. From what I can see there is only a v3 in ath79, not your v1, so it would need porting. If you're lucky, there's devices (maybe the v3?) with a similar flash layout and whatnot, and you can pull from existing / split out new DTSIs etc.

You'll see the 4/32 have a DEFAULT := n line, when you remove that you'll be able to build images for them. You can still send your patch in for inclusion into the tree AFAIK, but you'll need to add that line by default for 4/32 devices.

The majority of what you need you should be able to get from the original commit adding support into ar71xx (commit fd62fa752b).

The DTS file alone throws me off. I have no idea about: which chipset specific dtsi file to include, the wps, the led, the pcie ... just to name a few.
openwrt/ar7241_netgear_wnr2000-v3.dts at · openwrt/openwrt (github.com)

Yes I run into that commit earlier. The file trace suggests perhaps this device was first supported in maybe LEDE then got merged into OpenWRT.
git.openwrt.org target/linux/ar71xx/files/arch/mips/ath79/mach-wnr2000.c

Thanks for explaining. I understand everything you say yet I see too many obstacles ahead. I used to compile x86 kernel from source long time ago somehow OpenWRT's build system appears more complicated to me. The best I can do at the moment is to play with ImageBuilder and I come up with this build:

make image PROFILE=WNR2000 PACKAGES="-dnsmasq -firewall -fstools -ip6tables -iptables -odhcp6c -odhcpd-ipv6only -ppp -ppp-mod-pppoe -opkg ip-full tcpdump lua luasocket iw ethtool"

Building images for ar71xx - NETGEAR WNR2000V1
Packages: ip-full tcpdump lua luasocket iw ethtool base-files busybox dropbear kernel kmod-ath9k kmod-gpio-button-hotplug kmod-ipt-offload libc libgcc logd mtd netifd swconfig uboot-envtools uci uclient-fetch urandom-seed urngd wpad-mini

-rw-r--r-- 1 1398132 Feb 18 19:54 openwrt-19.07.7-ar71xx-tiny-uImage-lzma.bin
-rw-r--r-- 1 2228224 Feb 18 19:54 openwrt-19.07.7-ar71xx-tiny-wnr2000-rootfs-squashfs.bin
1 Like

I could take a look at cobbling a DTS together but your need to have serial to test initial images from RAM (if you were to flash a bad image you'd have a brick; if you not that same image from ram all you'd have to do is pull the power plug and reboot and nothing happened).

@ppmm Are you booting from RAM or did you flash OpenWrt? The wiki instructions for the v1 seem to suggest it can only run OpenWrt from RAM.

According to Wiki and I follow that exactly, one has to have serial and it will work: initramfs or rootfs. Though everything in Wiki seems to be directly from the original developer who produced the patch to support this device years ago and I wonder if there's better way to flash.

Anyway my past attempt is here. I can test any image you make, as long as the combined file size does not exceed 3712k or 3801088 after the files are 64k aligned. I believe somehow 64k is the erase size.

Alright. Can you share a dump of your ART partition? I'm looking into building a DTS.

ART is uploaded.

1 Like

(2228224 is 0x220000)

I load my build, rootfs starts at 0x050000 and I expect it to occupy till 0x270000 while kernel starts at 0x290000. That said rootfs_data should be between 0x270000 and 0x290000 but log shows that rootfs_data is between 0x260000-0x290000. Is rootfs.bin not as big(0x220000) as it seems and could be using 64k less? What is happening here?

[    0.912885] 0x000000260000-0x000000290000 : "rootfs_data"
[   47.800823] jffs2: Too few erase blocks (3)
-rw-r--r-- 1 root  root  2228224 Feb 19 10:29 sqfs.bin
-rw-r--r-- 1 root  root  1398132 Feb 19 10:29 uImage.bin
boot log

ar7100> reset

Resetting...ďż˝

U-Boot 1.1.4.15 (Jan 13 2011 - 13:00:15)

AP81 (ar7100) U-boot
sri
32 MB
Top of RAM usable for U-Boot at: 82000000
Reserving 244k for U-Boot at: 81fc0000
Reserving 192k for malloc() at: 81f90000
Reserving 44 Bytes for Board Info at: 81f8ffd4
Reserving 36 Bytes for Global Data at: 81f8ffb0
Reserving 128k for boot params() at: 81f6ffb0
Stack Pointer at: 81f6ff98
Now running in RAM - U-Boot at: 81fc0000
id read 0x100000ff
flash size 4MB, sector count = 64
Flash: 4MB
In: serial
Out: serial
Err: serial
Net: ag7100_enet_initialize...
Fetching MAC Address from 0x81fea700
: cfg1 0xf cfg2 0x7114
eth0: 00:22:3f:0d:06:12
dup 1 speed 100
eth0 up
eth0

main_loop entered: bootdelay=4

main_loop: bootcmd="bootm 0xbf290000"

Hit any key to stop autoboot: 0

Client starts...[Listening] for ADVERTISE...TTT
Retry count exceeded; boot the image as usual

nmrp server is stopped or failed !

Booting image at bf290000 ...

Image Name: MIPS OpenWrt Linux-4.14.221
Created: 2021-02-19 15:09:14 UTC
Image Type: MIPS Linux Kernel Image (lzma compressed)
Data Size: 1398068 Bytes = 1.3 MB
Load Address: 80060000
Entry Point: 80060000
Verifying Checksum ... OK
Uncompressing Kernel Image ...OK
No initrd

Transferring control to Linux (at address 80060000) ...

Giving linux memsize in bytes, 33554432

Starting kernel ...

[ 0.000000] Linux version 4.14.221 (builder@buildhost) (gcc version 7.5.0 (OpenWrt GCC 7.5.0 r11306-c4a6851c72)) #0 Mon Feb 15 15:22:37 2021
[ 0.000000] bootconsole [early0] enabled
[ 0.000000] CPU0 revision is: 00019374 (MIPS 24Kc)
[ 0.000000] SoC: Atheros AR9132 rev 1
[ 0.000000] Determined physical RAM map:
[ 0.000000] memory: 02000000 @ 00000000 (usable)
[ 0.000000] User-defined physical RAM map:
[ 0.000000] memory: 02000000 @ 00000000 (usable)
[ 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-0x0000000001ffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x0000000001ffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000001ffffff]
[ 0.000000] random: get_random_bytes called from 0x804636ec with crng_init=0
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 8128
[ 0.000000] Kernel command line: board=WNR2000 console=ttyS0,115200 mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,3712k(firmware),64k(art)ro rootfstype=squashfs,jffs2 noinitrd mem=32M rootfstype=squashfs noinitrd
[ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes)
[ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Writing ErrCtl register=00000000
[ 0.000000] Readback ErrCtl register=00000000
[ 0.000000] Memory: 27480K/32768K available (3459K kernel code, 177K rwdata, 464K rodata, 244K init, 207K bss, 5288K 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] Clocks: CPU:400.000MHz, DDR:400.000MHz, AHB:200.000MHz, Ref:40.000MHz
[ 0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 9556302233 ns
[ 0.000013] sched_clock: 32 bits at 200MHz, resolution 5ns, wraps every 10737418237ns
[ 0.007920] Calibrating delay loop... 265.42 BogoMIPS (lpj=1327104)
[ 0.094159] pid_max: default: 32768 minimum: 301
[ 0.099076] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.105683] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.115887] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.125753] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.133544] NET: Registered protocol family 16
[ 0.139960] MIPS: machine is NETGEAR WNR2000
[ 0.660139] clocksource: Switched to clocksource MIPS
[ 0.666593] NET: Registered protocol family 2
[ 0.672269] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.679244] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.685664] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.692223] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.698063] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.704671] NET: Registered protocol family 1
[ 0.712990] Crashlog allocated RAM at address 0x1f00000
[ 0.719882] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[ 0.734310] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.740177] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.762546] io scheduler noop registered
[ 0.766464] io scheduler deadline registered (default)
[ 0.772197] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[ 0.781694] console [ttyS0] disabled
[ 0.805312] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11, base_baud = 12500000) is a 16550A
[ 0.814018] console [ttyS0] enabled
[ 0.814018] console [ttyS0] enabled
[ 0.821046] bootconsole [early0] disabled
[ 0.821046] bootconsole [early0] disabled
[ 0.837991] m25p80 spi0.0: found mx25l3205d, expected m25p80
[ 0.844692] m25p80 spi0.0: mx25l3205d (4096 Kbytes)
[ 0.849640] 4 cmdlinepart partitions found on MTD device spi0.0
[ 0.855646] Creating 4 MTD partitions on "spi0.0":
[ 0.860490] 0x000000000000-0x000000040000 : "u-boot"
[ 0.867733] 0x000000040000-0x000000050000 : "u-boot-env"
[ 0.875020] 0x000000050000-0x0000003f0000 : "firmware"
[ 0.888764] 2 uimage-fw partitions found on MTD device firmware
[ 0.894804] 0x000000050000-0x000000290000 : "rootfs"
[ 0.900875] mtd: device 3 (rootfs) set to be root filesystem
[ 0.906605] 1 squashfs-split partitions found on MTD device rootfs
[ 0.912885] 0x000000260000-0x000000290000 : "rootfs_data"
[ 0.919334] 0x000000290000-0x0000003e5574 : "kernel"
[ 0.928074] 0x0000003f0000-0x000000400000 : "art"
[ 0.936016] libphy: Fixed MDIO Bus: probed
[ 0.962890] libphy: ag71xx_mdio: probed
[ 1.302310] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode: rmii
[ 1.641720] ag71xx ag71xx.1: connected to PHY at ag71xx-mdio.0:04 [uid=004dd042, driver=Generic PHY]
[ 1.651800] eth1: Atheros AG71xx at 0xba000000, irq 5, mode: rmii
[ 1.660493] NET: Registered protocol family 10
[ 1.671222] Segment Routing with IPv6
[ 1.675044] NET: Registered protocol family 17
[ 1.679581] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 1.693345] 8021q: 802.1Q VLAN Support v1.8
[ 1.706983] VFS: Mounted root (squashfs filesystem) readonly on device 31:3.
[ 1.715662] Freeing unused kernel memory: 244K
[ 1.720179] This architecture does not have kernel memory protection.
[ 2.590153] random: fast init done
[ 4.283341] init: Console is alive
[ 4.287091] init: - watchdog -
[ 5.076870] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[ 5.352047] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[ 5.370386] init: - preinit -
[ 7.560632] eth0: link up (100Mbps/Full duplex)
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[ 7.934935] random: procd: uninitialized urandom read (4 bytes read)
[ 11.888844] mount_root: no usable overlay filesystem found, using tmpfs overlay
[ 11.919045] urandom-seed: Seed file not found (/etc/urandom.seed)
[ 12.371261] eth0: link down
[ 12.389389] procd: - early -
[ 12.393485] procd: - watchdog -
[ 13.255277] procd: - watchdog -
[ 13.258832] procd: - ubus -
[ 13.312108] random: ubusd: uninitialized urandom read (4 bytes read)
[ 13.319086] random: ubusd: uninitialized urandom read (4 bytes read)
[ 13.325679] random: ubusd: uninitialized urandom read (4 bytes read)
[ 13.333355] procd: - init -
Please press Enter to activate this console.
[ 15.138600] urandom_read: 4 callbacks suppressed
[ 15.138612] random: jshn: uninitialized urandom read (4 bytes read)
[ 15.428549] random: ubusd: uninitialized urandom read (4 bytes read)
[ 15.790629] kmodloader: loading kernel modules from /etc/modules.d/*
[ 15.799512] Loading modules backported from Linux version v4.19.161-0-gdaefdc9eb24b
[ 15.807313] Backport generated by backports.git v4.19.161-1-0-g4bb568fe
[ 15.845570] nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
[ 15.912643] xt_time: kernel timezone is -0000
[ 15.963005] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 16.189800] ieee80211 phy0: Atheros AR9100 MAC/BB Rev:7 AR2133 RF Rev:a1 mem=0xb80c0000, irq=2
[ 16.740628] kmodloader: done loading kernel modules from /etc/modules.d/*
[ 16.926509] urngd: v1.0.2 started.
[ 17.645298] random: crng init done
[ 47.800823] jffs2: Too few erase blocks (3)
[ 49.903667] eth0: link up (100Mbps/Full duplex)
[ 49.920654] br-lan: port 1(eth0) entered blocking state
[ 49.925930] br-lan: port 1(eth0) entered disabled state
[ 49.931666] device eth0 entered promiscuous mode
[ 49.949614] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[ 50.004354] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 51.236137] br-lan: port 1(eth0) entered blocking state
[ 51.241458] br-lan: port 1(eth0) entered forwarding state
[ 51.270376] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready

BusyBox v1.30.1 () built-in shell (ash)


| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -| || | | || || |
|
_____|| |
||||___||| |____|
|
| W I R E L E S S F R E E D O M

OpenWrt 19.07.7, r11306-c4a6851c72

=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.

root@OpenWrt:/#
root@OpenWrt:/#

That's what's happening. See my first reply, point #2.

It is better now. Offset of rootfs_data is still off but is consistently off by 64k as before.

Summary

-rw-r--r-- 1 root root 1703936 Feb 19 11:37 sqfs.bin (0x1a * 64k)
-rw-r--r-- 1 root root 1398132 Feb 19 11:36 uImage.bin

[ 0.860636] 0x000000000000-0x000000040000 : "u-boot"
[ 0.867911] 0x000000040000-0x000000050000 : "u-boot-env"
[ 0.875161] 0x000000050000-0x0000003f0000 : "firmware"
[ 0.888904] 2 uimage-fw partitions found on MTD device firmware
[ 0.894937] 0x000000050000-0x000000290000 : "rootfs"
[ 0.900978] mtd: device 3 (rootfs) set to be root filesystem
[ 0.906711] 1 squashfs-split partitions found on MTD device rootfs
[ 0.912993] 0x0000001e0000-0x000000290000 : "rootfs_data"
[ 0.919472] 0x000000290000-0x0000003e5574 : "kernel"
[ 0.928180] 0x0000003f0000-0x000000400000 : "art"
[ 56.023948] jffs2: Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
[ 56.032495] jffs2: empty_blocks 10, bad_blocks 0, c->nr_blocks 11

jffs2 doesn't mount because rootfs_data is off by 64k. Build tool issue maybe?
rootfs image only seems to grow or shrink by 128k not 64k could this be related?

jffs2 expects all 0xff

root@OpenWrt:/# hexdump /dev/mtdblock4
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0010000 ffff ffff ffff ffff ffff ffff ffff ffff
*
00b0000

Changing bootargs doesn't help:
If I do:

setenv bootargs "board=WNR2000 console=ttyS0,115200 mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1664k(rootfs)ro,640k(rootfs_data),1408(kernel)ro,64k(art)ro rootfstype=squashfs,jffs2 noinitrd"

I get this

[    0.860521] 0x000000000000-0x000000040000 : "u-boot"
[    0.867764] 0x000000040000-0x000000050000 : "u-boot-env"
[    0.875049] 0x000000050000-0x0000001f0000 : "rootfs"
[    0.881186] mtd: device 2 (rootfs) set to be root filesystem
[    0.886934] 1 squashfs-split partitions found on MTD device rootfs
[    0.893222] 0x0000001e0000-0x0000001f0000 : "rootfs_data"
[    0.902074] 0x0000001f0000-0x000000290000 : "rootfs_data"
[    0.909331] 0x000000290000-0x000000290580 : "kernel"
[    0.917114] 0x000000290580-0x0000002a0580 : "art"
[   57.400806] jffs2: Too few erase blocks (1)

If I use this

setenv bootargs "board=WNR2000 console=ttyS0,115200 mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1664k(rootfs)ro,640k(dummy),1408(kernel)ro,64k(art)ro rootfstype=squashfs,jffs2 noinitrd"

Same thing

[    0.860520] 0x000000000000-0x000000040000 : "u-boot"
[    0.867762] 0x000000040000-0x000000050000 : "u-boot-env"
[    0.875049] 0x000000050000-0x0000001f0000 : "rootfs"
[    0.881194] mtd: device 2 (rootfs) set to be root filesystem
[    0.886941] 1 squashfs-split partitions found on MTD device rootfs
[    0.893229] 0x0000001e0000-0x0000001f0000 : "rootfs_data"
[    0.902087] 0x0000001f0000-0x000000290000 : "dummy"
[    0.908815] 0x000000290000-0x000000290580 : "kernel"
[    0.916599] 0x000000290580-0x0000002a0580 : "art"
[   43.010924] jffs2: Too few erase blocks (1)

@ppmm Can you print me your list of interfaces and MAC addresses? Just the last fw blocks are OK, e.g.:

# ifconfig -a|grep HWaddr
br-lan    Link encap:Ethernet  HWaddr xx:xx:xx:xx:AC:FD  
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:AC:FD  
eth0.1    Link encap:Ethernet  HWaddr xx:xx:xx:xx:AC:FD  
eth0.2    Link encap:Ethernet  HWaddr xx:xx:xx:xx:AC:FE  
wlan0     Link encap:Ethernet  HWaddr xx:xx:xx:xx:AC:FC  
wlan1     Link encap:Ethernet  HWaddr xx:xx:xx:xx:AC:FD

Also tell me which MAC matches the one printed on your label at the bottom of your router.

Edit: can you share a clear pic of the front of your router as well? The OpenWrt wiki isn't clear on which version of the router that picture it shows is from. Going by the ar71xx code your model doesn't seem to have any LAN LEDs...

Here you go. I count 8 LEDs in the front.

00:22:3F:0D:06:12 is the one.

/ # ifconfig -a | grep HW
ath0      Link encap:Ethernet  HWaddr 00:22:3F:0D:06:12  
br0       Link encap:Ethernet  HWaddr 00:22:3F:0D:06:12  
eth0      Link encap:Ethernet  HWaddr 00:22:3F:0D:06:12  
eth1      Link encap:Ethernet  HWaddr 00:22:3F:0D:06:13  
ip6tnl0   Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
sit0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
wifi0     Link encap:Ethernet  HWaddr 00:22:3F:0D:06:12