Adding OpenWrt support for QNAP QHora-301W

Yes, sorry if there was confusion there, I am not great at explaining things..

Where-as the real openwrt builds throw an error in some programs with certain types of encryption (similar to TSO issue), It seems like the stock firmware just covers the problem up somehow. Even more curious it's not listed as packet loss.. I thought the driver would list any retransmit packets as such. I actually had to debug to find out what the problem was.

I've got a RT3200 (main AP) on 22.03.0 and a 301W running the latest robimarko image. The 301W is connected via 5GHz mesh, no encryption, channel 161 80MHz but seems to be stuck at 54mbit/s. Any tips? First time trying mesh out.

There is no TSO in just NSS-DP, I can tell you that

I did not look at the networking code for the stock firmware tbt.
It was just a comparison in behavior between that issue there and this one..

So far I've had quite a miserable experience. I can't get a stable wireless connection in the same room with direct LOS. Running robimarko's 09-02-1951 build, on top of my comment just 3 messages up. Putting the RT3200 back in service for now. I don't think this platform is quite ready for prime time!

i politely disagree ... on my end with 160mhz channel 100 region US it performs great at rates of 1584mbits. However, the aquantia is still a mistery to me ...

My mesh consisting of three AX3600 and qnap 301W. Has been running without hitches since july ... Updating the fw almost weekly to the latest robimarko prebuilt image.


Perhaps I'll have to give t another shot then. Will report back later

Made a fresh build from @robimarko’s repo and I have almost everything working now. Only issue I have is when I have an 802.11s mesh client join, dhcp completely breaks across the whole network. That’s new.

I haven’t tested 10g nics yet outside of the failure to auto negotiate at 1g issue.

Actually it looks like it breaks all wireless connectivity on that band except for the mesh node.

Successful installed without UART.

Do on your own risk! If something went wrong you might need UART to recover.

Download openwrt-ipq807x-generic-qnap_301w-squashfs-sysupgrade.bin and AQR_ethphyfw.mbn

Extract kernel and root from openwrt-ipq807x-generic-qnap_301w-squashfs-sysupgrade.bin

With booted QuRouter OS hold WPS button until second beep to enable ssh, login with:

ssh admin@ -p 22200

Set boot partition to "1"

sudo fw_setenv current_entry 1
sudo reboot

Check boot partition (if it's not "1" repeat previous steps):

sudo fw_printenv -n current_entry

Copy files to /tmp/

scp -P 22200 kernel admin@
scp -P 22200 root admin@

Flash firmware and set boot patition to "0":

sudo dd if=/tmp/kernel of=/dev/mmcblk0p1
sudo dd if=/tmp/root of=/dev/mmcblk0p4
sudo fw_setenv current_entry 0
sudo fw_setenv boot_0 good
sudo reboot

It should boot to openwrt, now install firmware for 10G phys.
Check if partition mtd10 and backup:

cat /proc/mtd|grep "0:ethphyfw"
dd if=/dev/mtd10 of=/tmp/ethphyfw.backup

Copy backup to pc and firmware to qnap:

scp root@ ./
scp AQR_ethphyfw.mbn root@

Install firmware:

mtd erase /dev/mtd10
mtd -n write /tmp/AQR_ethphyfw.mbn /dev/mtd10

Set bootcmd and check before reboot:

fw_setenv bootcmd "aq_load_fw 0; aq_load_fw 8; bootipq"
fw_printenv -n bootcmd

Settings don't stick, so I installed sysupgrade in openwrt.
Copy file:

scp openwrt-ipq807x-generic-qnap_301w-squashfs-sysupgrade.bin root@


sysupgrade -n /tmp/openwrt-ipq807x-generic-qnap_301w-squashfs-sysupgrade.bin

Thanks to robimarko, kirdes and all contributors!



Thanks for this, it makes barrier to entry much lower.


I got a second device and successfully installed openwrt using the instructions provided by @MusikJunk.
However i ran into two problems on both, the linked fw and one that i built myself.

  1. how can i actually verify that nss works correctly?
    On the linked firmware i see at least some "nss-dp" in dmesg.
root@OpenWrt:~# dmesg | grep -i nss
[    4.166754] nss-dp 3a001000.dp1 eth0: Registered netdev eth0(qcom-id:1)
[    4.182865] nss-dp 3a001200.dp2 eth1: Registered netdev eth1(qcom-id:2)
[    4.199011] nss-dp 3a001400.dp3 eth2: Registered netdev eth2(qcom-id:3)
[    4.215108] nss-dp 3a001600.dp4 eth3: Registered netdev eth3(qcom-id:4)
[    4.238592] nss-dp 3a001800.dp5 eth4: Registered netdev eth4(qcom-id:5)
[    4.262227] nss-dp 3a007000.dp6 eth5: Registered netdev eth5(qcom-id:6)
[    4.278107] * NSS Data Plane driver
[   14.928378] nss-dp 3a001200.dp2 eth1: PHY Link up speed: 1000
[   20.153499] nss-dp 3a007000.dp6 eth5: PHY Link up speed: 10000
[  126.231221] nss-dp 3a007000.dp6 eth5: PHY Link is down
[  129.351556] nss-dp 3a007000.dp6 eth5: PHY Link up speed: 1000

Don't have that on my custom buld one, even though i loaded nss modules and firmwares.
(btw i'm also trying to get hardware accelerated crypto support for ipsec vpn, maybe i included conflicting modules?)

Either way, in neither build i was able to get more than 2,5GB/s performance on 10GBe WAN port, while having 100% CPU load on one core.

  1. Is it possible somehow to get WAN working at 1GB/s speed?
    I don't mind having some tool auto-run at boot, or switching from eth5 to a different ethernet port, but on this device i need to get WAN working at 1GB/s, which currently doesn't work by just connecting to eth5.
    10GBe gives me at least a connection (even though i suspect it's not properly offloaded)
1 Like

I don’t know the answer for 1 as I’m facing the same problem, but for 2 yes you can - if you’re using LuCI you can go to Network>Interfaces and go under the Devices tab and remove one of eth0-eth3 from all bridges. You can also add in eth5 if you’d like to use it on LAN.

Then go back to the interfaces tab and select that single eth0 or 1 or 2 or 3 port in WAN and WAN6 (if using IPv6).

Also, pleasant seeing you around here :slight_smile:

1 Like

Think you need nss-ecm

How can i get that?
It's supposed to be under Kernelmodules -> Network Support, but i can't find it there.
If i manually add an entry CONFIG_PACKAGE_kmod_qca-nss-ecm, then the module fails to compile.
Btw i'm using the ipq807x-5.15 branch of

I just noticed there is also a ipq807x-5.15-pr branch, which seems more recent and i'll try next.
Which is the currenty latest branch?

It wont work, ECM and the rest of offloading family are inherently broken and such a pain in the ass that I gave up on them

there is no plan to use it as Robi mentioned it... however there are a couple of repos on github that brought ecm and other qca packages to 5.15 &

note the above is not openwrt!!!

For my use case I haven't seen a noticeable improvement after building both repos

New territory for me -- does this mean we will never see true 10g on this device?

Never is a strong word, however there is still substantial performance left on the table by implementing some basic networking offloads like TSO, checksum offloading, VLAN etc as NSS-DP for EDMA v1 is really, really bad