[OpenWrt-Devel] [PATCH] ath79: enable all space on Netgear ar9344-based WNDR routers

Michal Cieslakiewicz michal.cieslakiewicz at wp.pl
Tue Nov 19 10:17:37 EST 2019

Hello David,

Two questions were raised just after publishing 'all-flash-space' patch.
Now I am ready to provide more information on these issues:

0. Downgrade to vendor firmware.

It is possible. Just don't forget to erase both ubi concat partitions:
'mtd -r erase ubi' does the job fine.

1. Sysupgrade:

> > 
> > Have you tried if this breaks sysupgrade from an older OpenWrt
> > firmware? I'm not sure if an UBI resize works without additional
> > steps.
> > 

You were right, rootfs_data volume stays small after sysupgrade. My
approach is to execute 'ubirsvol' command for /dev/ubi0_1 and allocate
all available space. There are caveats however:

* command cannot be run after rootfs_data is mounted (device busy)
* command cannot be run in sysupgrade sequence (sysupgrade works in old
  system that is not mtd-concat aware)

I came out with a solution - to plug into preinit phase after ubi is
available but before ubi rootfs_data volume is started and incorporated
into overlayfs. Here is script (only for ath79/nand target so path is
I've tested it by running sysupgrade on my WNDR4300 and volume was
resized correctly.


grow_ubi_volume() {
	local free_lebs="$(ubinfo /dev/ubi0 | awk '$1=="Amount" && $3=="available" { print $6 }')"
	local used_lebs="$(ubinfo /dev/ubi0_$1 | awk '$1=="Size:" { print $2 }')"

	if [ $free_lebs -eq 0 ] ; then

	echo "- grow ubi volume (id $1) -"
	ubirsvol /dev/ubi0 -n $1 -S $(($used_lebs+$free_lebs))

do_grow_ubi_rootfs_data() {
	local board_name="$(cat /tmp/sysinfo/board_name || echo '')"

	case "$board_name" in
			grow_ubi_volume 1

boot_hook_add preinit_main do_grow_ubi_rootfs_data

I'll gladly read your opinion on above solution. Can it be accepted into mainline ?

Best regards

openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list