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

clean clone for branch 24.10, rebased and I only have issues with

990-0283-vlan-Add-vlan-stats-update-function.patch

and

990-0317-net-bonding-Added-acceleration-support-over-LAG-inte.patch

pick those patch from k6.x branch and it’ll work. I believe 999-change-MS2TIME-to-5ms-50ms-for-improve-latency.patch

is patched upstream and can be removed.

I tried my hand at making the patches and applying it to 24.10 openwrt luci feed
create file 001-nss.patch and drop it into feeds/luci/modules/luci-mod-status/patches/

--- a/htdocs/luci-static/resources/view/status/include/10_system.js
+++ b/htdocs/luci-static/resources/view/status/include/10_system.js
@@ -25,14 +25,26 @@ return baseclass.extend({
 		return Promise.all([
 			L.resolveDefault(callSystemBoard(), {}),
 			L.resolveDefault(callSystemInfo(), {}),
-			L.resolveDefault(callLuciVersion(), { revision: _('unknown version'), branch: 'LuCI' })
+						L.resolveDefault(callLuciVersion(), { revision: _('unknown version'), branch: 'LuCI' }),
+			fs.lines('/sys/kernel/debug/qca-nss-drv/stats/cpu_load_ubi').then(L.bind(function(lines) {
+			  var stats = [];
+			  for (var i = 0; i < lines.length; i++) {
+				  if (lines[i].match(/%/)) {
+					var stat = lines[i].split(/\s+/);
+					stats['avg'] = stat[1];
+					stats['max'] = stat[2];
+					return stats;
+				  }
+			  }
+			}))
 		]);
 	},
 
 	render: function(data) {
 		var boardinfo   = data[0],
 		    systeminfo  = data[1],
-		    luciversion = data[2];
+		    luciversion = data[2],
+		    nssinfo     = data[3];
 
 		luciversion = luciversion.branch + ' ' + luciversion.revision;
 
@@ -64,7 +76,8 @@ return baseclass.extend({
 				systeminfo.load[0] / 65535.0,
 				systeminfo.load[1] / 65535.0,
 				systeminfo.load[2] / 65535.0
-			) : null
+			) : null,
+			_('NSS Load'),         (L.isObject(nssinfo) ? 'Avg: %s Max: %s'.format(nssinfo.avg, nssinfo.max) : null)
 		];
 
 		var table = E('table', { 'class': 'table' });
--- a/root/usr/share/rpcd/acl.d/luci-mod-status.json
+++ b/root/usr/share/rpcd/acl.d/luci-mod-status.json
@@ -31,6 +31,7 @@
 		"read": {
 			"cgi-io": [ "exec" ],
 			"file": {
+				"/sys/kernel/debug/qca-nss-drv/stats/cpu_load_ubi": [ "read" ],
 				"/bin/dmesg -r": [ "exec" ],
 				"/usr/libexec/syslog-wrapper": [ "exec" ]
 			},

as for the QAM256, create 001-vht.patch and drop it into feeds/luci/modules/luci-mod-network/patches

--- a/htdocs/luci-static/resources/view/network/wireless.js
+++ b/htdocs/luci-static/resources/view/network/wireless.js
@@ -351,7 +351,9 @@ var CBIWifiFrequencyValue = form.Value.extend({
 				'': [ '', '-', { available: true } ],
 				'n': [
 					'HT20', '20 MHz', { available: htmodelist.HT20 },
-					'HT40', '40 MHz', { available: htmodelist.HT40 }
+					'HT40', '40 MHz', { available: htmodelist.HT40 },
+					'VHT20', '20 MHz QAM-256', { available: htmodelist.VHT20 },
+					'VHT40', '40 MHz QAM-256', { available: htmodelist.VHT40 }
 				],
 				'ac': [
 					'VHT20', '20 MHz', { available: htmodelist.VHT20 },
@@ -477,20 +479,6 @@ var CBIWifiFrequencyValue = form.Value.extend({
 
 		this.setValues(mode, this.modes);
 
-		// Determine mode based on htmode value
-		if (/EHT20|EHT40|EHT80|EHT160|EHT320/.test(htval))
-			mode.value = 'be';		
-		else if (/HE20|HE40|HE80|HE160/.test(htval))
-			mode.value = 'ax';
-		else if (/VHT20|VHT40|VHT80|VHT160/.test(htval))
-			mode.value = 'ac';
-		else if (/HT20|HT40/.test(htval))
-			mode.value = 'n';
-		else
-			mode.value = '';
-
-		this.toggleWifiMode(elem);
-
 		if (hwval != null) {
 			this.useBandOption = false;
 
@@ -504,6 +492,22 @@ var CBIWifiFrequencyValue = form.Value.extend({
 
 		this.toggleWifiBand(elem);
 
+		// Determine mode based on htmode value
+		if (/EHT20|EHT40|EHT80|EHT160|EHT320/.test(htval))
+			mode.value = 'be';
+		else if (/HE20|HE40|HE80|HE160/.test(htval))
+			mode.value = 'ax';
+		else if (/VHT20|VHT40/.test(htval) && band.value == '2g')
+			mode.value = 'n';
+		else if (/VHT20|VHT40|VHT80|VHT160/.test(htval))
+			mode.value = 'ac';
+		else if (/HT20|HT40/.test(htval))
+			mode.value = 'n';
+		else
+			mode.value = '';
+
+		this.toggleWifiMode(elem);
+
 		bwdt.value = htval;
 		chan.value = chval ?? (chan.options[0] ? chan.options[0].value : 'auto');
 
3 Likes

Maybe a little bit of refinement is needed - indentation mostly.
I already have those patches but I meant refreshed patches for main branch as the files have been changed in Main branch recently.

Currently this patch works for Luci QAM-256 - https://github.com/openwrt/openwrt/pull/12904#issuecomment-2618168331

1 Like

For those having trouble creating a build, I have the 24.10.2 stable version compiled for a few devices in my repo. I'll try to compile it for other devices as well if desired.

2 Likes

Hi! I have troubles, I'm new in this building things. Could you please compile for EA8500 also? Big thanks.

try mine:

Thank you, but I have no wifi with this build sadly.
I guess the problem is that in EA8500 the wifi is qca99x0 not qca9984

Finally a could finish the build, but I can't get wifi to work.
How can i fix this?

18.190054] ath10k_pci 0001:01:00.0: failed to fetch board data for bus=pci,vendor=168c,device=0040,subsystem-vendor=168c,subsystem-device=0002 from ath10k/QCA99X0/hw2.0/board-2.bin
[   18.311240] ath10k_pci 0001:01:00.0: failed to fetch board-2.bin or board.bin from ath10k/QCA99X0/hw2.0
[   18.311282] ath10k_pci 0001:01:00.0: failed to fetch board file: -12
[   18.319803] ath10k_pci 0001:01:00.0: could not probe fw (-12)
[   18.326366] ath10k_pci 0000:01:00.0: assign IRQ: got 34

Look at the mac addresses if this is the first time you are using 24.0x.
When upgrading from 23.0x to 24.0x the MAC addresses of interfaces could be the same

Thanks for the tip, I use 24.10 as daily driver, I had the MAC issue, but as the dmesg shows, it cannot even load the driver, wireless devices aren't visible.

Hi friend,

I've added the EA8500 firmware to my repo. You can try it and let me know the results. Good luck.

1 Like

Hi mister,

Big thanks for your help. It looks good, my problem now I can't install some packages.
I think I miss the package kmod-usb-storage-uas but it's not available in opkg.
I don't want to bother you, but if you have some time, could you share your repo and diffconfig of that build?
I want to work with it.
Have a nice day!

@sqter @asvio
Ansuel has just announced kernel 6.12 as default. Bad part is kernel 6.6 support was dropped.
Let's hope it is NSS supportable too.

3 Likes

Hi, all,

I’ve upgraded my R7800 to v24.10.4 and kernel v6.6.110 successfully by using the repo:

@asvio and tingalvin, many thanks.

The Adblock’s default blocked sites, increased to 150k more from 45k on v24.10.2 FW.

2 Likes

Just checked the diff from asvio to tingalvin.
The code should be safe.

2 Likes

I did the compilation. It looks good.