Adding OpenWrt support for QNAP QHora-301W

Works without problems. 802.11s mesh with batman. Adguardhome and dlna server. 6 SSID

1 Like

Great, thanks, thought I'd check as there's mention of master throughout this thread but it wasn't clear if it was prior to the 23.05 branch being cut. Mine is a new device & I was hoping to avoid cracking it open; & thanks to MusikJunk's guide I'm now up and running.

I'd update the wiki myself but neither of my old openwrt forum or wiki accounts work; it's been some time since I last logged in!

anyone using the latest snapshot with no issues that includes ESS dt binding changes and DP nodes ?

Why are the specs so far off from the device? When I log into luci it shows 868.88MB of memory, this is a 1 GB device?

For storage it shows 463.02 MB of storage. But this is a 4 GB eMMC? https://openwrt.org/toh/hwdata/qnap/qnap_qhora-301w

What accounts for these discrepancies?

Rest of the RAM is reserved for various stuff, most of it is reserved for WLAN remoteprocessor.

LuCI will only show you the empty space in the rootfs partition that is currently being used

1 Like

If there is a 4GB eMMC is it 3.2GB of 4GB is not the "root partition".

Exactly, there are 2 root partitions and bunch of other stuff

I have a bug report on the firmware, if anyone wants to confirm it.

For the 10g-2 port if you set a static mac address and apply it, it will not persist after reboot. The mac address will show populated, but if you examine the interface with ip link | grep 10g-2 -A1 you'll see it doesn't match what is set in luci.

For a temporary workaround, this works in startup scripts.

ip link set 10g-2 down
ip link set 10g-2 address static_mac up

I'm guessing the aquantia phy driver isn't done initializing until after that setting takes effect?

It’s very nice to see that this device is finally supported thanks very much! What is the issue and Status around NSS? Can it saturate full Wifi Bandwidth available?

As I would like to use mine as an AP is it still possible to have multiple virtual SSIDs like with the stock Firmware?

I try to load the AQR firmware using kernel but without success.

See qualcommax: 301w: enable using kernel for AQR firmware loading

I extracted the two AQR*.cld files from stock firmware and placed them inside /lib/firmware, also tried /lib/firmware/marvell. But can't get the 10G ports to work.

Any ideas?

root@QHora:~# sha256sum /lib/firmware/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x0_ID44778_VER1630.cld 
4f55e86659c6dc5a83caea9a86af16e5cea628a245aeadf123a6eb104c96c47a  /lib/firmware/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x0_ID44778_VER1630.cld
root@QHora:~# sha256sum /lib/firmware/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x8_ID44776_VER1630.cld 
ac256b3f172cc3847fd5084183b08e852913103bb12d3b8efe97814488988e7e  /lib/firmware/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x8_ID44776_VER1630.cld

dmesg | grep AQ

[    1.738175] Aquantia AQR113C 90000.mdio-1:00: bad firmware CRC: file 0xffff calculated 0x21b1
[    1.738226] Aquantia AQR113C 90000.mdio-1:00: firmware loading failed: -22
[    1.745805] Aquantia AQR113C 90000.mdio-1:00: Direct firmware load for marvell/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x0_ID44778_VER1630.cld failed with error -2
[    1.752492] Aquantia AQR113C 90000.mdio-1:00: Falling back to sysfs fallback for: marvell/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x0_ID44778_VER1630.cld
[   28.689048] Aquantia AQR113C 90000.mdio-1:00: aqr107_wait_reset_complete failed: -110
[   64.487930] Aquantia AQR113C 90000.mdio-1:00: failed to find FW file marvell/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x0_ID44778_VER1630.cld (-110)
[   64.487996] Aquantia AQR113C: probe of 90000.mdio-1:00 failed with error -110

dmesg

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 6.1.78 (builder@buildhost) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 12.3.0 r25251-afca1236f3) 12.3.0, GNU ld (GNU Binutils) 2.40.0) #0 SMP Mon Feb 19 19:52:06 2024
[    0.000000] Machine model: QNAP 301w
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000040000000-0x0000000040ffffff]
[    0.000000]   node   0: [mem 0x0000000041000000-0x000000004a3fffff]
[    0.000000]   node   0: [mem 0x000000004a400000-0x00000000510fffff]
[    0.000000]   node   0: [mem 0x0000000051100000-0x000000007fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.0 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.0
[    0.000000] percpu: Embedded 17 pages/cpu s31592 r8192 d29848 u69632
[    0.000000] pcpu-alloc: s31592 r8192 d29848 u69632 alloc=17*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048
[    0.000000] Kernel command line: console=ttyMSM0,115200n8 root=PARTUUID=b74c976a-1851-b1a6-a3a2-b4d33d337d99 rootwait
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 887016K/1048576K available (8192K kernel code, 878K rwdata, 2392K rodata, 1344K init, 291K bss, 161560K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv2m: range[mem 0x0b00a000-0x0b00affc], SPI[448:479]
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] arch_timer: cp15 and mmio timer(s) running at 19.20MHz (virt/virt).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
[    0.000001] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[    0.000120] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000)
[    0.000134] pid_max: default: 32768 minimum: 301
[    0.000598] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.000612] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.002450] cblist_init_generic: Setting adjustable number of callback queues.
[    0.002459] cblist_init_generic: Setting shift to 2 and lim to 1.
[    0.002650] rcu: Hierarchical SRCU implementation.
[    0.002654] rcu:     Max phase no-delay instances is 1000.
[    0.003470] smp: Bringing up secondary CPUs ...
[    0.004105] Detected VIPT I-cache on CPU1
[    0.004245] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.004907] Detected VIPT I-cache on CPU2
[    0.005009] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.005625] Detected VIPT I-cache on CPU3
[    0.005722] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.005789] smp: Brought up 1 node, 4 CPUs
[    0.005797] SMP: Total of 4 processors activated.
[    0.005803] CPU features: detected: 32-bit EL0 Support
[    0.005807] CPU features: detected: CRC32 instructions
[    0.005870] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
[    0.005876] CPU: All CPU(s) started at EL1
[    0.005879] alternatives: applying system-wide alternatives
[    0.016785] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.016813] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.017026] pinctrl core: initialized pinctrl subsystem
[    0.018480] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.019009] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.019053] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.019104] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.019506] thermal_sys: Registered thermal governor 'step_wise'
[    0.019692] cpuidle: using governor menu
[    0.019963] ASID allocator initialised with 65536 entries
[    0.046464] qcom,cpr4-apss-regulator b018000.cpr4-ctrl: CPR valid fuse count: 4
[    0.055356] SCSI subsystem initialized
[    0.055558] usbcore: registered new interface driver usbfs
[    0.055610] usbcore: registered new interface driver hub
[    0.055656] usbcore: registered new device driver usb
[    0.056104] qcom_scm: convention: smc arm 64
[    0.057636] clocksource: Switched to clocksource arch_sys_counter
[    0.058783] NET: Registered PF_INET protocol family
[    0.058926] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.060421] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[    0.060444] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.060459] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.060546] TCP bind hash table entries: 8192 (order: 6, 262144 bytes, linear)
[    0.060819] TCP: Hash tables configured (established 8192 bind 8192)
[    0.060920] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.060957] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.061171] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.061218] PCI: CLS 0 bytes, default 64
[    0.062680] workingset: timestamp_bits=46 max_order=18 bucket_order=0
[    0.067675] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.067688] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.068734] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 248)
[    0.070766] qcom-qmp-usb-phy 58000.phy: supply vdda-phy not found, using dummy regulator
[    0.070922] qcom-qmp-usb-phy 58000.phy: supply vdda-pll not found, using dummy regulator
[    0.071762] qcom-qmp-usb-phy 78000.phy: supply vdda-phy not found, using dummy regulator
[    0.071881] qcom-qmp-usb-phy 78000.phy: supply vdda-pll not found, using dummy regulator
[    0.072997] qcom-qusb2-phy 59000.phy: supply vdd not found, using dummy regulator
[    0.073132] qcom-qusb2-phy 59000.phy: supply vdda-pll not found, using dummy regulator
[    0.073187] qcom-qusb2-phy 59000.phy: supply vdda-phy-dpdm not found, using dummy regulator
[    0.073348] qcom-qusb2-phy 59000.phy: Registered Qcom-QUSB2 phy
[    0.073539] qcom-qusb2-phy 79000.phy: supply vdd not found, using dummy regulator
[    0.073659] qcom-qusb2-phy 79000.phy: supply vdda-pll not found, using dummy regulator
[    0.073728] qcom-qusb2-phy 79000.phy: supply vdda-phy-dpdm not found, using dummy regulator
[    0.073902] qcom-qusb2-phy 79000.phy: Registered Qcom-QUSB2 phy
[    0.077094] bam-dma-engine 704000.dma-controller: num-channels unspecified in dt
[    0.077110] bam-dma-engine 704000.dma-controller: num-ees unspecified in dt
[    0.081725] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[    0.083832] msm_serial 78b3000.serial: msm_serial: detected port #0
[    0.083872] msm_serial 78b3000.serial: uartclk = 3686400
[    0.083987] 78b3000.serial: ttyMSM0 at MMIO 0x78b3000 (irq = 20, base_baud = 230400) is a MSM
[    0.084017] msm_serial: console setup on port #0
[    0.791827] printk: console [ttyMSM0] enabled
[    0.796984] msm_serial: driver initialized
[    0.805903] loop: module loaded
[    0.805981] Loading iSCSI transport class v2.0-870.
[    0.809696] spi_qup 78b5000.spi: IN:block:16, fifo:64, OUT:block:16, fifo:64
[    0.813664] spi-nor spi0.0: w25q64dw (8192 Kbytes)
[    0.820328] 13 fixed-partitions partitions found on MTD device spi0.0
[    0.824626] Creating 13 MTD partitions on "spi0.0":
[    0.831173] 0x000000000000-0x000000050000 : "0:sbl1"
[    0.836404] 0x000000050000-0x000000060000 : "0:mibib"
[    0.841505] 0x000000060000-0x0000001e0000 : "0:qsee"
[    0.846447] 0x0000001e0000-0x0000001f0000 : "0:devcfg"
[    0.851688] 0x0000001f0000-0x000000200000 : "0:apdp"
[    0.856435] 0x000000200000-0x000000240000 : "0:rpm"
[    0.861590] 0x000000240000-0x000000250000 : "0:cdt"
[    0.866113] 0x000000250000-0x000000270000 : "0:appsblenv"
[    0.870998] 0x000000250000-0x000000350000 : "0:appsbl"
[    0.876557] 0x000000370000-0x0000003b0000 : "0:art"
[    0.881665] 0x0000003b0000-0x000000430000 : "0:ethphyfw1"
[    0.886389] 0x000000430000-0x0000004b0000 : "0:ethphyfw2"
[    0.892010] 0x0000004b0000-0x000000800000 : "reserved"
[    0.902369] spmi spmi-0: PMIC arbiter version v2 (0x20010000)
[    0.928351] i2c_dev: i2c /dev entries driver
[    0.934724] sdhci: Secure Digital Host Controller Interface driver
[    0.934768] sdhci: Copyright(c) Pierre Ossman
[    0.939835] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.946215] remoteproc remoteproc0: releasing cd00000.q6v5_wcss
[    0.953218] NET: Registered PF_INET6 protocol family
[    0.956661] Segment Routing with IPv6
[    0.960930] In-situ OAM (IOAM) with IPv6
[    0.964439] NET: Registered PF_PACKET protocol family
[    0.968413] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    0.973454] 8021q: 802.1Q VLAN Support v1.8
[    0.977662] mmc0: SDHCI controller on 7824900.mmc [7824900.mmc] using ADMA 64-bit
[    1.008726] qcom,cpr4-apss-regulator b018000.cpr4-ctrl: CPR valid fuse count: 4
[    1.009046] cpr4_ipq807x_apss_read_fuse_data: apc_corner: speed bin = 0
[    1.014868] cpr4_ipq807x_apss_read_fuse_data: apc_corner: CPR fusing revision = 1
[    1.021487] cpr4_ipq807x_apss_read_fuse_data: apc_corner: CPR misc fuse value = 0
[    1.029144] cpr4_ipq807x_apss_read_fuse_data: apc_corner: Voltage boost fuse config = 0 boost = disable
[    1.036629] cpr3_mem_acc_init: apc: not using memory accelerator regulator
[    1.045772] cpr4_ipq807x_apss_calculate_open_loop_voltages: apc_corner: fused      SVS: open-loop= 704000 uV
[    1.052722] cpr4_ipq807x_apss_calculate_open_loop_voltages: apc_corner: fused      NOM: open-loop= 808000 uV
[    1.062703] cpr4_ipq807x_apss_calculate_open_loop_voltages: apc_corner: fused    TURBO: open-loop= 864000 uV
[    1.072514] cpr4_ipq807x_apss_calculate_open_loop_voltages: apc_corner: fused   STURBO: open-loop= 936000 uV
[    1.082377] cpr4_ipq807x_apss_calculate_target_quotients: apc_corner: fused      SVS: quot[ 7]= 740, quot_offset[ 7]=   0
[    1.092126] cpr4_ipq807x_apss_calculate_target_quotients: apc_corner: fused      NOM: quot[ 7]= 939, quot_offset[ 7]= 195
[    1.102975] cpr4_ipq807x_apss_calculate_target_quotients: apc_corner: fused    TURBO: quot[ 7]=1036, quot_offset[ 7]=  95
[    1.113913] cpr4_ipq807x_apss_calculate_target_quotients: apc_corner: fused   STURBO: quot[ 7]=1173, quot_offset[ 7]= 135
[    1.125059] cpr3_regulator_init_ctrl: apc: Default CPR mode = closed-loop
[    1.128179] cpufreq: cpufreq_online: CPU0: Running at unlisted initial frequency: 800000 KHz, changing to: 1017600 KHz
[    1.138955] mmc0: new HS200 MMC card at address 0001
[    1.144386] remoteproc remoteproc0: cd00000.q6v5_wcss is available
[    1.153575] mmcblk0: mmc0:0001 Q2J54A 3.64 GiB 
[    1.165845]  mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9
[    1.166650] mmcblk0boot0: mmc0:0001 Q2J54A 2.00 MiB 
[    1.169996] mmcblk0boot1: mmc0:0001 Q2J54A 2.00 MiB 
[    1.174684] mmcblk0rpmb: mmc0:0001 Q2J54A 512 KiB, chardev (246:0)
[    1.182107] VFS: Mounted root (squashfs filesystem) readonly on device 179:4.
[    1.185798] Freeing unused kernel memory: 1344K
[    1.227682] Run /sbin/init as init process
[    1.227702]   with arguments:
[    1.227704]     /sbin/init
[    1.227707]   with environment:
[    1.227709]     HOME=/
[    1.227712]     TERM=linux
[    1.357013] init: Console is alive
[    1.357172] init: - watchdog -
[    1.636787] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    1.738175] Aquantia AQR113C 90000.mdio-1:00: bad firmware CRC: file 0xffff calculated 0x21b1
[    1.738226] Aquantia AQR113C 90000.mdio-1:00: firmware loading failed: -22
[    1.745805] Aquantia AQR113C 90000.mdio-1:00: Direct firmware load for marvell/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x0_ID44778_VER1630.cld failed with error -2
[    1.752492] Aquantia AQR113C 90000.mdio-1:00: Falling back to sysfs fallback for: marvell/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x0_ID44778_VER1630.cld
[   13.439426] init: - preinit -
[   20.707622] random: crng init done
[   22.856051] loop0: detected capacity change from 0 to 1048576
[   22.907674] loop0: detected capacity change from 1048576 to 1035008
[   23.002042] EXT4-fs (loop0): recovery complete
[   23.005402] EXT4-fs (loop0): mounted filesystem with ordered data mode. Quota mode: disabled.
[   23.011413] mount_root: switching to ext4 overlay
[   23.014701] overlayfs: null uuid detected in lower fs '/', falling back to xino=off,index=off,nfs_export=off.
[   23.021015] urandom-seed: Seeding with /etc/urandom.seed
[   23.070940] procd: - early -
[   23.071057] procd: - watchdog -
[   23.609530] procd: - watchdog -
[   23.610386] procd: - ubus -
[   23.669134] procd: - init -
[   23.852850] kmodloader: loading kernel modules from /etc/modules.d/*
[   23.911628] ssdk_dt_parse_interrupt[909]:INFO:intr-gpio does not exist
[   23.979554] aquantia_phy_api_ops_init[2241]:INFO:qca probe aquantia phy driver succeeded!
[   24.029865] urngd: v1.0.2 started.
[   26.177719] regi_init[3603]:INFO:Initializing HPPE Done!!
[   26.177860] regi_init[3662]:INFO:qca-ssdk module init succeeded!
[   26.184601] EDMA ver 1 hw init
[   26.188431] EDMA HW Reset completed succesfully
[   26.191075] Num rings - TxDesc:1 (23-23) TxCmpl:1 (7-7)
[   26.195472] RxDesc:1 (15-15) RxFill:1 (7-7)
[   28.689048] Aquantia AQR113C 90000.mdio-1:00: aqr107_wait_reset_complete failed: -110
[   28.695424] **********************************************************
[   28.695871] * NSS Data Plane driver
[   28.702335] **********************************************************
[   28.720769] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[   28.720817] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1
[   28.725280] xhci-hcd xhci-hcd.1.auto: hcc params 0x0220fe65 hci version 0x110 quirks 0x0000008002010010
[   28.732764] xhci-hcd xhci-hcd.1.auto: irq 41, io mem 0x08a00000
[   28.742175] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[   28.747991] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2
[   28.753543] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed
[   28.761539] hub 1-0:1.0: USB hub found
[   28.767723] hub 1-0:1.0: 1 port detected
[   28.771685] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[   28.775790] hub 2-0:1.0: USB hub found
[   28.783617] hub 2-0:1.0: 1 port detected
[   28.787504] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   28.791250] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 3
[   28.796637] xhci-hcd xhci-hcd.2.auto: hcc params 0x0220fe65 hci version 0x110 quirks 0x0000008002010010
[   28.804107] xhci-hcd xhci-hcd.2.auto: irq 42, io mem 0x08c00000
[   28.813524] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   28.819343] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 4
[   28.824896] xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0 SuperSpeed
[   28.832824] hub 3-0:1.0: USB hub found
[   28.839161] hub 3-0:1.0: 1 port detected
[   28.843055] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[   28.847157] hub 4-0:1.0: USB hub found
[   28.854954] hub 4-0:1.0: 1 port detected
[   28.860120] leds-gpio leds: Led green: renamed to green:_1 due to name collision
[   28.862626] leds-gpio leds: Led green: renamed to green:_2 due to name collision
[   28.870054] leds-gpio leds: Led green: renamed to green:_3 due to name collision
[   28.877433] leds-gpio leds: Led green: renamed to green:_4 due to name collision
[   28.884793] leds-gpio leds: Led amber: renamed to amber:_1 due to name collision
[   28.892164] leds-gpio leds: Led green: renamed to green:_5 due to name collision
[   28.899538] leds-gpio leds: Led amber: renamed to amber:_2 due to name collision
[   28.906907] leds-gpio leds: Led green: renamed to green:_6 due to name collision
[   28.914292] leds-gpio leds: Led amber: renamed to amber:_3 due to name collision
[   28.921667] leds-gpio leds: Led green: renamed to green:_7 due to name collision
[   28.929053] leds-gpio leds: Led amber: renamed to amber:_4 due to name collision
[   28.936412] leds-gpio leds: Led green: renamed to green:_8 due to name collision
[   28.943808] leds-gpio leds: Led amber: renamed to amber:_5 due to name collision
[   28.954738] Loading modules backported from Linux version v6.5-0-g2dde18cd1d8f
[   28.958508] Backport generated by backports.git v5.15.92-1-56-g5fb2ccb6b9e8
[   28.969783] NET: Registered PF_QIPCRTR protocol family
[   28.997941] PPP generic driver version 2.4.2
[   28.998757] NET: Registered PF_PPPOX protocol family
[   29.006867] ath11k c000000.wifi: ipq8074 hw2.0
[   29.006900] ath11k c000000.wifi: FW memory mode: 0
[   29.010729] remoteproc remoteproc0: powering up cd00000.q6v5_wcss
[   29.015566] remoteproc remoteproc0: Booting fw image IPQ8074/q6_fw.mdt, size 668
[   29.779629] remoteproc remoteproc0: remote processor cd00000.q6v5_wcss is now up
[   29.783165] kmodloader: done loading kernel modules from /etc/modules.d/*
[   29.823394] ath11k c000000.wifi: qmi ignore invalid mem req type 3
[   29.830843] ath11k c000000.wifi: chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff
[   29.830885] ath11k c000000.wifi: fw_version 0x290104a5 fw_build_timestamp 2023-08-02 20:32 fw_build_id WLAN.HK.2.9.0.1-01890-QCAHKSWPL_SILICONZ-1
[   30.157999] ath11k c000000.wifi: htt event 48 not handled
[   31.192304] br-lan: port 1(10g-1) entered blocking state
[   31.192349] br-lan: port 1(10g-1) entered disabled state
[   31.196934] device 10g-1 entered promiscuous mode
[   31.216019] br-lan: port 2(10g-2) entered blocking state
[   31.216065] br-lan: port 2(10g-2) entered disabled state
[   31.220800] device 10g-2 entered promiscuous mode
[   31.229547] br-lan: port 3(lan1) entered blocking state
[   31.230307] br-lan: port 3(lan1) entered disabled state
[   31.235534] device lan1 entered promiscuous mode
[   31.244618] br-lan: port 4(lan2) entered blocking state
[   31.245414] br-lan: port 4(lan2) entered disabled state
[   31.250631] device lan2 entered promiscuous mode
[   31.259700] br-lan: port 5(lan3) entered blocking state
[   31.260429] br-lan: port 5(lan3) entered disabled state
[   31.265744] device lan3 entered promiscuous mode
[   31.274376] br-lan: port 6(lan4) entered blocking state
[   31.275446] br-lan: port 6(lan4) entered disabled state
[   31.280881] device lan4 entered promiscuous mode
[   32.924043] br-lan: port 7(phy1-ap0) entered blocking state
[   32.924088] br-lan: port 7(phy1-ap0) entered disabled state
[   32.928665] device phy1-ap0 entered promiscuous mode
[   32.934063] br-lan: port 7(phy1-ap0) entered blocking state
[   32.939217] br-lan: port 7(phy1-ap0) entered forwarding state
[   32.945466] br-lan: port 7(phy1-ap0) entered disabled state
[   33.250578] IPv6: ADDRCONF(NETDEV_CHANGE): phy1-ap0: link becomes ready
[   33.250741] br-lan: port 7(phy1-ap0) entered blocking state
[   33.256009] br-lan: port 7(phy1-ap0) entered forwarding state
[   33.261868] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
[   33.490160] br-lan: port 8(phy1-ap1) entered blocking state
[   33.490205] br-lan: port 8(phy1-ap1) entered disabled state
[   33.494759] device phy1-ap1 entered promiscuous mode
[   33.501688] br-lan: port 8(phy1-ap1) entered blocking state
[   33.505318] br-lan: port 8(phy1-ap1) entered forwarding state
[   33.534940] device phy1-ap1 left promiscuous mode
[   33.535004] br-lan: port 8(phy1-ap1) entered disabled state
[   33.599164] br-lan: port 8(phy1-ap1) entered blocking state
[   33.599206] br-lan: port 8(phy1-ap1) entered disabled state
[   33.603761] device phy1-ap1 entered promiscuous mode
[   33.609302] br-lan: port 8(phy1-ap1) entered blocking state
[   33.614314] br-lan: port 8(phy1-ap1) entered forwarding state
[   33.619779] IPv6: ADDRCONF(NETDEV_CHANGE): phy1-ap1: link becomes ready
[   33.717090] br-lan: port 9(phy0-ap0) entered blocking state
[   33.717135] br-lan: port 9(phy0-ap0) entered disabled state
[   33.721772] device phy0-ap0 entered promiscuous mode
[   33.727122] br-lan: port 9(phy0-ap0) entered blocking state
[   33.732260] br-lan: port 9(phy0-ap0) entered forwarding state
[   33.947726] br-lan: port 9(phy0-ap0) entered disabled state
[   34.328119] nss-dp 3a001600.dp4 lan1: PHY Link up speed: 1000
[   34.328200] br-lan: port 3(lan1) entered blocking state
[   34.332857] br-lan: port 3(lan1) entered forwarding state
[   64.487930] Aquantia AQR113C 90000.mdio-1:00: failed to find FW file marvell/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x0_ID44778_VER1630.cld (-110)
[   64.487996] Aquantia AQR113C: probe of 90000.mdio-1:00 failed with error -110
[   64.513899] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[   95.300308] IPv6: ADDRCONF(NETDEV_CHANGE): phy0-ap0: link becomes ready
[   95.300511] br-lan: port 9(phy0-ap0) entered blocking state
[   95.305755] br-lan: port 9(phy0-ap0) entered forwarding state
[   95.669388] br-lan: port 10(phy0-ap1) entered blocking state
[   95.669438] br-lan: port 10(phy0-ap1) entered disabled state
[   95.674348] device phy0-ap1 entered promiscuous mode
[   95.681296] br-lan: port 10(phy0-ap1) entered blocking state
[   95.684724] br-lan: port 10(phy0-ap1) entered forwarding state
[   95.691230] device phy0-ap1 left promiscuous mode
[   95.696078] br-lan: port 10(phy0-ap1) entered disabled state
[   95.749103] br-lan: port 10(phy0-ap1) entered blocking state
[   95.749145] br-lan: port 10(phy0-ap1) entered disabled state
[   95.754032] device phy0-ap1 entered promiscuous mode
[   95.759616] br-lan: port 10(phy0-ap1) entered blocking state
[   95.764428] br-lan: port 10(phy0-ap1) entered forwarding state
[   95.771882] IPv6: ADDRCONF(NETDEV_CHANGE): phy0-ap1: link becomes ready
1 Like

How you manage to know what dts they use?

I gave up on loading firmware from filesystem.

Flashing the *.cld files to the firmware paritions just works.

cat /proc/mtd|grep "0:ethphyfw"
mtd10: 00080000 00010000 "0:ethphyfw1"
mtd11: 00080000 00010000 "0:ethphyfw2"
mtd erase /dev/mtd10
mtd -n write /tmp/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x0_ID44778_VER1630.cld /dev/mtd10
mtd erase /dev/mtd11
mtd -n write /tmp/AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x8_ID44776_VER1630.cld /dev/mtd11

dmesg | grep AQ

[    1.752088] Aquantia AQR113C 90000.mdio-1:00: loading firmware version 'v5.4.C CIG WF-1945_0x0 060120 02:47:48' from 'NVMEM'
[   13.007036] Aquantia AQR113C 90000.mdio-1:08: loading firmware version 'v5.4.C CIG WF-1945_0x8 060120 02:47:48' from 'NVMEM'
3 Likes

I couldn't get what is the purpose in doing that?
Isn't there a newer version of Aquantia firmware?

After attended sysupgrade to a snapshot mid February my 10G uplink port doesn't came up. I found the PR for loading firmware using kernel so wanted to use the new way. Also liked the idea of not altering U-Boot bootcmd.

Yes, found v5.6.7 online (wrapped with mbn header for U-Boot). Repo: Marvel-AQR-FW
(I didn't try this firmwares)

But Qnap uses different files for the two 10G ports so I decided to use them extracted from stock as suggested by robimarko in the PR.

1 Like

FW from the stock FW should be used as the AQR FW provisions certain registers as a custom config per board, in our case they are at least configuring the LED-s but likely more stuff is done

2 Likes

I've tried to do this myself unsuccessfully.
I've downloaded the stock qnap firmware image HORA_301W_20240118-2.3.3.005.img then I've tried to extract the files with binwalk but I've got only garbage files.
Can you write a short How To for the whole process.
I cannot find the *.cld stock firmware files anywhere else.
If I use the same method as you did and flash FW binaries to the respective 0:ethphyfw1 and 0:ethphyfw2 partitions so they can be loaded via NVMEM, do I have to modify the U-Boot environment.
I've started the stock QNAP firmware but there aren't any cld files in /lib/firmware directory.

See this post for link to a script that decrypts the FW.

The steps are decrypt / untar / unsquashfs

python3 qnap-qts-fw-cryptor.py d HORA_301W HORA_301W_20240118-2.3.3.005.img HORA_301W_20240118-2.3.3.005_decrypted.img.tar
tar -xf HORA_301W_20240118-2.3.3.005_decrypted.img.tar ./usr.squashfs
sudo unsquashfs usr.squashfs

FW is located in /share/10G_FW/

edit:

I changed U-Boot bootcmd back to stock:

fw_setenv bootcmd "bootipq"

check with

fw_printenv -n bootcmd
3 Likes

Thanks a lot.
Done.

root@QNAP:~# dmesg | grep AQ
[    2.144872] Aquantia AQR113C 90000.mdio-1:00: loading firmware version 'v5.4.C CIG WF-1945_0x0 060120 02:47:48' from 'NVMEM'
[   11.435626] Aquantia AQR113C 90000.mdio-1:08: loading firmware version 'v5.4.C CIG WF-1945_0x8 060120 02:47:48' from 'NVMEM'
root@QNAP:~# fw_printenv -n bootcmd
bootipq

Edit - A Big WARNING here (a bug!). Currently using the QNAP stock 10G firmware with NSS wifi brakes the 10G_1 port connection. Cannot get/lease IP address. See this.
Don't use on NSS builds at least for now!

1 Like

The issue was with 10G_1 port, wasn't it?
Does it work right now? It's interesting what may caused the issue.
Because I intentionally left 10G_1 port to use for experiments occasionally and I have might not noticed an issue immediately.
Do you use a regular (Non NSS) build.
Currently the 10G_1 port doesn't work with stock 10G FW on NSS builds contrary to the logic as the stock QNAP FW is actually NSS enabled.

Does anyone here started using kernel 6.6?
Can you confirm 10G ports work OK.
I test unsupported NSS build by @qosmio kernel 6.6
and now both 10G ports simply give

uniphy autoneg time out!
[    2.080096] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    2.154862] Key type encrypted registered
[    2.249273] Aquantia AQR113C 90000.mdio-1:00: loading firmware version 'v5.4.C CIG WF-1945_0x0 060120 02:47:48' from 'NVMEM'
[   11.263063] hwmon hwmon0: temp1_input not attached to any thermal zone
[   11.352378] Aquantia AQR113C 90000.mdio-1:08: loading firmware version 'v5.4.C CIG WF-1945_0x8 060120 02:47:48' from 'NVMEM'
[   13.484351] init: - preinit -
[   15.142380] random: crng init done
[   17.291890] Starting lvm2 during preinit
[   17.557526] device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: dm-devel@redhat.com
[   17.685662] mount_root: loading kmods from internal overlay
[   17.698713] kmodloader: loading kernel modules from //etc/modules-boot.d/*
[   17.730793] gpio_button_hotplug: loading out-of-tree module taints kernel.
[   17.758574] ssdk_dt_parse_interrupt[935]:INFO:intr-gpio does not exist
[   17.766543] ssdk_phy_driver_init[371]:INFO:dev_id = 0, phy_adress = 8, phy_id = 0x0 phytype doesn't match
[   17.766686] ssdk_phy_driver_init[371]:INFO:dev_id = 0, phy_adress = 0, phy_id = 0x0 phytype doesn't match
[   19.042484] regi_init[3603]:INFO:Initializing HPPE Done!!
[   19.042595] regi_init[3662]:INFO:qca-ssdk module init succeeded!
[   19.048645] EDMA ver 1 hw init
[   19.053161] EDMA HW Reset completed succesfully
[   19.055838] Num rings - TxDesc:1 (23-23) TxCmpl:1 (7-7)
[   19.060233] RxDesc:1 (15-15) RxFill:1 (7-7)
[   20.461080] hwmon hwmon1: temp1_input not attached to any thermal zone
[   20.624897] **********************************************************
[   20.624935] * NSS Data Plane driver
[   20.630323] **********************************************************

This is for both variants - using QNAP stock 10G FW and the AQR generic with MBN with kernel 6.6.

With kernel 6.1 and MBN both 10G ports were working
and with kernel 6.1 and stock QNAP 10G FW only the second port worked OK.
I know that NSS isn't supported but looks like a strange pattern of events.

@robimarko what do you think?