Ipq806x NSS build (Netgear R7800 / TP-Link C2600 / Linksys EA8500)

Where do I get it and how to apply that patch?


I have not poked much around the snapshot builds, so can´t help much. Looking around GitHub this is what I found.

I think that patch seems to be only used for 5.10 kernel.

Commit: https://github.com/ACwifidude/openwrt/commit/795d569748f90a0fe99fbcc3ba24c70277ab6105

You could take it from there and commit it on top of your local repo, but it will take some adjusting to match offsets against the new kernel. However... since it's not there for the latest kernel, my guess is that it is not needed or it doesn't apply to the qsdk11 driver.

Did you check out the kernel5.15-nss-qsdk11 branch or the default kernel5.10-nss-qsdk10?

AFAIK, CONFIG_PACKAGE_MAC80211_NSS_SUPPORT=y is set automatically... that is what I understand from this commit.

1 Like

Updating my own situation just for documentation, I guess.

I had to give up on this NSS build on my R7800 a little over 3 weeks after starting using it, because I had 3 reboots at very critical moments (important work meetings happening). I made the decision to revert to 22.03.2 and a couple of weeks later, also made the decision to get a wifi6 router (TP-Link Archer AX6000) and use it as a dumb AP and leave the R7800 as a wired router only.

This seems to have fixed all of the issues I had been having (the setup has been running flawlessly for around 3-4 weeks now). I am getting consistent 450Mbps wifi/WAN traffic, and up to 900Mbps wifi/LAN (average being 600Mbps between the non-wifi6 devices and the R7800's iperf3).

Although this cost me extra ( ~U$220) for the AX6000, I am very happy with the results. The R7800 can handle just routing and VPN, the AX6000 handles wifi very well.

I'd try to debug and report more, but unfortunately I do not have multiple R7800s or the time to keep a test environment in parallel to my setup for that. Hopefully one day the mainstream OpenWrt will get the benefits of this branch and everyone can benefit from it.

Thank you all for the help and information.

Basically I've tried to compile both current master and 22.03 (Stable) from the first post following the instructions in the second post.
No matter what branch I try to compile once the compilation reaches this point
make[3] -C package/qca/qca-nss-drv compile
I get the same error

ERROR: package/qca/qca-nss-drv failed to build.
make -r world: build failed. Please re-run make with -j1 V=s or V=sc for a higher verbosity level to see what's going on
make: *** [/home/deb/openwrt/include/toplevel.mk:230: world] Error 1

If you use make V=s then it'll give you a lot more info and you should be able to see exactly why it's failing
I'd expect stable to work fine, so possibly it's a missing dependency somewhere, which should be an easy fix. Master's now using backports from the 6.x kernel, so the version of 999-mac80211-NSS-support.patch doesn't apply cleanly at the moment, causing build to fail. Qosmio's repo has an updated version which does work though...

Applying ./patches/200-fix-NULL-pointer-exception.patch using plaintext: 
patching file nss_core.c
Hunk #1 succeeded at 1425 (offset -174 lines).

Applying ./patches/201-Fix-Kernel-Panic-dma-with-NULL-dev.patch using plaintext: 
patching file nss_coredump.c
patching file nss_log.c

Applying ./patches/400-Exported-set-nexthop-function.patch using plaintext: 
patching file nss_phys_if.c
patching file nss_core.c
touch /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/.prepared_b400e7089dce0c31c5998b0cd864ea94_6664517399ebbbc92a37c5bb081b5c53
rm -f /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/.configured_*
rm -f /home/debian/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.qca-nss-drv_installed
ln -sf arch/nss_"ipq806x".h /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/exports/nss_arch.h
touch /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/.configured_68b329da9893e34099c7d8ad5cb9c940
rm -f /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/.built
touch /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/.built_check
make  -j1 -C "/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.10.159"  KCFLAGS="-fmacro-prefix-map=/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi=target-arm_cortex-a15+neon-vfpv4_musl_eabi -fno-caller-saves " HOSTCFLAGS="-O2 -I/home/debian/openwrt/staging_dir/host/include -I/home/debian/openwrt/staging_dir/hostpkg/include -I/home/debian/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/host/include -Wall -Wmissing-prototypes -Wstrict-prototypes" CROSS_COMPILE="arm-openwrt-linux-muslgnueabi-" ARCH="arm" KBUILD_HAVE_NLS=no KBUILD_BUILD_USER="" KBUILD_BUILD_HOST="" KBUILD_BUILD_TIMESTAMP="Mon Dec 19 22:10:22 2022" KBUILD_BUILD_VERSION="0" HOST_LOADLIBES="-L/home/debian/openwrt/staging_dir/host/lib" KBUILD_HOSTLDLIBS="-L/home/debian/openwrt/staging_dir/host/lib" CONFIG_SHELL="bash" V=1  cmd_syscalls= KBUILD_EXTRA_SYMBOLS="/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/symvers/ath10k-ct.symvers /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/symvers/cryptodev-linux.symvers /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/symvers/gpio-button-hotplug.symvers /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/symvers/ksmbd.symvers /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/symvers/mac80211.symvers /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/symvers/qca-nss-gmac.symvers" KERNELRELEASE=5.10.159  M="/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de" EXTRA_CFLAGS="-I/home/debian/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/usr/include/qca-nss-gmac" SoC=""ipq806x"" modules
make[4]: Entering directory '/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.10.159'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (                \
echo >&2;                                                       \
echo >&2 "  ERROR: Kernel configuration is invalid.";           \
echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";      \
echo >&2 ;                                                      \
make -f ./scripts/Makefile.build obj=/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de \
single-build= \
need-builtin=1 need-modorder=1
  arm-openwrt-linux-muslgnueabi-gcc -Wp,-MMD,/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/.nss_bridge.o.d -nostdinc -isystem /home/debian/openwrt/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-11.2.0_musl_eabi/lib/gcc/arm-openwrt-linux-muslgnueabi/11.2.0/include -I./arch/arm/include -I./arch/arm/include/generated  -I./include -I./arch/arm/include/uapi -I./arch/arm/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -fno-dwarf2-cfi-asm -fno-ipa-sra -mabi=aapcs-linux -mfpu=vfp -funwind-tables -marm -Wa,-mno-warn-deprecated -D__LINUX_ARM_ARCH__=7 -mcpu=cortex-a15 -msoft-float -Uarm -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector -Wimplicit-fallthrough -Wno-unused-but-set-variable -Wno-unused-const-variable -fomit-frame-pointer -g -femit-struct-debug-baseonly -fno-var-tracking -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -fmacro-prefix-map=/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi=target-arm_cortex-a15+neon-vfpv4_musl_eabi -fno-caller-saves -I/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_hal/ipq806x -DNSS_HAL_IPQ806X_SUPPORT -I/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_hal/include -I/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_data_plane/include -I/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/exports -DNSS_DEBUG_LEVEL=0 -DNSS_PKT_STATS_ENABLED=1 -DNSS_PM_DEBUG_LEVEL=0 -DNSS_SKB_REUSE_SUPPORT=1 -I/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de -DNSS_FREQ_SCALE_SUPPORT=1 -DNSS_DT_SUPPORT=1 -DNSS_FW_DBG_SUPPORT=0 -DNSS_PM_SUPPORT=0 -DNSS_FABRIC_SCALING_SUPPORT=0 -I/home/debian/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/usr/include/qca-nss-gmac  -DMODULE  -DKBUILD_BASENAME='"nss_bridge"' -DKBUILD_MODNAME='"qca_nss_drv"' -c -o /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_bridge.o /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_bridge.c
In file included from /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_hal/include/nss_hal.h:26,
                 from /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_tx_rx_common.h:25,
                 from /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_bridge.c:17:
/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_core.h: In function 'nss_core_dma_cache_maint':
/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_core.h:120:17: error: implicit declaration of function 'dmac_inv_range'; did you mean 'outer_inv_range'? [-Werror=implicit-function-declaration]
  120 |                 dmac_inv_range(start, start + size);
      |                 ^~~~~~~~~~~~~~
      |                 outer_inv_range
/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_core.h:123:17: error: implicit declaration of function 'dmac_clean_range'; did you mean 'dmac_flush_range'? [-Werror=implicit-function-declaration]
  123 |                 dmac_clean_range(start, start + size);
      |                 ^~~~~~~~~~~~~~~~
      |                 dmac_flush_range
cc1: some warnings being treated as errors
make[5]: *** [scripts/Makefile.build:286: /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/nss_bridge.o] Error 1
make[4]: *** [Makefile:1837: /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de] Error 2
make[4]: Leaving directory '/home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.10.159'
make[3]: *** [Makefile:127: /home/debian/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-nss-drv-809a00de/.built] Error 2
make[3]: Leaving directory '/home/debian/openwrt/package/qca/qca-nss-drv'
time: package/qca/qca-nss-drv/compile#3.43#1.97#8.33
    ERROR: package/qca/qca-nss-drv failed to build.
make[2]: *** [package/Makefile:116: package/qca/qca-nss-drv/compile] Error 1
make[2]: Leaving directory '/home/debian/openwrt'
make[1]: *** [package/Makefile:110: /home/debian/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
make[1]: Leaving directory '/home/debian/openwrt'
make: *** [/home/debian/openwrt/include/toplevel.mk:230: world] Error 2

I think that's possibly an issue with dependencies, I remember seeing it before, I'm just not entirely sure what I did to fix it...

Does your .config have all the below, try adding anything that's missing and trying again


1 Like

I have these

# NSS Drivers

Not to peddle my products but that is what I did for 22.03.2. :wink:

Unless I'm reading the commit logs wrong, the MAC80211 driver for the 22.03 branch seems to have been updated, that among many other changes. Even if that is of no matter, the kernel has been bumped a few times already. Trying to build from the head of 22.03 could be challenging as the NSS patches might need offsets adjusted to the new kernel or driver versions. I think that's why the last rebase shows up as dirty. I avoided the issue by checking out the 22.03.2 tagged commit (as to match what the 22.03.2 release was) and building with that.

In order to build 22.03.2 the 30+ patches for NSS are required. I committed those on top of the 22.03.2 check out. Build still fails after that, so I added a very small commit to remove the issue I was having.

If you take a look at the commit history on the repo I linked above hopefully this makes sense. This repo:

For snapshot builds this is too much of a moving target for me so I'm avoiding those.

Hope that helps.

1 Like

Have the reboots bin fixt in the K5.15 master builds? The K5.10 build I am running is doing good for me, but I wanted to test something out.

Looks like you are missing this commit (adding this commit should fix the error :sunglasses:):

1 Like

well everyone, although I have the super stable version, it still happens to me that when a wifi device leaves the router, sometimes the other devices lose internet, even if a 5ghz device leaves the network, the 2.4ghz network is affected. Do you know if there is a solution for this in the last images?


I'm on 20d uptime with current MASTER... and the only reason why it's at 20d is because that's when I did the update to the latest version. Haven't had any issues that you describe.

EDIT - R7800 w/ CT drivers. Forgot to mention.

1 Like

a recent version?
it seems a lot the issue @quarky faced some time ago and that we had for a looooooong time, but afaik it got solved.
Just not to waste a message :slight_smile: @ACwifidude did you add to your repository the ansuel's patch on, basically, disable frequency throttling to save stability?

i'm building master with the very same config i used with previous master, but i'm getting an incredible error on a package that i expect has nothing to do with NSS (python pycparser), but maybe any of you saw something similar.. i can't sort this out sadly..

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/ply/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/ply/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/ply/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/ply/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/ply/
Could not fetch URL https://pypi.org/simple/ply/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/ply/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
ERROR: Could not find a version that satisfies the requirement ply==3.11 (from versions: none)
ERROR: No matching distribution found for ply==3.11
make[3]: *** [Makefile:48: /home/massi/rutto/openwrt/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/pypi/pycparser-2.21/.built] Error 1
time: package/feeds/packages/python-pycparser/compile#0.53#0.02#8.05

on my ea7500 hostapd still acts up quite a bit, ct and non ct. i'd be glad to test any mods done to the drivers to see what happens

I have little idea, but I have been working for 69 days, that only happens to me sometimes.

@ACwifidude Hi, I am using the 22.03 build and was wondering if you could add the kmod-usb-printer package to your repo as well. There was a post from March that let me think it might already be there but it does not exist in the repo.

Either way, thanks for your builds! :slight_smile:

1 Like

Has anyone got VHT160 working on the R7800 with the latest builds? I’ve tried setting channel to 36, 100 and a few various others without the 5GHz radio showing up. Have waiting a good amount of time as well without any luck.

Anybody on recent builds 22.03 with a lot of devices on the network? Currently hitting stability issues with ath10k-ct (lots of firmware crashes), want to try out ath10k as well soon.