How to edit openwrt system flash size in build for zyxel nbg6817

0

The Zyxel NBG6817 has ~4gb of built in flash mem built in however only 64mb is currently defaulted for the rootfs partition. I have followed this post (https://forum.openwrt.org/t/zyxel-armor-z2-nbg6817-3gb-extroot-on-19-07/45376/13) and successfully mounted the remaining ~2.8gb-3.2gb of flash mem to the overlay. However the issue is that when you do a sysupgrade- this gets wiped and you have to remount & reboot the router.

I would like to edit my openwrt build to allow for the majority of this unused flash mem to be allocated to rootfs upon flashing openwrt without the need to mount the usused space to overlay

There was a comment on that thread about "I discussed it with @slh and he pointed out that for most people those 60MiB of storage would be enough to install packages, and only few people would benefit the increased storage"

well I am one of those people whom would benefit from using the extra flash mem and that is precisely why I purchased the nbg6817- to gain access to this greater flash mem.

I have seen posts about increasing the flash mem size for rootfs by editing the DTS file- however I cannot find the equivalant of the partition json obj in the zyxel nbg6817 dts file.

references:
https://forum.openwrt.org/t/flash-memory-architecture/59089
https://forum.openwrt.org/t/how-to-system-flash-size-and-ram/49817

Zyxel nbg6817 dts file? :
https://github.com/openwrt/openwrt/blob/master/target/linux/ipq806x/files-5.4/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts

#include "qcom-ipq8065.dtsi"

#include <dt-bindings/input/input.h>

/ {
    model = "ZyXEL NBG6817";
    compatible = "zyxel,nbg6817", "qcom,ipq8065", "qcom,ipq8064";

    memory@0 {
        reg = <0x42000000 0x1e000000>;
        device_type = "memory";
    };

    aliases {
        mdio-gpio0 = &mdio0;
        sdcc1 = &sdcc1;

        led-boot = &power;
        led-failsafe = &power;
        led-running = &power;
        led-upgrade = &power;
    };

    chosen {
        bootargs = "rootfstype=squashfs,ext4 rootwait noinitrd";
        append-rootblock = "root=/dev/mmcblk0p";
    };

    keys {
        compatible = "gpio-keys";
        pinctrl-0 = <&button_pins>;
        pinctrl-names = "default";

        wifi {
            label = "wifi";
            gpios = <&qcom_pinmux 53 GPIO_ACTIVE_LOW>;
            linux,code = <KEY_RFKILL>;
            linux,input-type = <EV_SW>;
        };

        reset {
            label = "reset";
            gpios = <&qcom_pinmux 54 GPIO_ACTIVE_LOW>;
            linux,code = <KEY_RESTART>;
        };

        wps {
            label = "wps";
            gpios = <&qcom_pinmux 65 GPIO_ACTIVE_LOW>;
            linux,code = <KEY_WPS_BUTTON>;
        };
    };

    leds {
        compatible = "gpio-leds";
        pinctrl-0 = <&led_pins>;
        pinctrl-names = "default";

        internet {
            label = "nbg6817:white:internet";
            gpios = <&qcom_pinmux 64 GPIO_ACTIVE_HIGH>;
        };

        power: power {
            label = "nbg6817:white:power";
            gpios = <&qcom_pinmux 9 GPIO_ACTIVE_HIGH>;
            default-state = "keep";
        };

        wifi2g {
            label = "nbg6817:amber:wifi2g";
            gpios = <&qcom_pinmux 33 GPIO_ACTIVE_HIGH>;
        };

        /* wifi2g amber from the manual is missing */

        wifi5g {
            label = "nbg6817:amber:wifi5g";
            gpios = <&qcom_pinmux 26 GPIO_ACTIVE_HIGH>;
        };

        /* wifi5g amber from the manual is missing */
    };
};

&qcom_pinmux {
    button_pins: button_pins {
        mux {
            pins = "gpio53", "gpio54", "gpio65";
            function = "gpio";
            drive-strength = <2>;
            bias-pull-up;
        };
    };

    led_pins: led_pins {
        mux {
            pins = "gpio9", "gpio26", "gpio33", "gpio64";
            function = "gpio";
            drive-strength = <2>;
            bias-pull-down;
        };
    };

    mdio0_pins: mdio0_pins {
        clk {
            pins = "gpio1";
            input-disable;
        };
    };

    rgmii2_pins: rgmii2_pins {
        tx {
            pins = "gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32" ;
            input-disable;
        };
    };

    spi_pins: spi_pins {
        cs {
            pins = "gpio20";
            drive-strength = <12>;
        };
    };

    usb0_pwr_en_pins: usb0_pwr_en_pins {
        mux {
            pins = "gpio16", "gpio17";
            function = "gpio";
            drive-strength = <12>;
        };

        pwr {
            pins = "gpio17";
            bias-pull-down;
            output-high;
        };

        ovc {
            pins = "gpio16";
            bias-pull-up;
        };
    };

    usb1_pwr_en_pins: usb1_pwr_en_pins {
        mux {
            pins = "gpio14", "gpio15";
            function = "gpio";
            drive-strength = <12>;
        };

        pwr {
            pins = "gpio14";
            bias-pull-down;
            output-high;
        };

        ovc {
            pins = "gpio15";
            bias-pull-up;
        };
    };
};

&gsbi5 {
    qcom,mode = <GSBI_PROT_SPI>;
    status = "okay";

    spi4: spi@1a280000 {
        status = "okay";

        pinctrl-0 = <&spi_pins>;
        pinctrl-names = "default";

        cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;

        m25p80@0 {
            compatible = "jedec,spi-nor";
            #address-cells = <1>;
            #size-cells = <1>;
            spi-max-frequency = <51200000>;
            reg = <0>;

            partitions {
                compatible = "qcom,smem";
            };
        };
    };
};

&usb3_0 {
    status = "okay";

    pinctrl-0 = <&usb0_pwr_en_pins>;
    pinctrl-names = "default";
};

&usb3_1 {
    status = "okay";

    pinctrl-0 = <&usb1_pwr_en_pins>;
    pinctrl-names = "default";
};

&pcie0 {
    status = "okay";
    reset-gpio = <&qcom_pinmux 3 GPIO_ACTIVE_LOW>;
    pinctrl-0 = <&pcie0_pins>;
    pinctrl-names = "default";
};

&pcie1 {
    status = "okay";
    reset-gpio = <&qcom_pinmux 48 GPIO_ACTIVE_LOW>;
    pinctrl-0 = <&pcie1_pins>;
    pinctrl-names = "default";
    max-link-speed = <1>;
};

&mdio0 {
    status = "okay";

    pinctrl-0 = <&mdio0_pins>;
    pinctrl-names = "default";


    phy0: ethernet-phy@0 {
        reg = <0>;
        qca,ar8327-initvals = <
            0x00004 0x7600000   /* PAD0_MODE */
            0x00008 0x1000000   /* PAD5_MODE */
            0x0000c 0x80        /* PAD6_MODE */
            0x000e4 0xaa545     /* MAC_POWER_SEL */
            0x000e0 0xc74164de  /* SGMII_CTRL */
            0x0007c 0x4e        /* PORT0_STATUS */
            0x00094 0x4e        /* PORT6_STATUS */
            0x00970 0x1e864443  /* QM_PORT0_CTRL0 */
            0x00974 0x000001c6  /* QM_PORT0_CTRL1 */
            0x00978 0x19008643  /* QM_PORT1_CTRL0 */
            0x0097c 0x000001c6  /* QM_PORT1_CTRL1 */
            0x00980 0x19008643  /* QM_PORT2_CTRL0 */
            0x00984 0x000001c6  /* QM_PORT2_CTRL1 */
            0x00988 0x19008643  /* QM_PORT3_CTRL0 */
            0x0098c 0x000001c6  /* QM_PORT3_CTRL1 */
            0x00990 0x19008643  /* QM_PORT4_CTRL0 */
            0x00994 0x000001c6  /* QM_PORT4_CTRL1 */
            0x00998 0x1e864443  /* QM_PORT5_CTRL0 */
            0x0099c 0x000001c6  /* QM_PORT5_CTRL1 */
            0x009a0 0x1e864443  /* QM_PORT6_CTRL0 */
            0x009a4 0x000001c6  /* QM_PORT6_CTRL1 */
            >;
    };

    phy4: ethernet-phy@4 {
        reg = <4>;
        qca,ar8327-initvals = <
            0x000e4 0x6a545     /* MAC_POWER_SEL */
            0x0000c 0x80        /* PAD6_MODE */
            >;
    };
};

&gmac1 {
    status = "okay";
    phy-mode = "rgmii";
    qcom,id = <1>;
    qcom,phy_mdio_addr = <4>;
    qcom,poll_required = <0>;
    qcom,rgmii_delay = <1>;
    qcom,phy_mii_type = <0>;
    qcom,emulation = <0>;
    qcom,irq = <255>;
    mdiobus = <&mdio0>;

    pinctrl-0 = <&rgmii2_pins>;
    pinctrl-names = "default";

    fixed-link {
        speed = <1000>;
        full-duplex;
    };
};

&gmac2 {
    status = "okay";
    phy-mode = "sgmii";
    qcom,id = <2>;
    qcom,phy_mdio_addr = <0>;   /* none */
    qcom,poll_required = <0>;   /* no polling */
    qcom,rgmii_delay = <0>;
    qcom,phy_mii_type = <1>;
    qcom,emulation = <0>;
    qcom,irq = <258>;
    mdiobus = <&mdio0>;

    fixed-link {
        speed = <1000>;
        full-duplex;
    };
};

&amba {
    sdcc1: sdcc@12400000 {
        status = "okay";
    };
};

&adm_dma {
    status = "okay";
};

I have also seen config options that allow you to increase the rootfs in the openwrt only for x86, such as CONFIG_TARGET_KERNEL_PARTSIZE=16 or CONFIG_TARGET_ROOTFS_PARTSIZE=256

but the nbg6817 does not have this option in make menuconfig like x86 does... and when I attempted to add this to the .config - it didn't work. reference: https://forum.openwrt.org/t/how-to-set-root-filesystem-partition-size-on-x86-imabebuilder/4765

There is also the makefile for the nbg6817 where I think I could in theory add options for the build but I havent seen enough documentation that gives me a serious hope it would work. What would I add here if this is all that is needed:

https://github.com/openwrt/openwrt/blob/master/target/linux/ipq806x/image/Makefile#L330

define Device/zyxel_nbg6817
    DEVICE_VENDOR := ZyXEL
    DEVICE_MODEL := NBG6817
    SOC := qcom-ipq8065
    KERNEL_SIZE := 4096k
    BLOCKSIZE := 64k
    BOARD_NAME := nbg6817
    RAS_BOARD := NBG6817
    RAS_ROOTFS_SIZE := 20934k
    RAS_VERSION := "V1.99(OWRT.9999)C0"
    SUPPORTED_DEVICES += nbg6817
    DEVICE_PACKAGES := ath10k-firmware-qca9984-ct e2fsprogs kmod-fs-ext4 losetup
    $(call Device/ZyXELImage)
endef
TARGET_DEVICES += zyxel_nbg6817

Also I would imagine that I can use the memory locations of the partitions to mount as described in the eMMC section of the device page- I just dont know how to edit that in the build configuration:
https://openwrt.org/toh/zyxel/nbg6817?s[]=zyxel&s[]=nbg6817
Example: gdisk -l /dev/mmcblk0 will give the memory locations (start & end) of each mmcblk0 partition

Any help would be greatly appreciated. Honestly this zyxel nbg6817 in the build config make menuconfig should have an advanced option to build to use the majority of the unused flash mem.

openwrt
flash-memory
rootfs
asked on Stack Overflow Sep 18, 2020 by Daniel • edited Sep 18, 2020 by Daniel

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0