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

If you had searched the forum, you'd find many references that ipq806x without NSS support is not able to keep up with that.

Don't rely on NSS for buying hardware, it's not merged into official OpenWrt and a rather fragile construct.

1 Like

Yes I saw some references to this but I was curious on recent builds. I did not know if there any improvements on the most recent build.

Thank you for the info. I already have an old x86 running and doing full gigabit qos but I was thinking about downsizing. My reasoning is lower power usage and maybe the the NSS was more suited for multi-gigabit loads since it's application specific.

Well selected modern x86_64 can compete with modern ARMv8 routers in terms of power usage (and win, while also staying in front in terms of performance), they just can't do (economically viably) wireless nor (usually) include a managed switch.

1 Like

A decent x86 will outperform NSS enabled ipq806x devices in most setups- especially cpu intensive activities like QoS and vpn. Like pointed out ipq806x devices have the advantage of cost effective built in wireless and a built in switch.

My R7800 is rated for up to 42W (3.5A x 12V). Assuming max energy usage, running 24/7 that comes out to about 365 kWh / year. Depending on your energy costs and how much the difference in energy costs is between a x86 vs ipq806x- that is the math to see if it is worth it! If your x86 is using twice as much energy it could take up to 2 years to break even assuming you got a killer deal on a used ipq806x device.

To be fair, the PSU power rating doesn't really mean anything, as the PSU must be able to cope with 2*4.5 watts (USB 3.0) and eSATAp in addition to the routing tasks. In practice ipq806x seems to draw around 15 watts (semi-idle, which is the prevalent mode of operation for a home router), while I have x86_64 systems idling around 7 watts at the wall <-- but you have to add the idle power of (managed) switches and APs to that for a complete figure. Still, well selected x86_64 can compete in terms of power usage (while pretty much always winning in terms of performance) - badly selected x86_64 (just your old gaming desktop or rack server) however will be a money sink (60-130 watts idle are easily possible).

3 Likes

Agreed. You’d have to measure with a kill-a-watt ot similar to get exact measurements to get a full use case. The power savings may be meaningful, maybe marginal.

Finally i got it :slight_smile:
Thanks man

1 Like

try to compile my custom build with full cone nat support from https://github.com/LGA1150/openwrt-fullconenat
but facing error when make fw
Any idea ?

That package was built 3-4 years ago and looks like it was built for firewall 3. 22.03 and master both use firewall 4 by default. Unfortunately I don’t know the particulars of that package or how to troubleshoot it. Don’t know if it is usable for any modern flavor of OpenWrt.

On a separate note, updated the 21.02, 22.03, and master build yesterday! Last master build gave me a 21 day uptime before I loaded yesterday’s build.

3 Likes

I see there was an update to the mac80211 package a few days ago, can I assume that got included in your recent builds?

-- EDIT --
Answering my own question :sweat_smile:: yes, that recent update to mac80211 is included.

I’m wondering if it might contain a fix for the WiFi stalls some have reported since 21.02.2. I have compiled a build myself from your repository based on your previous rebase. I see occasional WiFi stalls too. Haven’t been able to discover a cause or pattern yet to what’s triggering it. I’m using the ath10k (non-ct) driver by the way.

2 Likes

Hi ACwifidude,

I'm using this TEW-827DRU v1 (with his vanila openwrt 21.02.02 image), and can test any NSS image for you. I can also open the device and solder connections to have TTL serial console for debugging.

Note for others: if you want buy this model from eBay, virtually all of them are v2 hardware using Mediatek chipset and are not supported by this OpenWrt build.

According to the author, the following was the main reason OpenWRT Devs did not want to include it:

https://forum.archive.openwrt.org/viewtopic.php?id=65956&p=6

"Five revisions in, they suddenly decide that the ITS-maker script I wrote to produce the FIT image is a problem, and they don't want it!"

Thank you very much.

Hope it has the fix for you!

@vochong - feel free to cherry-pick the NSS commits or clone my repo and put the commits necessary on top to get your device working. I’m in the middle of moving so my build computer is packed away for the next 2 weeks. If you have OpenWrt working - you have what it takes to add the rest.

Here are all the NSS commits on top of 21.02:

You can clone via post #2 above or cherry-pick each commit in order (this is an example of grabbing that first commit, you’ll have to cherry-pick each hash):


git remote add ACwifidude https://github.com/ACwifidude/openwrt.git
git fetch ACwifidude
git cherry-pick 0fb7d89
git cherry-pick …. 
1 Like

Great info, might be worthy to add to your 2nd post :+1:

Good luck when moving

1 Like

Hello,

I occasionally got this traceback error when running the latest 22.03 NSS image (Kernel 5.10.110) on R7800.

[120344.806385] CPU: 0 PID: 28303 Comm: sysctl Not tainted 5.10.110 #0
[120344.828437] Hardware name: Generic DT based system
[120344.834619] [<c030e4ac>] (unwind_backtrace) from [<c030a22c>] (show_stack+0x14/0x20)
[120344.839477] [<c030a22c>] (show_stack) from [<c0630c28>] (dump_stack+0x94/0xa8)
[120344.847469] [<c0630c28>] (dump_stack) from [<c031e660>] (__warn+0xc0/0x11c)
[120344.854580] [<c031e660>] (__warn) from [<c031e70c>] (warn_slowpath_fmt+0x50/0x84)
[120344.861875] [<c031e70c>] (warn_slowpath_fmt) from [<c050f974>] (proc_sys_call_handler+0x288/0x294)
[120344.869253] [<c050f974>] (proc_sys_call_handler) from [<c0481038>] (vfs_read+0x1e0/0x2e8)
[120344.878188] [<c0481038>] (vfs_read) from [<c0481590>] (ksys_read+0x58/0xd4)
[120344.886520] [<c0481590>] (ksys_read) from [<c0300060>] (ret_fast_syscall+0x0/0x54)
[120344.893719] Exception stack(0xc567bfa8 to 0xc567bff0)
[120344.901107] bfa0:                   00000000 00000000 00000007 b6fc1040 00000400 00000000
[120344.906325] bfc0: 00000000 00000000 00000000 00000003 000865d8 7ffff000 be932da4 00000000
[120344.914562] bfe0: be932838 be932828 b6f98350 b6f97830
[120344.922895] ---[ end trace 5a78e1db4b7c6bc3 ]---
[120344.945139] Min SKB reuse sizes - 
[120344.945156] core 0: 1984 
[120344.945188] core 1: 1984 
[120344.947559] 
[120345.075168] ICMPv6: process `sysctl' is using deprecated sysctl (syscall) net.ipv6.neigh.br-lan.base_reachable_time - use net.ipv6.neigh.br-lan.base_reachable_time_ms instead
[120553.789404] Frequency Set to 800000000
[120553.789626] Frequency Supported - 
[120553.789636] 800000000 Hz 
[120553.792054] 800000000 Hz 
[120553.795525] 800000000 Hz 
[120553.798589] 
[120553.803789] Current Inst Per Ms 3e03
[120553.812300] Min SKB reuse sizes - 
[120553.812307] core 0: 1984 
[120553.812324] core 1: 1984 
[120553.814586] 

# uname -a
Linux isadora 5.10.110 #0 SMP Fri Apr 15 12:51:17 2022 armv7l GNU/Linux

Hello.

Nice work, @ACwifidude ! I was getting around 300Mbps with a 600Mbps. With the NSS drivers I could get the link speed.

Question:

Here, you clearly mention the code changes needed to get this patch to upstream:

I read that you wanted some help to get this upstream. I also see the great work documenting everything you have done. I couldn't read all the comments, but was there ever a pull request with these fixes to the openwrt repo? If not, why not?

1 Like

To get in to master I’d need help making all the patches and configs able to “turn on and off”- so that users that want NSS can use it, understanding that they might sacrifice a feature or two for speed…users that don’t want NSS can turn it off.

I don’t know how MT7621 implements their hardware offloading or how similar it is to what we have for ipq806x. MT7621 successfully has a toggle switch, if we were able to bake all the drivers / firmware in as a default for ipq806x and have the off/on toggle in the firewall section turn NSS on/off, I think it would stand a chance to be accepted. Probably would require loading NSS cores at boot but not using them for accelerating packets unless the users says so, if that is possible. If anyone has mt7621 experience with hardware offloading or knows how to implement something similar… I’ve worked to keep the commits simple and clean… would just need someone with more knowledge to make it more integrated with OpenWrt.

Something like this would “turn on” NSS hardware offloading would be sweet “Implemented for mt7621 and ipq806x.”

This might be fixed by commit 144760d

1 Like

Hi guy i have some question
I'm new to openwrt
My ISP Require Pppoe and Vlan tagging for internet(vlan 60) and iptv (vlan10)
now my internet working fine but iptv not

here it's my config , I try to setting Lan Port 4 to Vlan 10


config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fd35:06dd:d49a::/48'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth1.1'

config device
	option name 'eth1.1'
	option macaddr '******'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option netmask '255.255.255.0'
	option ipv6 'off'
	option ipaddr '192.168.88.1'
	list dns '192.168.88.40'

config device
	option name 'eth0.2'
	option macaddr '60:31:97:3e:84:b7'

config interface 'wan'
	option proto 'pppoe'
	option device 'eth0.60'
	option username '*********'
	option password '*********'
	option peerdns '0'
	list dns '9.9.9.9'
	list dns '1.0.0.1'
	option ipv6 'off'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '6t 1 2 3'
	option vid '1'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '0t 5t'
	option vid '60'

config switch_vlan
	option device 'switch0'
	option vlan '3'
	option vid '10'
	option ports '4t'


and this is working config from my old asus router

any idea?

igmp-proxy?

Perhaps you also need a static route?

You need to tag the wan port as well with VLAN 10.

Edit: this part. Corrected to VLAN 10 as well for the above message.

config switch_vlan
	option device 'switch0'
	option vlan '3'
	option vid '10'
	option ports '4t'
1 Like