Adding OpenWrt Support for Netgear RAX120 (Nighthawk AX12)

Do you have a GitHub that you could post your full OpenWrt source? Make sure we are looking at the same version .dtsi and .dts files - lots of small differences between multiple developers on robimarko’s thread and Linux upstream. Would be worth it to parse out the code in one place to allow smart people to comment and allow users to test.

I can post a test branch on my GitHub if that is helpful and can add suggested changes / allow folks to experiment.

I can set up a repo but if you can just make a test branch then that may be easier. It's really just the dts file. Only other change was to generally define the rax120 target.

define Device/netgear_rax120
	$(call Device/FitImage)
	$(call Device/UbiFit)
	DEVICE_VENDOR := Netgear
	DEVICE_MODEL := RAX120
	BLOCKSIZE := 128k
	PAGESIZE := 2048
	DEVICE_DTS_CONFIG := config@hk01
	SOC := ipq8074
	NETGEAR_HW_ID="29765589+0+512+1024+4x4+8x8"
	DEVICE_PACKAGES := 
endef
TARGET_DEVICES += netgear_rax120

ipq8074-rax120.dts aligns with robimarko and the patches his repo applies to ipq8074.dtsi. It was only made to cover variations I identified from GPL (qcom-ipq807x-soc.dtsi / qcom-ipq807x-hk01.dts).

cloned robimarko’s 5.15 repo. Added your .dts and image addition.

Looks like robimarko has his .dtsi files split up. I can do some more in depth comparison in the coming days. First thing I see is we can change up the includes to match his nomenclature in his repo and probably save a couple lines on the .dts file.

Anyone with a rax120, ipq807x, or .dts knowledge, feel free to suggest improvements.

2 Likes

I was confused by the split dts/dtsi structure for the ax3600. I thought the dts could override & append the dtsi so I'm not sure if it needs to be split up so much although this is the first time I have ever worked on a device tree so I'm probably just lacking knowledge.

We need to patch the dts Makefile to include "dtb-$(CONFIG_ARCH_QCOM) += ipq8074-rax120.dtb" for a successful build. I also forgot that this device uses KERNEL_LOADADDR := 0x40908000.

Beyond that, your test repo matches what I had and I was able to rebuild successfully.

Build Steps:

git clone --depth=1 https://github.com/ACwifidude/openwrt.git -b ipq807x-5.15-rax120 openwrt_acwifidude
cd openwrt_acwifidude
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig - define rax120 target profile and other desired settings such as ccache
make -jx (x=# of logical processors)

Test Steps:

Setup tftp server at 192.168.1.10
Copy .itb to tftp directory. I personally use the default image name (C0A80101.img)
Open serial connection, power on, stop autoboot, then run "tftpboot" and "bootm"

I don't want to be a downer here, but before you dive deep into supporting RAX120 it might be worth reminding that the biggest problem would be to add WiFi driver.
For robi's brilliant work with Xiaomi (ax3600, ax9000, and similar) he uses ath11k driver.
However, ath11k supports only IPQ807x hw2.0, while RAX120 could be IPQ807x hw1.0 or IPQ807x hw 2.0. However, I think it is safe to assume all special deals for RAX120 would be for hw1.0
As far as I remember Netgear's open-sourced builds, are using Linux kernel 4.4.x, while robi's code uses kernel 5.15.x so there might be quite a big gap.
And it looks like Netgear delivers WiFi functionality by extending previous version of ath driver (ath10k)
Applying these Netgear's extensions to an image using kernel 5.15.x might be quite a challenge.
Additionally... remember that RAX120 (hw 1.0) has only partial support for AX (i.e no Uplink OFDMA), so I am not sure if that potential enormous effort is worth doing

There is RAX120 v2 which should be the only candidate, v1 SoC support is non existantant from different clocks, PCIe, and ath11k which will never support v1 SoC as it lacks 802.11ax mandatory features

The dtsi captures aspects that are generalizable to other ipq8074 devices. The dts file captures things unique to that particular target. The dts file and dtsi files effectively are “combined” when building to fully define how the kernel interfaces with the hardware. Makes coding easier with multiple targets so that you don’t write the same code for multiple targets.

Ex for all the dtsi and dts files required for the r7800:
qcom-ipq8064.dtsi (has code for all ipq806x devices, not a file you see in the directory, you see it in the build directory when you build) +
qcom-ipq8065.dtsi (adds ipq8065 particulars) +
qcom-ipq8065-nighthawk.dtsi (adds particulars for xr500 and r7800) +
qcom-ipq8065-r7800.dts (r7800 specific requirements)

2 Likes

@RobertP Most new unit sales today should be V2. I got this one from a recycler so I can't confirm any of the deals online although I don't imagine large volume suppliers would be sitting on a major inventory of 2/3 year old HW1.0 hardware as it would seem logistically impractical.

I noticed the box had a copyright date of 2020 and the limitation language reported previously was not present. Maybe that would be something to look for - It's clearly reflected on the gpl console (root@RAX120v2:) but it helps if you can tell just by looking at the box.

@ACWifiDude
Ok cool. Hopefully I'm mostly on track from a foundational standpoint then.

Almost done getting everything mapped over. I was also able to make some progress on wifi with ath11k and the ssphy's are moving forward as well. I'll push the latest commit when I'm able as it's now too large for the forum.

pcie_phy2 and usb master clocks are still the main issues I know of currently. I assume DTS related.

**Edit: Disregard panic.. qca-nss is mostly coming up aside from a edma error. I'm not sure why because ipq8074-ess.dtsi already seems to cover this correctly. I'll dig into it deeper next week unless anyone has any ideas. Current bootlog below.


Jumping to AARCH64 kernel via monitor
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.15.34 (user@user-virtual-machine) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 11.2.0 r0-3eca028) 11.2.0, GNU ld (GNU Binutils) 2.37) #0 SMP Wed May 11 18:26:03 2022
[    0.000000] Machine model: Netgear RAX120
[    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-0x000000004a5fffff]
[    0.000000]   node   0: [mem 0x000000004a600000-0x000000004aafffff]
[    0.000000]   node   0: [mem 0x000000004ab00000-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] psci: OSI mode supported.
[    0.000000] percpu: Embedded 17 pages/cpu s30104 r8192 d31336 u69632
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048
[    0.000000] Kernel command line: console=ttyMSM0,115200n8
[    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: 869908K/1048576K available (7360K kernel code, 852K rwdata, 1968K rodata, 24896K init, 274K bss, 178668K 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] random: get_random_bytes called from start_kernel+0x4a8/0x6e0 with crng_init=0
[    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.000000] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[    0.000130] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000)
[    0.000146] pid_max: default: 32768 minimum: 301
[    0.000297] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.000314] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.001750] rcu: Hierarchical SRCU implementation.
[    0.001888] dyndbg: Ignore empty _ddebug table in a CONFIG_DYNAMIC_DEBUG_CORE build
[    0.002335] smp: Bringing up secondary CPUs ...
[    0.002866] Detected VIPT I-cache on CPU1
[    0.002933] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.003475] Detected VIPT I-cache on CPU2
[    0.003517] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.004042] Detected VIPT I-cache on CPU3
[    0.004079] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.004144] smp: Brought up 1 node, 4 CPUs
[    0.004170] SMP: Total of 4 processors activated.
[    0.004179] CPU features: detected: 32-bit EL0 Support
[    0.004186] CPU features: detected: CRC32 instructions
[    0.004235] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
[    0.004245] CPU: All CPU(s) started at EL1
[    0.004266] alternatives: patching kernel code
[    0.011560] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.011591] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.011738] pinctrl core: initialized pinctrl subsystem
[    0.012549] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.012971] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.013016] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.013054] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.013384] thermal_sys: Registered thermal governor 'step_wise'
[    0.014502] cpuidle: using governor menu
[    0.014682] ASID allocator initialised with 65536 entries
[    0.081921] cryptd: max_cpu_qlen set to 1000
[    0.083291] SCSI subsystem initialized
[    0.083462] usbcore: registered new interface driver usbfs
[    0.083506] usbcore: registered new interface driver hub
[    0.083543] usbcore: registered new device driver usb
[    0.083775] qcom_scm: convention: smc arm 64
[    0.085097] clocksource: Switched to clocksource arch_sys_counter
[    0.085846] NET: Registered PF_INET protocol family
[    0.085953] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.086752] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[    0.086784] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.086872] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    0.087021] TCP: Hash tables configured (established 8192 bind 8192)
[    0.087110] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.087152] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.087298] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.087330] PCI: CLS 0 bytes, default 64
[    0.108604] workingset: timestamp_bits=46 max_order=18 bucket_order=0
[    0.112497] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.112519] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.114677] qcom-qmp-phy 58000.phy: supply vdda-phy not found, using dummy regulator
[    0.114847] qcom-qmp-phy 58000.phy: supply vdda-pll not found, using dummy regulator
[    0.116048] qcom-qmp-phy 58000.phy: Registered Qcom-QMP phy
[    0.116355] qcom-qmp-phy 78000.phy: supply vdda-phy not found, using dummy regulator
[    0.116520] qcom-qmp-phy 78000.phy: supply vdda-pll not found, using dummy regulator
[    0.117663] qcom-qmp-phy 78000.phy: Registered Qcom-QMP phy
[    0.119054] qcom-qmp-phy 84000.phy: Registered Qcom-QMP phy
[    0.120365] qcom-qmp-phy 8e000.phy: Registered Qcom-QMP phy
[    0.121363] qcom-qusb2-phy 59000.phy: supply vdda-pll not found, using dummy regulator
[    0.121540] qcom-qusb2-phy 59000.phy: supply vdda-phy-dpdm not found, using dummy regulator
[    0.121721] qcom-qusb2-phy 59000.phy: Registered Qcom-QUSB2 phy
[    0.121889] qcom-qusb2-phy 79000.phy: supply vdda-pll not found, using dummy regulator
[    0.122030] qcom-qusb2-phy 79000.phy: supply vdda-phy-dpdm not found, using dummy regulator
[    0.122216] qcom-qusb2-phy 79000.phy: Registered Qcom-QUSB2 phy
[    0.123701] qcom-pcie 10000000.pci: host bridge /soc/pci@10000000 ranges:
[    0.123774] qcom-pcie 10000000.pci:       IO 0x0010200000..0x001020ffff -> 0x0010200000
[    0.123803] qcom-pcie 10000000.pci:      MEM 0x0010220000..0x001fffffff -> 0x0010220000
[    0.182724] qcom-pcie 10000000.pci: Read DBI address failed
[    0.296678] qcom-pcie 10000000.pci: iATU unroll: disabled
[    0.296709] qcom-pcie 10000000.pci: Detected iATU regions: 32 outbound, 8 inbound
[    1.296934] qcom-pcie 10000000.pci: Phy link never came up
[    1.297126] qcom-pcie 10000000.pci: PCI host bridge to bus 0001:00
[    1.297144] pci_bus 0001:00: root bus resource [bus 00-ff]
[    1.297161] pci_bus 0001:00: root bus resource [io  0x0000-0xffff] (bus address [0x10200000-0x1020ffff])
[    1.297174] pci_bus 0001:00: root bus resource [mem 0x10220000-0x1fffffff]
[    1.297218] pci 0001:00:00.0: [17cb:0302] type 01 class 0x060400
[    1.297245] pci 0001:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff]
[    1.297322] pci 0001:00:00.0: PME# supported from D0 D3hot D3cold
[    1.302335] pci 0001:00:00.0: BAR 0: assigned [mem 0x10220000-0x10220fff]
[    1.302363] pci 0001:00:00.0: PCI bridge to [bus 01-ff]
[    1.304270] pcieport 0001:00:00.0: PME: Signaling with IRQ 95
[    1.304536] pcieport 0001:00:00.0: AER: enabled with IRQ 95
[    1.305184] qcom-pcie 20000000.pci: host bridge /soc/pci@20000000 ranges:
[    1.305239] qcom-pcie 20000000.pci:       IO 0x0020200000..0x002020ffff -> 0x0020200000
[    1.305267] qcom-pcie 20000000.pci:      MEM 0x0020220000..0x002fffffff -> 0x0020220000
[    1.426648] qcom-pcie 20000000.pci: iATU unroll: enabled
[    1.426662] qcom-pcie 20000000.pci: Detected iATU regions: 8 outbound, 8 inbound
[    2.426850] qcom-pcie 20000000.pci: Phy link never came up
[    2.426989] qcom-pcie 20000000.pci: PCI host bridge to bus 0000:00
[    2.427004] pci_bus 0000:00: root bus resource [bus 00-ff]
[    2.427021] pci_bus 0000:00: root bus resource [io  0x10000-0x1ffff] (bus address [0x20200000-0x2020ffff])
[    2.427033] pci_bus 0000:00: root bus resource [mem 0x20220000-0x2fffffff]
[    2.427076] pci 0000:00:00.0: [17cb:1002] type 01 class 0x060400
[    2.427102] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff]
[    2.427183] pci 0000:00:00.0: PME# supported from D0 D3hot D3cold
[    2.432194] pci 0000:00:00.0: BAR 8: assigned [mem 0x20300000-0x204fffff]
[    2.432221] pci 0000:00:00.0: BAR 9: assigned [mem 0x20500000-0x206fffff 64bit pref]
[    2.432236] pci 0000:00:00.0: BAR 0: assigned [mem 0x20220000-0x20220fff]
[    2.432251] pci 0000:00:00.0: BAR 7: assigned [io  0x10000-0x10fff]
[    2.432266] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    2.432277] pci 0000:00:00.0:   bridge window [io  0x10000-0x10fff]
[    2.432290] pci 0000:00:00.0:   bridge window [mem 0x20300000-0x204fffff]
[    2.432302] pci 0000:00:00.0:   bridge window [mem 0x20500000-0x206fffff 64bit pref]
[    2.433670] pcieport 0000:00:00.0: PME: Signaling with IRQ 96
[    2.433926] pcieport 0000:00:00.0: AER: enabled with IRQ 96
[    2.436975] bam-dma-engine 704000.dma: num-channels unspecified in dt
[    2.436998] bam-dma-engine 704000.dma: num-ees unspecified in dt
[    2.440695] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    2.441299] msm_serial 78b1000.serial: msm_serial: detected port #1
[    2.441346] msm_serial 78b1000.serial: uartclk = 19200000
[    2.441393] 78b1000.serial: ttyMSM1 at MMIO 0x78b1000 (irq = 24, base_baud = 1200000) is a MSM
[    2.441663] msm_serial 78b3000.serial: msm_serial: detected port #0
[    2.441692] msm_serial 78b3000.serial: uartclk = 3686400
[    2.441726] 78b3000.serial: ttyMSM0 at MMIO 0x78b3000 (irq = 25, base_baud = 230400) is a MSM
[    2.441749] msm_serial: console setup on port #0
[    3.812268] printk: console [ttyMSM0] enabled
[    3.817273] msm_serial: driver initialized
[    3.825212] loop: module loaded
[    3.826524] nand: device found, Manufacturer ID: 0xef, Chip ID: 0xac
[    3.828229] nand: Winbond W29N04GZ
[    3.834817] nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[    3.847518] spi_qup 78b5000.spi: IN:block:16, fifo:64, OUT:block:16, fifo:64
[    3.848176] spi-nor spi0.0: unrecognized JEDEC id bytes: 00 00 00 00 00 00
[    3.853647] spi-nor: probe of spi0.0 failed with error -2
[    3.860675] spi_qup 78b8000.spi: IN:block:16, fifo:64, OUT:block:16, fifo:64
[    3.866347] spmi spmi-0: PMIC arbiter version v2 (0x20010000)
[    3.873733] pmd9655_s3: supplied by regulator-dummy
[    3.878900] pmd9655_s4: supplied by regulator-dummy
[    3.883633] pmd9655_ldo11: supplied by regulator-dummy
[    3.989274] i2c_dev: i2c /dev entries driver
[    3.993993] sdhci: Secure Digital Host Controller Interface driver
[    3.994036] sdhci: Copyright(c) Pierre Ossman
[    3.999106] sdhci-pltfm: SDHCI platform and OF driver helper
[    4.006232] NET: Registered PF_INET6 protocol family
[    4.010034] Segment Routing with IPv6
[    4.014194] In-situ OAM (IOAM) with IPv6
[    4.017833] NET: Registered PF_PACKET protocol family
[    4.021772] 8021q: 802.1Q VLAN Support v1.8
[    4.035160] mmc0: SDHCI controller on 7824900.sdhci [7824900.sdhci] using ADMA 64-bit
[    4.042438] qcom,cpr4-apss-regulator b018000.cpr4-ctrl: CPR valid fuse count: 4
[    4.042738] cpr4_ipq807x_apss_read_fuse_data: apc_corner: speed bin = 0
[    4.049287] cpr4_ipq807x_apss_read_fuse_data: apc_corner: CPR fusing revision = 1
[    4.055716] cpr4_ipq807x_apss_read_fuse_data: apc_corner: CPR misc fuse value = 0
[    4.063369] cpr4_ipq807x_apss_read_fuse_data: apc_corner: Voltage boost fuse config = 0 boost = disable
[    4.070882] cpr3_mem_acc_init: apc: not using memory accelerator regulator
[    4.080018] cpr4_ipq807x_apss_calculate_open_loop_voltages: apc_corner: fused      SVS: open-loop= 704000 uV
[    4.086967] cpr4_ipq807x_apss_calculate_open_loop_voltages: apc_corner: fused      NOM: open-loop= 808000 uV
[    4.096950] cpr4_ipq807x_apss_calculate_open_loop_voltages: apc_corner: fused    TURBO: open-loop= 864000 uV
[    4.106759] cpr4_ipq807x_apss_calculate_open_loop_voltages: apc_corner: fused   STURBO: open-loop= 960000 uV
[    4.116613] cpr4_ipq807x_apss_calculate_target_quotients: apc_corner: fused      SVS: quot[ 7]= 718, quot_offset[ 7]=   0
[    4.126379] cpr4_ipq807x_apss_calculate_target_quotients: apc_corner: fused      NOM: quot[ 7]= 919, quot_offset[ 7]= 200
[    4.137230] cpr4_ipq807x_apss_calculate_target_quotients: apc_corner: fused    TURBO: quot[ 7]=1016, quot_offset[ 7]=  95
[    4.148166] cpr4_ipq807x_apss_calculate_target_quotients: apc_corner: fused   STURBO: quot[ 7]=1195, quot_offset[ 7]= 175
[    4.159240] cpr3_regulator_init_ctrl: apc: Default CPR mode = closed-loop
[    4.161189] nand: device found, Manufacturer ID: 0xef, Chip ID: 0xac
[    4.176808] nand: Winbond W29N04GZ
[    4.183213] nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[    4.193706] 23 qcomsmem partitions found on MTD device qcom_nand.0
[    4.193985] Creating 23 MTD partitions on "qcom_nand.0":
[    4.200173] 0x000000000000-0x000000100000 : "0:sbl1"
[    4.206739] mtdblock: MTD device '0:sbl1' is NAND, please consider using UBI block devices instead.
[    4.210725] 0x000000100000-0x000000200000 : "0:mibib"
[    4.220351] mtdblock: MTD device '0:mibib' is NAND, please consider using UBI block devices instead.
[    4.224664] 0x000000200000-0x000000280000 : "0:bootconfig"
[    4.234415] mtdblock: MTD device '0:bootconfig' is NAND, please consider using UBI block devices instead.
[    4.239183] 0x000000280000-0x000000300000 : "0:bootconfig1"
[    4.249304] mtdblock: MTD device '0:bootconfig1' is NAND, please consider using UBI block devices instead.
[    4.254201] 0x000000300000-0x000000600000 : "0:qsee"
[    4.266412] mtdblock: MTD device '0:qsee' is NAND, please consider using UBI block devices instead.
[    4.269030] 0x000000600000-0x000000900000 : "0:qsee_1"
[    4.280271] mtdblock: MTD device '0:qsee_1' is NAND, please consider using UBI block devices instead.
[    4.282992] 0x000000900000-0x000000980000 : "0:devcfg"
[    4.292812] mtdblock: MTD device '0:devcfg' is NAND, please consider using UBI block devices instead.
[    4.297342] 0x000000980000-0x000000a00000 : "0:devcfg_1"
[    4.307117] mtdblock: MTD device '0:devcfg_1' is NAND, please consider using UBI block devices instead.
[    4.311995] 0x000000a00000-0x000000a80000 : "0:apdp"
[    4.321618] mtdblock: MTD device '0:apdp' is NAND, please consider using UBI block devices instead.
[    4.326333] 0x000000a80000-0x000000b00000 : "0:apdp_1"
[    4.335582] mtdblock: MTD device '0:apdp_1' is NAND, please consider using UBI block devices instead.
[    4.340309] 0x000000b00000-0x000000b80000 : "0:rpm"
[    4.350124] mtdblock: MTD device '0:rpm' is NAND, please consider using UBI block devices instead.
[    4.354271] 0x000000b80000-0x000000c00000 : "0:rpm_1"
[    4.363805] mtdblock: MTD device '0:rpm_1' is NAND, please consider using UBI block devices instead.
[    4.368436] 0x000000c00000-0x000000c80000 : "0:cdt"
[    4.378138] mtdblock: MTD device '0:cdt' is NAND, please consider using UBI block devices instead.
[    4.382220] 0x000000c80000-0x000000d00000 : "0:cdt_1"
[    4.391771] mtdblock: MTD device '0:cdt_1' is NAND, please consider using UBI block devices instead.
[    4.396385] 0x000000d00000-0x000000d80000 : "0:appsblenv"
[    4.406096] mtdblock: MTD device '0:appsblenv' is NAND, please consider using UBI block devices instead.
[    4.410882] 0x000000d80000-0x000000e80000 : "0:appsbl"
[    4.420898] random: fast init done
[    4.425674] mtdblock: MTD device '0:appsbl' is NAND, please consider using UBI block devices instead.
[    4.428760] 0x000000e80000-0x000000f80000 : "0:appsbl_1"
[    4.438945] mtdblock: MTD device '0:appsbl_1' is NAND, please consider using UBI block devices instead.
[    4.443433] 0x000000f80000-0x000001000000 : "0:art"
[    4.453048] mtdblock: MTD device '0:art' is NAND, please consider using UBI block devices instead.
[    4.457413] 0x000001000000-0x000003e00000 : "rootfs"
[    4.502570] mtdblock: MTD device 'rootfs' is NAND, please consider using UBI block devices instead.
[    4.502727] mtd: device 18 (rootfs) set to be root filesystem
[    4.510704] mtdsplit: no squashfs found in "rootfs"
[    4.516346] 0x000003e00000-0x000004700000 : "0:wififw"
[    4.528312] mtdblock: MTD device '0:wififw' is NAND, please consider using UBI block devices instead.
[    4.528485] 0x000004700000-0x000007500000 : "rootfs_1"
[    4.572737] mtdblock: MTD device 'rootfs_1' is NAND, please consider using UBI block devices instead.
[    4.572899] 0x000007500000-0x000007e00000 : "0:wififw_1"
[    4.588249] mtdblock: MTD device '0:wififw_1' is NAND, please consider using UBI block devices instead.
[    4.588405] 0x000007e00000-0x000007e80000 : "0:ethphyfw"
[    4.597092] mtdblock: MTD device '0:ethphyfw' is NAND, please consider using UBI block devices instead.
[    4.609131] core: _opp_supported_by_regulators: OPP minuV: 0 maxuV: 0, not supported by regulator
[    4.611124] cpu cpu0: _opp_add: OPP not supported by regulators (0)
[    4.620939] cpufreq: cpufreq_online: CPU0: Running at unlisted initial frequency: 800000 KHz, changing to: 1017600 KHz
[    4.627132] remoteproc remoteproc0: cd00000.q6v5_wcss is available
[    4.638014] ------------[ cut here ]------------
[    4.643140] gcc_usb1_master_clk status stuck at 'on'
[    4.643159] WARNING: CPU: 0 PID: 1 at clk_branch_wait+0x130/0x140
[    4.652864] Modules linked in:
[    4.658850] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W         5.15.34 #0
[    4.661809] Hardware name: Netgear RAX120 (DT)
[    4.669355] pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    4.673613] pc : clk_branch_wait+0x130/0x140
[    4.680465] lr : clk_branch_wait+0x130/0x140
[    4.684979] sp : ffffffc00a2cbc70
[    4.689231] x29: ffffffc00a2cbc70 x28: 0000000000000000 x27: ffffffc008940410
[    4.692449] x26: ffffffc008991068 x25: ffffffc008991078 x24: ffffffc0089295a0
[    4.699567] x23: ffffffc0088b5708 x22: 0000000000000000 x21: ffffffc0083e25b0
[    4.706685] x20: 0000000000000000 x19: ffffffc00a235b78 x18: 000000000000014c
[    4.713804] x17: 000000000000000e x16: 0000000000000001 x15: ffffffc00a1aaa40
[    4.720921] x14: 00000000000003e4 x13: 000000000000014c x12: ffffffc00a2cb998
[    4.728040] x11: fffffffffffe5a00 x10: fffffffffffe59c8 x9 : ffffffc00a202a40
[    4.735158] x8 : 0000000000001f20 x7 : ffffffc00a1aaa40 x6 : 00000000ffffefff
[    4.742276] x5 : ffffffc00a202a40 x4 : 00000000ffffefff x3 : 0000000000000001
[    4.749394] x2 : 0000000000000000 x1 : ffffffc00a1aa998 x0 : 0000000000000028
[    4.756513] Call trace:
[    4.763621]  clk_branch_wait+0x130/0x140
[    4.765880]  clk_branch2_disable+0x2c/0x40
[    4.770047]  clk_disable_unused_subtree+0xb0/0x110
[    4.773956]  clk_disable_unused_subtree+0x40/0x110
[    4.778730]  clk_disable_unused_subtree+0x40/0x110
[    4.783504]  clk_disable_unused_subtree+0x40/0x110
[    4.788279]  clk_disable_unused_subtree+0x40/0x110
[    4.793053]  clk_disable_unused+0x58/0xe0
[    4.797826]  do_one_initcall+0x50/0x1b0
[    4.801904]  kernel_init_freeable+0x234/0x29c
[    4.805551]  kernel_init+0x24/0x120
[    4.810064]  ret_from_fork+0x10/0x20
[    4.813363] ---[ end trace 4d1ad65ce3912f82 ]---
[    4.817518] ------------[ cut here ]------------
[    4.821784] gcc_usb0_master_clk status stuck at 'on'
[    4.821794] WARNING: CPU: 0 PID: 1 at clk_branch_wait+0x130/0x140
[    4.831337] Modules linked in:
[    4.837319] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W         5.15.34 #0
[    4.840281] Hardware name: Netgear RAX120 (DT)
[    4.847826] pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    4.852084] pc : clk_branch_wait+0x130/0x140
[    4.858937] lr : clk_branch_wait+0x130/0x140
[    4.863452] sp : ffffffc00a2cbc70
[    4.867703] x29: ffffffc00a2cbc70 x28: 0000000000000000 x27: ffffffc008940410
[    4.870922] x26: ffffffc008991068 x25: ffffffc008991078 x24: ffffffc0089295a0
[    4.878041] x23: ffffffc0088b5820 x22: 0000000000000000 x21: ffffffc0083e25b0
[    4.885158] x20: 0000000000000000 x19: ffffffc00a235ef8 x18: 000000000000016e
[    4.892275] x17: 000000000000000e x16: 0000000000000001 x15: ffffffc00a1aaa40
[    4.899393] x14: 000000000000044a x13: 000000000000016e x12: ffffffc00a2cb998
[    4.906512] x11: fffffffffffe6198 x10: fffffffffffe6160 x9 : ffffffc00a202a40
[    4.913631] x8 : 0000000000002250 x7 : ffffffc00a1aaa40 x6 : 00000000ffffefff
[    4.920748] x5 : ffffffc00a202a40 x4 : 00000000ffffefff x3 : 0000000000000001
[    4.927866] x2 : 0000000000000000 x1 : ffffffc00a1aa998 x0 : 0000000000000028
[    4.934985] Call trace:
[    4.942093]  clk_branch_wait+0x130/0x140
[    4.944354]  clk_branch2_disable+0x2c/0x40
[    4.948520]  clk_disable_unused_subtree+0xb0/0x110
[    4.952427]  clk_disable_unused_subtree+0x40/0x110
[    4.957202]  clk_disable_unused_subtree+0x40/0x110
[    4.961976]  clk_disable_unused_subtree+0x40/0x110
[    4.966750]  clk_disable_unused_subtree+0x40/0x110
[    4.971524]  clk_disable_unused+0x58/0xe0
[    4.976298]  do_one_initcall+0x50/0x1b0
[    4.980376]  kernel_init_freeable+0x234/0x29c
[    4.984024]  kernel_init+0x24/0x120
[    4.988536]  ret_from_fork+0x10/0▒[    5.005679] Freeing unused kernel memory: 24896K
[    5.085191] Run /init as init process
[    5.238969] init: Console is alive
[    5.239107] init: - watchdog -
[    5.246286] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    5.261858] ssdk_switch_device_num_init[1160]:INFO:ess-switch dts node number: 1
[    5.261952] ssdk_dt_get_switch_node[971]:INFO:ess-switch DT exist!
[    5.268371] ssdk_dt_parse_access_mode[857]:INFO:switch_access_mode: local bus
[    5.274318] ssdk_dt_parse_access_mode[870]:INFO:switchreg_base_addr: 0x3a000000
[    5.281531] ssdk_dt_parse_access_mode[871]:INFO:switchreg_size: 0x1000000
[    5.288643] ssdk_dt_parse_mac_mode[295]:INFO:mac mode = 0x0
[    5.295586] ssdk_dt_parse_mac_mode[304]:INFO:mac mode1 = 0xff
[    5.300964] ssdk_dt_parse_mac_mode[313]:INFO:mac mode2 = 0xd
[    5.306878] ssdk_dt_parse_phy_info[659]:INFO:[PORT 7] port_mac_sel = QGMAC_PORT
[    5.312603] ssdk_dt_parse_mdio[709]:INFO:mdio DT exist!
[    5.319657] ssdk_dt_parse_uniphy[332]:INFO:ess-uniphy DT exist!
[    5.324936] ssdk_dt_parse_intf_mac[800]:INFO:dp1 MAC c8:9e:43:82:f0:c0
[    5.330768] ssdk_dt_parse_intf_mac[800]:INFO:dp2 MAC c8:9e:43:82:f0:c1
[    5.337366] ssdk_dt_parse_intf_mac[800]:INFO:dp3 MAC c8:9e:43:82:f0:c2
[    5.343965] ssdk_plat_init start
[    5.476567] ssdk_gcc_clock_init[1033]:INFO:SSDK gcc clock init successfully!
[    5.477431] HPPE initializing...
[    5.482984] malibu_phy_api_ops_init[2860]:INFO:qca probe malibu phy driver succeeded!
[    5.491849] aquantia_phy_api_ops_init[2180]:INFO:qca probe aquantia phy driver succeeded!
[    5.494272] regi_init[3567]:INFO:Initializing HPPE!!
[    5.735098] ssdk_ppe_reset_init[1265]:INFO:ppe reset successfully!
[    5.738306] qca_hppe_tdm_hw_init[684]:INFO:tdm setup num=96
[    5.740472] qca_hppe_portctrl_hw_init[110]:INFO:Hawkeye PPE port initializing
[    7.685141] ssdk_switch_register[1718]:INFO:Chip version 0x1500
[    7.685177] qca_link_polling_select[1315]:INFO:link-polling-required node does not exist
[    7.689866] ssdk_switch_register[1744]:INFO:polling is selected
[    7.698203] regi_init[3571]:INFO:Initializing HPPE Done!!
[    7.703889] regi_init[3631]:INFO:qca-ssdk module init succeeded!
[    7.711249] Platform device for node ffffff803fe2cbf8(edma) not found
[    7.715488] Unable to get EDMA DTS data.
[    7.721802] DP hal init failed.
[    7.837355] dwc3-qcom 8af8800.usb: IRQ hs_phy_irq not found
[    7.837391] dwc3-qcom 8af8800.usb: IRQ dp_hs_phy_irq not found
[    7.841746] dwc3-qcom 8af8800.usb: IRQ dm_hs_phy_irq not found
[    7.847659] dwc3-qcom 8af8800.usb: IRQ ss_phy_irq not found
[    7.855269] dwc3-qcom 8cf8800.usb: IRQ hs_phy_irq not found
[    7.858924] dwc3-qcom 8cf8800.usb: IRQ dp_hs_phy_irq not found
[    7.864479] dwc3-qcom 8cf8800.usb: IRQ dm_hs_phy_irq not found
[    7.870402] dwc3-qcom 8cf8800.usb: IRQ ss_phy_irq not found
[    7.882889] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    7.882937] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1
[    7.887431] xhci-hcd xhci-hcd.1.auto: hcc params 0x0220fe65 hci version 0x110 quirks 0x0000000002010010
[    7.894864] xhci-hcd xhci-hcd.1.auto: irq 101, io mem 0x08a00000
[    7.904713] hub 1-0:1.0: USB hub found
[    7.910555] hub 1-0:1.0: 1 port detected
[    7.914194] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    7.918105] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2
[    7.923393] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed
[    7.930983] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    7.937807] hub 2-0:1.0: USB hub found
[    7.945822] hub 2-0:1.0: 1 port detected
[    7.949660] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[    7.953422] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 3
[    7.958854] xhci-hcd xhci-hcd.2.auto: hcc params 0x0220fe65 hci version 0x110 quirks 0x0000000002010010
[    7.966310] xhci-hcd xhci-hcd.2.auto: irq 102, io mem 0x08c00000
[    7.976020] hub 3-0:1.0: USB hub found
[    7.981901] hub 3-0:1.0: 1 port detected
[    7.985655] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[    7.989532] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 4
[    7.994831] xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0 SuperSpeed
[    8.002428] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[    8.009237] hub 4-0:1.0: USB hub found
[    8.017242] hub 4-0:1.0: 1 port detected
[    8.022521] Platform device for node ffffff803fe2cbf8(edma) not found
[    8.024859] Unable to get EDMA DTS data.
[    8.031237] DP hal init failed.
[    8.115300] kmodloader: 1 module could not be probed
[    8.115407] kmodloader: - qca-nss-dp - 0
[    8.123814] init: - preinit -
[    8.177762] random: jshn: uninitialized urandom read (4 bytes read)
[    8.193025] random: jshn: uninitialized urandom read (4 bytes read)
[    8.197163] random: jshn: uninitialized urandom read (4 bytes read)
/bin/board_detect: line 10: Unsupported: not found
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
[   12.264207] procd: - early -
[   12.264306] procd: - watchdog -
[   12.788693] procd: - watchdog -
[   12.788948] procd: - ubus -
[   12.793200] urandom_read: 3 callbacks suppressed
[   12.793215] random: ubusd: uninitialized urandom read (4 bytes read)
[   12.840481] random: ubusd: uninitialized urandom read (4 bytes read)
[   12.840644] random: ubusd: uninitialized urandom read (4 bytes read)
[   12.846762] procd: - init -
Please press Enter to activate this console.
[   12.933485] urngd: v1.0.2 started.
[   12.950003] random: crng init done
[   12.950036] random: 1 urandom warning(s) missed due to ratelimiting
[   12.951998] kmodloader: loading kernel modules from /etc/modules.d/*
[   12.984539] Platform device for node ffffff803fe2cbf8(edma) not found
[   12.984579] Unable to get EDMA DTS data.
[   12.990022] DP hal init failed.
[   13.087697] Loading modules backported from Linux version v5.15.33-0-g06f50ca83ace
[   13.087735] Backport generated by backports.git v5.15.33-1-0-g183c4ab2
[   13.098573] NET: Registered PF_QIPCRTR protocol family
[   13.102572] SPI driver spidev has no spi_device_id for siliconlabs,si3210
[   13.127390] PPP generic driver version 2.4.2
[   13.128041] NET: Registered PF_PPPOX protocol family
[   13.136294] ath11k c000000.wifi: ipq8074 hw2.0
[   13.136518] remoteproc remoteproc0: powering up cd00000.q6v5_wcss
[   13.139995] remoteproc remoteproc0: Booting fw image IPQ8074/q6_fw.mdt, size 668
[   13.500224] remoteproc remoteproc0: remote processor cd00000.q6v5_wcss is now up
[   13.501635] ath11k c000000.wifi: qmi ignore invalid mem req type 3
[   13.507298] ath11k c000000.wifi: chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff
[   13.512688] ath11k c000000.wifi: fw_version 0x250a04a5 fw_build_timestamp 2021-12-20 07:09 fw_build_id WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1
[   13.523322] Platform device for node ffffff803fe2cbf8(edma) not found
[   13.534251] Unable to get EDMA DTS data.
[   13.540641] DP hal init failed.
[   13.612413] ath11k c000000.wifi: failed to fetch board data for bus=ahb,qmi-chip-id=0,qmi-board-id=255 from ath11k/IPQ8074/hw2.0/board-2.bin
[   13.612468] ath11k c000000.wifi: failed to fetch board.bin from IPQ8074/hw2.0
[   13.624300] ath11k c000000.wifi: qmi failed to fetch board file: -12
[   13.631163] ath11k c000000.wifi: failed to load board data file: -12
[   13.635414] kmodloader: 2 modules could not be probed
[   13.643970] kmodloader: - qca-nss-dp - 0
[   13.649254] kmodloader: dependency not loaded qca-nss-dp
[   13.652834] kmodloader: - qca-nss-drv - 1
1 Like

Added you as a collaborator to the new repository (edited the link above as well). Feel free to commit away. I'll document any changes here on this thread so that others can hop in as well. I'll push commits with clear "rax120v2" in the commit. Will allow us to rebase with other ipq807x work but keep track of the rax120v2 commits on top.

1 Like

I tried to build and load the Netgear GPL 1.2.3.28 firmware on my rax120v2, I got simliar result as you. The router is mostly bricked.

The wifi doesn't work at all, the router web page doesn't work at all. But the ethernet port does work.

The "telnet enable" trick still works, and I was able to access the router via telnet and got a peek of what happened.

It looks like the GPL 1.2.3.28 firmware is a highly trimed verion of the stock 1.2.3.28 firmware. Although they have the same version number, they different a lot.

I have made a filelist of the /rom partition of both the GPL 1.2.3.28 firmware and the stock 1.2.3.28 firmware:

The stock firmware has 4587 files in the rom parition. The gpl version lacks more than 700 of files than the stock one, especially it lacks the wireless firmware and kernel module:


So I guess netgear doesn't meant to make the GPL firmware work at all...They just released a tar ball of the files that are necessary to release...

Below is the ttl-free method to unbrick the routher using tftp.
(Note that amlost all of the method found on the internet (including the netgear website) doesn't work for this device.)

  1. assume using linux pc, connect router with cable, set static ip as 192.168.1.10
  2. get stock firmware, save as 1.img
  3. run in terminal:
tftp 192.168.1.1
>binary
>put  1.img   (dont press enter)
  1. open another terminal to ping 192.168.1.1
  2. power off the device, hold the RESET button, power on device, keep RESET holding all the time
  3. after about 30s, the ping starts to get response. Then release the RESET button.
  4. go back to the terminal of tftp, press enter and wait. (there is no message indicating tftp is working during transfering, but use ifconfig you can see traffic going out at a few MB/s)
  5. after transfer is done, you will see success message from tftp
  6. wait for the device to auto reboot, and wait until the router webpage of 192.168.1.1 is accessable
  7. reset the routher with RESET button using the usual method

(this method is confirmed to work for RAX70 and RAX120. Maybe it works for other RAX devices as well..)
(I got this method from a Chinese blog article of RAX70)

1 Like

How is it working with your latest updates? I can do some tinkering depending on what errors / issues you are seeing with testing.

emda under nss-packages is still giving us some trouble. We are importing ipq8074-ess.dtsi that covers edma correctly so I'm betting that it's something trivial.

[   10.877868] Platform device for node ffffff803fe248f0(edma) not found
[   10.887424] Unable to get EDMA DTS data.
[   10.893819] DP hal init failed.

Latest ssphy fixes are showing positive results. Various usb2 & 3 devices tested (network, mass storage, hid, & telit 4g) without noticable trouble dispite the clock and irq errors in the boot log.

pcie_phy2 is now enabled without crashing the bus. No errors are coming up but nothing new has been detected either. I assume one of the items below is the QCA6290(/QCN9000).

0000:00:00.0 PCI bridge: Qualcomm Device 1002 (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0, IRQ 96
        Memory at 20220000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=01, subordinate=ff, sec-latency=0
        I/O behind bridge: 00000000-00000fff [size=4K]
        Memory behind bridge: 20300000-204fffff [size=2M]
        Prefetchable memory behind bridge: 0000000020500000-00000000206fffff [size=2M]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable+ Count=1/32 Maskable+ 64bit+
        Capabilities: [70] Express Root Port (Slot+), MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] Secondary PCI Express
        Capabilities: [158] Transaction Processing Hints
        Capabilities: [1ec] L1 PM Substates
        Kernel driver in use: pcieport
lspci: Unable to load libkmod resources: error -12

0001:00:00.0 PCI bridge: Qualcomm MDM9x55 LTE Modem [Snapdragon X16] (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0, IRQ 95
        Memory at 10220000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=01, subordinate=ff, sec-latency=0
        I/O behind bridge: [disabled]
        Memory behind bridge: [disabled]
        Prefetchable memory behind bridge: [disabled]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable+ Count=1/32 Maskable+ 64bit+
        Capabilities: [70] Express Root Port (Slot-), MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [150] L1 PM Substates
        Kernel driver in use: pcieport

Just like the MDM9x55.. I'm pretty sure there is no si3210 either but it seems to think there is. Odd..

SPI driver spidev has no spi_device_id for siliconlabs,si3210

Regarding wired networking / edma:

Your rax120 dts is missing the following dts property at every dp[1-6] node:

mdio-bus = <&mdio>;
2 Likes

The GPL code only contains the bare minimum.

Not the wifi driver due to this is QCA proprietary nor all of the netgear own stuff (or, if you got lucky, as precompiled packages)

Thanks! I guess it helps if we actually enable edma also :slight_smile:. I missed this being disabled by default in ipq8074-ess.dtsi.

Ethernet ports are now detected

root@OpenWrt:/# ifconfig -a
br-lan    Link encap:Ethernet  HWaddr C8:9E:43:82:F0:C0
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fd6b:63a0:eb7::1/60 Scope:Global
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr C8:9E:43:82:F0:C0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0x1000

eth1      Link encap:Ethernet  HWaddr C8:9E:43:82:F0:C1
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0x1200

eth2      Link encap:Ethernet  HWaddr C8:9E:43:82:F0:C2
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0x1400

eth3      Link encap:Ethernet  HWaddr 5A:00:63:14:D2:96
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0x1600

eth4      Link encap:Ethernet  HWaddr 36:AE:19:82:33:A0
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:60 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5436 (5.3 KiB)  TX bytes:0 (0.0 B)
          Base address:0x1800

eth5      Link encap:Ethernet  HWaddr 82:0D:85:9E:3B:DE
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0x7000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:64 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4992 (4.8 KiB)  TX bytes:4992 (4.8 KiB)

miireg    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          [NO FLAGS]  MTU:0  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

I added the following to ess-switch as it seemed to be required although I'm not sure how port id's and phy_address's should be set.

qcom,port_phyinfo {
				port@1 {
					port_id = <1>;
					phy_address = <0>;
				};
				port@2 {
					port_id = <2>;
					phy_address = <1>;
				};
				port@3 {
					port_id = <3>;
					phy_address = <2>;
				};
				port@4 {
					port_id = <4>;
					phy_address = <3>;
				};
				port@5 {
					port_id = <5>;
					phy_address = <4>;
				};
				port@6 {
					port_id = <6>;
					phy_address = <5>;					
				};
			};

yes, edma needs to be enabled in the device dts:

&edma {
	status = "okay";
};

I think it would be a good idea, if you use one of the dts files from robimarkos repo as a template for your dts.

And the qcom,port_phyinfo node depends on which config Netgear has used (port_id, phy_address and so on)
Do you have the actual stock dts?

BTW, can you post a full bootlog from the stock firmware?

I have the stock dts and dmesg pushed in my repo:

So that was the idea at least except this is the only HK01 HW2.0 so I used ipq8074-hk01.dts from upstream as a template then manually merged elements from OEM based on the ax3600 structure (just without a separate dtsi). edma was an oversight on my part.

OEM does not use qcom,port_phyinfo so I'm just not sure where the port id's and phy_address's come from exactly. They don't match dp:[*] on the ax3600 that I was using for reference.

It seems to work from an initial test though. Luci comes up. SSH works.

Yes port_id, phy_address is missing in the stock dts, but you can derive that from the mdio node properies.

BTW in you dts the mdio node is missing.

This should work as switch node:

&switch {
	status = "okay";

	switch_cpu_bmp = <0x1>;  /* cpu port bitmap */
	switch_lan_bmp = <0x3e>; /* lan port bitmap */
	switch_wan_bmp = <0x40>; /* wan port bitmap */
	switch_mac_mode = <0x00>; /* mac mode for uniphy instance0*/
	switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/
	switch_mac_mode2 = <0xd>; /* mac mode for uniphy instance2*/
	bm_tick_mode = <0>; /* bm tick mode */
	tm_tick_mode = <0>; /* tm tick mode */

	qcom,port_phyinfo {
		port@0 {
			port_id = <1>;
			phy_address = <0>;
		};
		port@1 {
			port_id = <2>;
			phy_address = <1>;
		};
		port@2 {
			port_id = <3>;
			phy_address = <2>;
		};
		port@3 {
			port_id = <4>;
			phy_address = <3>;
		};
		port@4 {
			port_id = <5>;
			phy_address = <4>;
		    };
		port@5 {
			port_id = <6>;
			phy_address = <7>;
			compatible = "ethernet-phy-ieee802.3-c45";
			ethernet-phy-ieee802.3-c45;
		};
	};

and this is the mdio node:

&mdio {
	status = "okay";

	pinctrl-0 = <&mdio_pins>;
	pinctrl-names = "default";
	reset-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;

	
	ethernet-phy@0 {
		reg = <0>;
	};

	ethernet-phy@1 {
		reg = <1>;
	};

	ethernet-phy@2 {
		reg = <2>;
	};

	ethernet-phy@3 {
		reg = <3>;
        
	};ethernet-phy@4 {
		reg = <4>;
	};

	ethernet-phy@5 {
		reg = <7>;
        compatible ="ethernet-phy-ieee802.3-c45";
	};

};

According to the stock bootlog both pci arent'n used:

qcom-pcie: probe of 20000000.pci failed with error -110
qcom-pcie: probe of 10000000.pci failed with error -110

Netgear simply did not disable the pci's in the dts.

The QCN5024 and QCN5054 modules are connected via ahb