Kong pro firmware for IPQ806x (R7500, R7800, EA8500, ...)

Yes, the latest build is now stripped down a bit, some prefer a leaner build and load the rest from the package repo. I also polished my dark material theme.

3 Likes

@KONG Speaking of repos, any chance you could add FRR (for BGP routing) into the repo (not the image)?

It will be included in the nss build, since package feed for 19 does not come with frr, but in trunk feed it is.

1 Like

Cheers for the info was thinking something had gone wrong when i did a update so also did a full install which was the same so was thinking you may had changed something
PS never got on with the dark theme as find some items hard to read so always swap to Bootstrap

@KONG For what it is worth, I loaded your 09/04 firmware with non-ct wireless drivers (I assume that was the main reason for an update since yesterday?), and instantly had a few IoT type devices and cameras drop off my network. Can't get them back on. Reloading 08/04 firmware and no issues at all.

I'm responding to a an answer from @KONG in another thread:

Can you share with me which build you are using (download location/build-/version number)?

I have around 12 WiFi devices connected mostly the same time and we're also working from home. I have a mix of macOS 10.15.7, Windows 10, iOS 14.4.x, Android 8, Chromecast 2, and some Shelly devices connected to either 2.4GHz or 5GHz (whichever is automatically selected by the client).

From what I see on unsuccessful reports on -ct there's mostly an Apple device involved. Or a range of Apple devices. If you're not seeing issues with the -ct driver/firmware, can I ask if you have Apple devices on your WiFi network?

Thanks in advance

After first boot with non-ct I had an issue too, probably some calibration file extraction timing issues. Second boot then worked fine as calibration file was there.
Since then no issues with non-ct, but heavy usage starts now, when my kids start to use wifi. Will test it for a few days.

I have 3 Apple devices here never had an issue with them. I also have wifi cams, that stream 24h with no interruption. And since I use cake for qos I can do skype or teams meeting all day without hickups even when I upload data at full line rate:-) My son would be there first one to complain if the latency in games is too high.

I always use my latest build: http://desipro.de/openwrt/19.07/

But for testing the build from yesterday come with non-ct as default. If non-ct holds a few days without issues I'll keep it.

I also have NSS builds with HW offloading, but these are trunk builds and I don't use it on my main router, therefore not as well tested as my 19 build.

Sounds interesting, kinda similar number of devices, kinda mixed clients. I also use cake (with piece_of_cake.qos) I've basically used my current set up a few years without any changes. Rock solid, very stable, but all based on old mainline non-ct firmware and driver. I updated earlier this year to a 19.07.5 service release that had -ct firmware and driver as default. That's when I noticed the issues with mainly Apple devices. I haven't investigated/tinkered with finding the cause as the family worked and studied from home. I then tried a pre-release 21.02 build, also with -ct firmware and driver. That didn't solve the issues with Apple devices, but also introduced some spontaneous reboots every few days, even when I switched driver and firmware from -ct to non-ct. So my conclusion was that this specific 21.02 build isn't stable enough for me.

I have to say, I might have enabled some options that might be an issue with -ct. I'll share some parts of my config that I believe might have strange results:

/etc/config/wireless:

config wifi-device 'radio0'
        option type 'mac80211'
        option hwmode '11a'
        option path 'soc/1b500000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
        option country 'US'
        option txpower '23'
        option channel 'auto'
        option cell_density '0'
        option htmode 'VHT80'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option encryption 'psk2+ccmp'
        option key 'REDACTED'
        option ssid 'MAIN SSID'
        option ieee80211w '2'

config wifi-device 'radio1'
        option type 'mac80211'
        option hwmode '11g'
        option path 'soc/1b700000.pci/pci0001:00/0001:00:00.0/0001:01:00.0'
        option htmode 'HT40'
        option country 'US'
        option legacy_rates '1'
        option txpower '30'
        option channel 'auto'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option encryption 'psk2+ccmp'
        option wps_pushbutton '0'
        option key 'REDACTED'
        option ssid 'MAIN SSID'

config wifi-iface 'wifinet0'
        option device 'radio0'
        option network 'kidsafe'
        option mode 'ap'
        option encryption 'psk2+ccmp'
        option key 'REDACTED'
        option ssid 'KIDS SSID'
        option wmm '0'
        option disassoc_low_ack '0'

config wifi-iface 'wifinet1'
        option device 'radio1'
        option network 'kidsafe'
        option mode 'ap'
        option encryption 'psk2+ccmp'
        option wps_pushbutton '0'
        option key 'REDACTED'
        option ssid 'KIDS SSID'
        option wmm '0'
        option disassoc_low_ack '0'

config wifi-iface 'wifinet2'
        option device 'radio0'
        option mode 'ap'
        option ssid 'CHROME & ANDROID DEVICES SSID'
        option network 'lan'
        option wmm '0'
        option encryption 'psk2+ccmp'
        option key 'REDACTED'
        option wps_pushbutton '0'
        option disassoc_low_ack '0'

config wifi-iface 'wifinet3'
        option device 'radio1'
        option mode 'ap'
        option ssid 'CHROME & ANDROID DEVICES SSID'
        option network 'lan'
        option wmm '0'
        option encryption 'psk2+ccmp'
        option key 'REDACTED'
        option wps_pushbutton '0'

/etc/config/network:

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

config globals 'globals'
        option ula_prefix 'fdad:be5a:04f7::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth1.1'
        option proto 'static'
        option netmask '255.255.255.0'
        option ipaddr '192.168.1.254'
        option ip6assign '64'
        list dns '149.112.112.112'
        list dns '2620:fe::fe'
        list dns '9.9.9.9'
        option delegate '0'
        option force_link '0'

config interface 'wan'
        option ifname 'eth0.2'
        option proto 'dhcp'
        option macaddr 'E0:46:9A:4E:72:0C'
        option delegate '0'
        option peerdns '0'
        option dns '149.112.112.112 2620:fe::fe 9.9.9.9'

config interface 'kidsafe'
        option proto 'static'
        option ipaddr '192.168.3.254'
        option delegate '0'
        option netmask '255.255.255.0'
        option type 'bridge'
        option dns '149.112.112.112 2620:fe::fe 9.9.9.9'

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

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

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

/etc/config/sqm:

config queue 'eth0'
        option interface 'eth0.2'
        option debug_logging '0'
        option verbosity '5'
        option qdisc_advanced '1'
        option squash_dscp '1'
        option squash_ingress '1'
        option ingress_ecn 'ECN'
        option egress_ecn 'NOECN'
        option qdisc_really_really_advanced '1'
        option iqdisc_opts 'nat dual-dsthost'
        option eqdisc_opts 'nat dual-srchost'
        option linklayer 'ethernet'
        option download '244560'
        option upload '24456'
        option qdisc 'cake'
        option script 'piece_of_cake.qos'
        option overhead '18'
        option enabled '1'

/etc/config/dhcp:

config dnsmasq 'main'
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option expandhosts '1'
        option cachesize '1000'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases.main'
        option localservice '1'
        option local '/thuis/'
        option domain 'thuis'
        list interface 'lan'
        list rebind_domain 'plex.direct'
        option confdir '/tmp/dnsmasq.d'
        option resolvfile '/tmp/resolv.conf.auto'

config dnsmasq 'kidsafe'
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option expandhosts '1'
        option cachesize '1000'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases.kidssafe'
        option localservice '1'
        option local '/kidsafe/'
        option domain 'kidsafe'
        list interface 'kidsafe'
        list notinterface 'lo'
        list addnhosts '/etc/safe-search/enabled'
        option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'

config dhcp 'lan'
        option instance 'main'
        option interface 'lan'
        option dnsmasq_config 'main'
        option start '80'
        option leasetime '24h'
        option force '1'
        option limit '200'
        list domain 'local'
        list domain 'thuis'

config dhcp 'kidsafe_private'
        option instance 'kidsafe'
        option interface 'kidsafe'
        option dnsmasq_config 'kidsafe'
        option start '100'
        option leasetime '24h'
        option limit '200'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'

I've added a second network to be able to get a somewhat restricted set of search engines and moderated YouTube experience to kids, on their own SSID. The third SSID for Android, Chromebook devices is not using WMM and 802.11w on the 5GHz interface. When I enable that, my Android phone and Chromebook (CloudReady) won't connect to the 5GHz interface, while my Apple devices (MacBook, iPads, iPhones) have no issue with WMM and 802.11w enabled.

And last but not least; I've read that enabling SQM together with Software flow offloading ( flow_offloading '1' ) won't work. But I've enabled both 2 years ago and it all seems to work since that time. My suspicion towards -ct driver and firmware seems to only affect my Apple devices so far, so I doubt that enabling SQM with flow_offloading has any effect on -ct driver and firmware.

I've posted parts of my config to give you an idea of what I'm doing. I don't think it's particularly exotic to have an effect on -ct driver/firmware and Apple devices. Although WMM and 802.11w might just be a bad combination with -ct driver/firmware. I'm posting all this info, maybe even too much, but I'd love to find out if I (and others with me) can use -ct driver/firmware as the default in the future. I simply love OpenWRT, not only what you can do with it; freedom to configure and utilize unused potential, but also being able to get security updates to very capable hardware.

I have pretty much the defaults, no issues with WMM but we only have 3 Androids, that support 5G.
On both radios a guest network, that is isolated from the rest.

config wifi-device 'radio0'
        option type 'mac80211'
        option hwmode '11a'
        option path 'soc/1b500000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
        option htmode 'VHT80'
        option log_level '1'
        option channel '48'
        option country 'DE'
        option txpower '20'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option wpa_disable_eapol_key_retries '1'
        option ssid 'SSID1'
        option key 'xxx'
        option ieee80211w '1'
        option encryption 'sae-mixed'

config wifi-iface 'wifinet0'
        option device 'radio0'
        option mode 'ap'
        option wpa_disable_eapol_key_retries '1'
        option network 'lan2'
        option ssid 'SSID2'
        option macfilter 'deny'
        option key 'xxx'
        option ieee80211w '1'
        option encryption 'sae-mixed'

Current flow_offloading in openwrt should work with basic qos. But flow offloading can't compete with hw offload through nss. My trunk nss build handles 1Gbit with enabled qos with almost no cpu load, but I can't talk about stability as my main router is still on 19.07, trunk is broken from time to time and I can't afford an outage of more then 5min on that unit:-)

Thanks for sharing, I see your wireless config is a bit different on details (encryption, not forcing 802.11w). According to the description in Luci, 802.11w has this remark:

Requires the 'full' version of wpad/hostapd and support from the wifi driver
(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)

"...and support from the wifi driver". Sounds interesting enough to dig in further. Your experience and wireless config will help me to track down differences :+1:

I've updated my wireless config:

root@OpenWrt:/etc/config# cat wireless                                                                                                                                            
                                                                                                                                                                                  
config wifi-device 'radio0'                                                                                                                                                       
        option type 'mac80211'                                                                                                                                                    
        option hwmode '11a'                                                                                                                                                       
        option path 'soc/1b500000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'                                                                                                       
        option country 'US'                                                                                                                                                       
        option txpower '23'                                                                                                                                                       
        option channel 'auto'                                                                                                                                                     
        option cell_density '0'                                                                                                                                                   
        option htmode 'VHT80'                                                                                                                                                     
                                                                                                                                                                                  
config wifi-iface 'default_radio0'                                                                                                                                                
        option device 'radio0'                                                                                                                                                    
        option network 'lan'                                                                                                                                                      
        option mode 'ap'                                                                                                                                                          
        option key 'REDACTED'                                                                                                                                         
        option ssid 'SSID1'                                                                                                                                              
        option ieee80211w '1'                                                                                                                                                     
        option encryption 'sae-mixed'                                                                                                                                             
                                                                                                                                                                                  
config wifi-device 'radio1'
        option type 'mac80211'
        option hwmode '11g'
        option path 'soc/1b700000.pci/pci0001:00/0001:00:00.0/0001:01:00.0'
        option htmode 'HT40'
        option country 'US'
        option txpower '30'
        option channel 'auto'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option key 'REDACTED'
        option ssid 'SSID1'
        option ieee80211w '1'
        option encryption 'sae-mixed'

config wifi-iface 'wifinet0'
        option device 'radio0'
        option network 'kidsafe'
        option mode 'ap'
        option key 'REDACTED'
        option ssid 'SSID2'
        option disassoc_low_ack '0'
        option ieee80211w '1'
        option encryption 'sae-mixed'

config wifi-iface 'wifinet1'
        option device 'radio1'
        option network 'kidsafe'
        option mode 'ap'
        option key 'REDACTED'
        option ssid 'SSID2'
        option disassoc_low_ack '0'
        option encryption 'psk2+ccmp'

I've removed an SSID since by setting 802.11w to optional and using a mixed mode of WPA2 and WPA3 devices can pick which they support ultimately. All my devices can connect with this setting, except for an old Dell XPS13 from 2012 that's running CloudReady. I guess that WiFi-card doesn't support the mix of WPA2 and WPA3 with 802.11w as optional, so one SSID is running on WPA2.

I've also done some tweaking on minimal performance settings and better utilization of both cores:

/etc/rc.local:

#utilize both cpu cores for network processing
for file in /sys/class/net/*
do
	echo 3 > $file"/queues/rx-0/rps_cpus"
	echo 3 > $file"/queues/tx-0/xps_cpus"
done

echo ondemand > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo ondemand > /sys/devices/system/cpu/cpufreq/policy1/scaling_governor
echo 800000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
echo 800000 > /sys/devices/system/cpu/cpufreq/policy1/scaling_min_freq
echo 20 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
exit0

and some SQM changes:

config queue 'eth0'
        option interface 'eth0.2'
        option debug_logging '0'
        option verbosity '5'
        option qdisc_advanced '1'
        option squash_dscp '1'
        option squash_ingress '1'
        option ingress_ecn 'ECN'
        option egress_ecn 'NOECN'
        option qdisc_really_really_advanced '1'
        option iqdisc_opts 'docsis besteffort ingress nat'
        option eqdisc_opts 'docsis ack-filter nat'
        option download '244560'
        option upload '24456'
        option enabled '1'
        option linklayer 'none'
        option qdisc 'cake'
        option script 'piece_of_cake.qos'

dslreports.com seems down at the moment so I can't verify that just now.

At the moment I'm going to run old mainline ath10k driver and mainline ath10k firmware from kvalo's GitHub repository for the next week, then I'm going to try -ct driver and -ct and -ct-htt firmware a while later.

I tried the 2021-04-09 build for the first time on Friday but I had to revert to 2021-03-14 build immediately because Samba Network Shares stopped working and I was using this service at that time.

Today I tried this build again on my R7500v2 and after some digging I found there is a Network Shares under Luci Services present after first boot but Samba isn't installed by default. I guess this option under Luci Services is a leftover from Kong's effort to make the firmware leaner.

Samba Network Shares started to work fine after I installed the packages from the software repo but now I have two Network Shares tabs under Luci Services. I also installed miniDLNA service and Luci configuration from the repo and it went fine.

The non-ct wireless driver included at the new build is working great with all my devices, which covers several Android clients (versions 9 to 11), printer, computers and TVs. From my amateur perspective, this driver seems to be better than the ct flavor used previously.

Thanks a lot for your work, @KONG.

1 Like

Successful upgrade here to the April 12 fw for the R7800, with sysupgrade / keep settings process.

In the absence of a clear changelog, the one thing I do see is the kernel bump to 4.14.229.

@Kong - I know you did special work to improve CAKE SQM in R7800 firmwares, but is that included in these 19.07 versions?

I have a 500 Mbs line, runs SQM with CAKE inbound at 380000 and get about 350Mbs net bandwidth, along with 35Mbs up, all resulting in A+ scores with DSLReports and Waveform.

I had read in the (older) changelog in your directory that the 19.07 version can "now shape up to 600Mbps".

What settings do you use for this?

Thanks for all your AWESOME work @KONG !

The 600Mbps, are plain ethernet to dhcp wan, no wifi load, and no pppoe load and multiple streams and cpu is on the limit. But for such fast subscriptions it is better to use the trunk ipq-nss build. I have created a very simple nss qos script that you can enable through webif. Just choose fq_codel + nss.qos as Queue setup script. This will handle your 500line easily without putting any load on the cpu:-)

In addition to that both builds now come with non-ct firmware with works with 160Mhz channels, in my test with an AX200 client I was able to transfer at 800Mbps, not bad for a 2 stream client. 80Mhz does around 580 on the same client, too bad we don' have working 80+80 yet. It is much better in areas where you have interference from other 5Gs.

2 Likes

I'm having a hard time with Network Shares. I made it work yesterday with the 2021-04-09 build after a factory reset, the installation of Samba package from software repo and a fresh configuration of everything I need. But today I updated to the 2021-04-12 build while keeping the previous configuration and Network Shares broke again. It's worth to mention that after updating the firmware, I added the Samba package as before but none of my devices can see the network shares.

Could this be caused by some kind of interaction with the first Network Shares that appears installed by default? Any ideas will be very appreciated.

I switched from samba4 to ksmbd, since samba4 is huge and fro simple shares overkill.
I didn't see any problem with ksmbd here with Win10 and Linux, just had to set it up as it does not use the config from samba.

Judging from the latest ksmbd commits it should be pretty stable now

1 Like

Thanks for the info, @KONG. I'll read about the configuration of ksmbd.

Update: I found this this thread and this issue report very useful.

Thanks Kong - with multiple people on the internet here, stability is the first priority, so not sure what to think of the NSS trunk builds and no easy way to try them in production.

I tinkered with the SQM settings, selecting CAKE and Simplest, instead of Piece of Cake, and added 18 for the link layer adaptation (DocSis modem) vs having None in there thus far.

That puts it at a solid A+ across the board at just in the 400 Mbs and 35 Mbs up. No person ever runs these speeds sustained anyway, so maybe I should leave good enough alone!

Been running 2021-04-12 for a day now on a r7800 and all is good with my devices

iPhone 7s
Fire Cube v2
Samsung Galaxy Tab A7
PS4
Plus 3 Raspberry Pi's running Plex, TVheadend and Picoreplayer