Netgear AC1200 (R6120)

I am looking into building a stable release for my Netgear AC1200 (R6120) router, as I can't install SQM packages to deal with bufferbloat because of a kernel package version mismatch. From what I see a lot of work is involved with finding out correct settings (which isn't the problem as long as I know where I'm looking).

The thing is though, the snapshot for this device works fine, LEDs and all, so somehow the way the snapshot is configured is in such a way that if I could get this information somewhere, the creating of this stable release should be a lot easier.

The menuconfig option of make in the source does not include my device. But somewhere, a specific snapshot image IS built for my specific device. Is there any way of obtaining this information so I can create a stable build for my device and have the right kernel version to install SQM packages?

You may try Imagebuilder

Snapshots are self-consistent "for a day". Using the image builder has the same issues, as it depends on assembling packages from the public repo. As long as you are willing to flash a snapshot, then install all the packages you need "immediately", they should work for you.

Building your own images from source will provide "stable" versions as long as you don't update the source. At least for me, if you've gone that far, you might as well update the source and always build a custom image when you want to add anything but a "trivial" package. The defaults are pretty much everything in a "release" image but LuCI. I keep my "seed" config in a separate set of files so I can quickly create a new .config (and keep those in ./env/ using symlinks and git as well).

Here's my personal choices for some perf testing I'm doing right now. They are a lot different than what most people use or need.

I can cat these into .config, then use make menuconfig to "fill out" the config with the dependencies prior to a build. One could also just keep them all together, but I do a lot of testing, so "mix and match" has its advantages for me.

jeff@deb-devel:~/devel/openwrt_config$ cat select/ea8300 
CONFIG_TARGET_ipq40xx=y
CONFIG_TARGET_ipq40xx_generic=y
CONFIG_TARGET_ipq40xx_generic_DEVICE_linksys_ea8300=y

jeff@deb-devel:~/devel/openwrt_config$ cat config.local 
CONFIG_DEVEL=y
CONFIG_BUILD_LOG=y
CONFIG_CCACHE=y
CONFIG_DOWNLOAD_FOLDER="/home/jeff/devel/openwrt_dl"
CONFIG_PACKAGE_build-details=y

# build-details is a local package that captures the state of my source and config into the images

jeff@deb-devel:~/devel/openwrt_config$ cat config.utils 
CONFIG_BUSYBOX_CUSTOM=y
CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY=y
CONFIG_BUSYBOX_CONFIG_FEATURE_REVERSE_SEARCH=y
CONFIG_BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
CONFIG_PACKAGE_ca-bundle=y
CONFIG_PACKAGE_diffutils=y
CONFIG_PACKAGE_ethtool=y
CONFIG_PACKAGE_findutils=y
CONFIG_PACKAGE_git=y
CONFIG_PACKAGE_htop=y
CONFIG_PACKAGE_i2c-tools=y
CONFIG_PACKAGE_ip-bridge=y
CONFIG_PACKAGE_ip-full=y
CONFIG_PACKAGE_iperf3=y
CONFIG_PACKAGE_kmod-fs-ext4=y
CONFIG_PACKAGE_less=y
CONFIG_PACKAGE_nand-utils=y
CONFIG_PACKAGE_procps-ng=y
CONFIG_PACKAGE_procps-ng-free=y
CONFIG_PACKAGE_procps-ng-kill=y
CONFIG_PACKAGE_procps-ng-pgrep=y
CONFIG_PACKAGE_procps-ng-pkill=y
CONFIG_PACKAGE_procps-ng-pmap=y
CONFIG_PACKAGE_procps-ng-ps=y
CONFIG_PACKAGE_procps-ng-pwdx=y
CONFIG_PACKAGE_procps-ng-skill=y
CONFIG_PACKAGE_procps-ng-slabtop=y
CONFIG_PACKAGE_procps-ng-snice=y
CONFIG_PACKAGE_procps-ng-tload=y
CONFIG_PACKAGE_procps-ng-top=y
CONFIG_PACKAGE_procps-ng-uptime=y
CONFIG_PACKAGE_procps-ng-vmstat=y
CONFIG_PACKAGE_procps-ng-w=y
CONFIG_PACKAGE_procps-ng-watch=y
CONFIG_PACKAGE_rsync=y
CONFIG_PACKAGE_zlib=y
CONFIG_RSYNC_acl=y
CONFIG_RSYNC_xattr=y
CONFIG_RSYNC_zlib=y
CONFIG_PACKAGE_tcpdump-mini=y
CONFIG_PACKAGE_terminfo=y
CONFIG_PACKAGE_usbutils=y

jeff@deb-devel:~/devel/openwrt_config$ cat config.luci
CONFIG_PACKAGE_luci-ssl-nginx=y

jeff@deb-devel:~/devel/openwrt_config$ cat config.luci-sqm 
CONFIG_PACKAGE_luci-app-sqm=y

jeff@deb-devel:~/devel/openwrt_config$ cat config.openvpn-luci 
CONFIG_PACKAGE_openvpn-openssl=y
CONFIG_PACKAGE_luci-app-openvpn=y

jeff@deb-devel:~/devel/openwrt_config$ cat config.wireguard-luci 
CONFIG_PACKAGE_wireguard=y
CONFIG_PACKAGE_luci-app-wireguard=y

In some cases, I rely on one package bringing in the underlying package, such as luci-app-sqm bringing in the SQM scripts.

I have created a config.local containing

CONFIG_TARGET_rampis=y
CONFIG_TARGET_ramips_mt76x8=y
CONFIG_TARGET_ramips_mt76x8_netgear_r6120=y
CONFIG_DEVEL=y
CONFIG_BUILD_LOG=y
CONFIG_CCACHE=y
CONFIG_DOWNLOAD_FOLDER="/mnt/sdb/tmp"

and cat'ed it into my .config file after being generated by 'make menuconfig', then ran 'make'. I would expect a *.bin file in openwrt/target/linux/ramips/mt76x8/netgear/r6120 (or something similar). /mt76x8/ only contains
config-4.14 profiles target.mk
Is there something I am doing wrong?

Also, adding luci-app-sqm as a package generates an error as being unable to satisfy dependencies for lua, luci-base and sqm-scripts. Shouldn't these be pulled in automatically?

Hmmm, I would have done something like:

cat my.config > .config
make menuconfig  # and save
make -j12 clean download world

and would have expected the output to be under bin.

With self-built images, one generally adds the packages they need to the build with make menuconfig or in the .config file directly, rather than relying on the public repos (which often won't be compatible with the local build's kernel and perhaps libraries).

1 Like