Adding OpenWrt support for QNAP QHora-301W

What device/gadget should I get in order to connect to the on-board serial pins.

You will need a serial cable to connect to the serial pins in the router.
You can find more details about this cable at Serial Cables page on Openwrt

EDIT (1):
The best is FDTI cable, but they are a bit expensive

1 Like

I suppose this one should do the job.

I bought two different cables from AliExpress in the past one of them was similar to the one you shared its link, however it never worked, other worked on Linux but did not work on windows.

I ended up with FTDI cable at the end of the day.

1 Like

Without NSS offloading should we expect full LAN (no NAT) performance from 10G ports.

I've tried the procedure for flashing OpenWrt without opening the router from @MusikJunk . I've used @robimarko sysupgrade image from his repo.
It was successfully flashed and booted. I've started to explore the settings. I couldn't connect to the 2.4GHz wlan. Cannot say the reason for it. The 5G worked OK. The Wlan LED was not working.

I was following this and the other thread about IPQ807x NSS Build. I decided to try latest @AgustinLorenzo NSS build.
I've tried to upgrade from web interface using the sysupgrade firmware image - 2023-06-12-2358.
I've got a warning that the device 301W is supported by the image but the image version is not compatible with current version (1.0 -> 1.1) and it was recommended to upgrade without keeping the settings.
I've done it using the force upgrade option.
Unfortunately the router couldn't boot anymore. When I power on the device only the first and second LEDs are on, then the second LED flashes for several seconds and turns off and only the first LED remains on. And that's it.
Probably I've made a mistake but I don't understand what I did wrong. Probably I will have to open it to use the serial console.
Can anyone help.

I would start by doing exactly what you said and connecting up serial

you tried fail safe mode?

maybe it kept the config for some reason.

1 Like

I had that issue once when loading a saved config. Held the reset button on the back while booting until there was rapid flashing. Was not able to get a IP and left it on. Checked again after a couple hours and it just started working again.

1 Like

Same boat, I brick my ax6 after force upgrade. I need set to official firmware first than build again using snapshot openwrt-ipq807x-generic-xiaomi_ax6-initramfs-nand-factory.ubi, follow openwrt guide.

After couple time test using latest snapshot firmware working normal, than I try install AgustinLorenzo build, work well no big issue, only issue when install mwan3 package

Coz my isp only 100mbps I switch back to latest snapshot version, I prefer mwan3 than nss package.

1 Like

If I press the reset button continuously nothing happens.
If I press the reset button during the fast blinking of the LED, the LED just continues blinking infinitely.
The LEDs of the LAN ports don't work no matter if I connect a cable to them.
Can anyone that opened the device give me a clue how to easily remove the rubber pads. Are they glued to the plastic. They seem firmly attached to it.

Yes, the rubber pads are glued. You can try to insert a flat screwdriver between the pads and the shell to detach them.

1 Like

Try setting a static ip.


Do a continuous ping on and after the fast blinking and let it sit for a while. The LED on the LAN ports also didn't show up for a while.

I couldn't do anything more and just opened the router and connected to the serial console.
I see this now

I'll need a little more help what to do next.
When I reboot the router it stops at the last line below but I can see the above OpenWrt console screen. It seems to me that the OpenWrt is running but I cannot access it via LAN ports.

[    4.152047] * NSS Data Plane driver
[    4.158460] **********************************************************
[    4.171950] xhci-hcd xHCI Host Controller
[    4.171998] xhci-hcd new USB bus registered, assigned bus number 1
[    4.176477] xhci-hcd hcc params 0x0220fe65 hci version 0x110 quirks 0x0000000002010010
[    4.183981] xhci-hcd irq 111, io mem 0x08a00000
[    4.193412] xhci-hcd xHCI Host Controller
[    4.199544] xhci-hcd new USB bus registered, assigned bus number 2
[    4.204821] xhci-hcd Host supports USB 3.0 SuperSpeed
[    4.212674] hub 1-0:1.0: USB hub found
[    4.218972] hub 1-0:1.0: 1 port detected
[    4.222874] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    4.226992] hub 2-0:1.0: USB hub found
[    4.234856] hub 2-0:1.0: 1 port detected
[    4.238684] xhci-hcd xHCI Host Controller
[    4.242493] xhci-hcd new USB bus registered, assigned bus number 3
[    4.247914] xhci-hcd hcc params 0x0220fe65 hci version 0x110 quirks 0x0000000002010010
[    4.255369] xhci-hcd irq 112, io mem 0x08c00000
[    4.264820] xhci-hcd xHCI Host Controller
[    4.270960] xhci-hcd new USB bus registered, assigned bus number 4
[    4.276259] xhci-hcd Host supports USB 3.0 SuperSpeed
[    4.284049] hub 3-0:1.0: USB hub found
[    4.290414] hub 3-0:1.0: 1 port detected
[    4.294317] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[    4.298427] hub 4-0:1.0: USB hub found
[    4.306292] hub 4-0:1.0: 1 port detected
[    4.312224] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    4.320809] init: - preinit -
[    4.503664] random: jshn: uninitialized urandom read (4 bytes read)
[    4.523897] random: jshn: uninitialized urandom read (4 bytes read)
[    4.536120] random: jshn: uninitialized urandom read (4 bytes read)
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[    6.651888] loop0: detected capacity change from 0 to 1048576
[    6.663536] loop0: detected capacity change from 1048576 to 1024256
[    6.670108] mount_root: failed to mount -t ext4 /dev/loop0 /tmp/overlay: No such device
[    6.682591] urandom-seed: Seed file not found (/etc/urandom.seed)
[    6.705004] procd: - early -
[    6.705078] procd: - watchdog -
[    7.230055] procd: - watchdog -
[    7.236582] procd: - ubus -
[    7.256147] random: ubusd: uninitialized urandom read (4 bytes read)
[    7.288359] random: ubusd: uninitialized urandom read (4 bytes read)
[    7.288522] random: ubusd: uninitialized urandom read (4 bytes read)
[    7.295468] procd: - init -
Please press Enter to activate this console.
[    7.416797] urngd: v1.0.2 started.
[    7.430510] random: crng init done
[    7.430559] random: 27 urandom warning(s) missed due to ratelimiting
[    7.439459] kmodloader: loading kernel modules from /etc/modules.d/*
[    7.449267] tun: Universal TUN/TAP device driver, 1.6
[    7.459930] qca-nss 39000000.nss: Direct firmware load for qca-nss0.bin failed with error -2
[    7.459978] qca-nss 39000000.nss: Falling back to sysfs fallback for: qca-nss0.bin
[    7.545777] ffffffc000a22300: request_firmware failed with err code: -12
[    7.545797] ffffffc000a22300: firmware load from driver failed
[    7.551604] qca-nss: probe of 39000000.nss failed with error -12
[    7.557797] qca-nss 39400000.nss: Direct firmware load for qca-nss1.bin failed with error -2
[    7.563411] qca-nss 39400000.nss: Falling back to sysfs fallback for: qca-nss1.bin
[    7.595696] ffffffc000a29c00: request_firmware failed with err code: -12
[    7.595715] ffffffc000a29c00: firmware load from driver failed
[    7.601568] qca-nss: probe of 39400000.nss failed with error -12
[    7.614519] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    7.616851] nat46: module (version 1182f30785e4274913f01a8c3d7e1b5437ae3819) loaded.
[    7.620634] gre: GRE over IPv4 demultiplexor driver
[    7.628607] ip_gre: GRE over IPv4 tunneling driver
[    7.634058] ip6_gre: GRE over IPv6 tunneling driver
[    7.640261] QCA multicast snooping installed successfully
[    7.642405] nss_vlan_mgr_init_module[1926]:Module (Build Build Id: 06/12/23, 23:48:38) loaded
[    7.651212] PPP generic driver version 2.4.2
[    7.664778] NET: Registered PF_PPPOX protocol family
[    7.666844] PPTP driver version 0.8.5
[    7.682131] <NSS-CRYPTO>:module loaded Build_ID - 06/12/23, 23:43:28 SoC=ipq807x
[    7.686915] GACT probability on
[    7.689303] Mirror/redirect action on
[    7.696370] u32 classifier
[    7.696406]     input device check on
[    7.698019]     Actions configured
[    7.707313] Loading modules backported from Linux version v6.1.24-0-g0102425ac76b
[    7.707356] Backport generated by backports.git v5.15.92-1-44-gd6ea70fafd36
[    7.721941] NET: Registered PF_QIPCRTR protocol family
[    7.725086] wireguard: WireGuard 1.0.0 loaded. See for information.
[    7.726017] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <>. All Rights Reserved.
[    7.738174] xt_time: kernel timezone is -0000
[    7.759722] nf_conntrack_rtsp v0.7 loading
[    7.762471] nf_nat_rtsp v0.7 loading
[    7.780665] ath11k c000000.wifi: ipq8074 hw2.0
[    7.780699] ath11k c000000.wifi: FW memory mode: 0
[    7.784241] remoteproc remoteproc0: powering up cd00000.q6v5_wcss
[    7.789725] remoteproc remoteproc0: Booting fw image IPQ8074/q6_fw.mdt, size 668
[    8.532274] remoteproc remoteproc0: remote processor cd00000.q6v5_wcss is now up
[    8.536596] kmodloader: done loading kernel modules from /etc/modules.d/*
[    8.576890] ath11k c000000.wifi: qmi ignore invalid mem req type 3
[    8.583340] ath11k c000000.wifi: chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff
[    8.583367] ath11k c000000.wifi: fw_version 0x290c84a5 fw_build_timestamp 2023-03-25 07:34 fw_build_id WLAN.HK.
[    8.661800] ath11k c000000.wifi: qmi failed to load CAL data file:cal-ahb-c000000.wifi.bin
[    8.661870] ath11k c000000.wifi: failed to load board data file: -12
[   12.190158] ECM init
[   12.190239] ECM database jhash random seed: 0x1f2d321a
[   12.208655] ECM init complete
bird4: Cannot determine router ID, please configure it manually

I've opened a new thread.
I've finally recovered from this, but at the moment cannot save any settings.
I've made it this way "just in case".

I want to return to robimarko's build (currently with AugustinLorenzo NSS build which cannot keep setting changes). When I upload -sysupgrade.bin I get the same message I 've got when I 've done the opposite flash and I've lost access to the router.

Any suggestions?

Edit - I've answered myself my own questions here.
It wasn't so obvious and easy but at least now I have properly working OpenWrt build.

I will have to cool down the rush a bit.
So let's do it again slowly this time.
I have few questions. Using robimarko's build I get errors about robimarko's repo when I try software update list.
For example trying to install block-mount gives this.

Executing package manager

Multiple packages (libgcc1 and libgcc1) providing same name marked HOLD or PREFER. Using latest.
Installing block-mount (2023-02-28-bfe882d5-1) to root...
Installing libubox20230523 (2023-05-23-75a3b870-1) to root...
Installing libblobmsg-json20230523 (2023-05-23-75a3b870-1) to root...
Configuring libubox20230523.
Configuring libblobmsg-json20230523.
Configuring block-mount.


Error loading shared library No such file or directory (needed by /sbin/block)
Error relocating /sbin/block: ubus_free: symbol not found
Error relocating /sbin/block: ubus_lookup_id: symbol not found
Error relocating /sbin/block: ubus_connect: symbol not found
Error relocating /sbin/block: ubus_invoke_fd: symbol not found

On Software Tab I see Free Space as 99% (460.96 MiB). The eMMC is 4GB. Where is the other space? Shouldn't this partition be the biggest one, for example 3GB or more?
Currently I have this.

WLAN LED wasn't working by default so I had to add it to the LED Configuration and then it started working.

Does anyone know what kind of internal buzzer QHora-301W has built-in. I want to install a package (I see there is a package "Beep" to control internal speaker but I don't know whether it is suitable) to control the internal buzzer for some actions. For example if CPU temperature is high I want a buzzer to alarm about it.

I've tried Attended Sysupgrade to upgrade but it fails with message "Impossible package selection".

I just bought my 2nd 301w. I am happy enough with this device to shell out the cash on a 2nd one.

Just FYI, for those interested...

Running snapshot, regular github build (none of the custom builds etc)... I got about 250mb/s inbound and about 300mb/s outbound on the 10gb adapter.

Edit : After updating my NIC firmware, as well as tuning some things I have landed on about 300mb/s inbound and 250mb/s outbound.

Not bad!

What firmwares is that? Any link?

Client side.

I would love to update the firmware on the 301w end, but the brief searches I have done came up with nothing available beyond the firmware that everyone uses when they switch over to OpenWRT.

Hi, I skimmed through the thread to get an overview but it wasn't really obvious, so I have to ask: I plan to get a 10gbe capable home router and I wanted to ask how well OpenWRT supports this device. Does it make sense to get this device if I want a stable and performant OpenWRT experience?


I own two of these.

I highly recommend this device, with the following things in mind:

If you need / want 10gbe... You will be hard pressed to find anything better unless you custom build. Even then, unless you are willing to accept a "small pc" sized form factor... You will still have trouble finding something that can take 2x mini pcie AND have 10gbe.

Bottom line : Want something "router sized" with AX + 10gbe? This is really your only option.

You will need to run the NSS build to get anywhere near 10gbe LAN or WAN performance. There is a thread where I am quite active the last week here on the forum. The NSS build is stable, very much so. But get ready to self compile and make the whole openwrt experience a little less plug and play. Once the build is installed and running, you will notice no difference, except when upgrading. Two things do not work for me: SQM and MWAN3... I was able to code a custom mwan3 like script... But the SQM is still up in the air.

Bottom line : Stock OpenWRT? Maxes out at about 2.5gbe. NSS build? Maxes out at around 8gbe (for me anyways).

This is not the cheapest of devices. I was happy enough with it to buy a 2nd one.

1 Like