Adding OpenWrt Support for Netgear RAX120 (Nighthawk AX12)

I think that the problem with variables is caused by errors in dts files:

/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:564.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:572.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:578.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@2:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:584.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@3:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:590.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@4:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:596.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@5:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:602.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@6:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:517.27-520.4: Warning (unit_address_format): /soc@0/mdio@90000/ethernet-phy@05: unit name should not have leading 0s
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/image-ipq8074-rt-ax89x.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format'
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/image-ipq8074-rt-ax89x.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/image-ipq8074-rt-ax89x.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/image-ipq8074-rt-ax89x.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:563.11-569.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@0: Relying on default #address-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:563.11-569.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@0: Relying on default #size-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:571.11-575.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@1: Relying on default #address-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:571.11-575.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@1: Relying on default #size-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:577.11-581.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@2: Relying on default #address-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:577.11-581.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@2: Relying on default #size-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:583.11-587.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@3: Relying on default #address-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:583.11-587.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@3: Relying on default #size-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:589.11-593.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@4: Relying on default #address-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:589.11-593.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@4: Relying on default #size-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:595.11-599.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@5: Relying on default #address-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:595.11-599.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@5: Relying on default #size-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:601.11-608.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@6: Relying on default #address-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts:601.11-608.6: Warning (avoid_default_addr_size): /soc@0/mdio@90000/switch@10/ports/port@6: Relying on default #size-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8072-wpq873.dts:472.13-477.4: Warning (pci_device_reg): /soc@0/pci@10000000/bridge@1,0: PCI unit address format error, expected "0,0"
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8072-haze.dts:302.13-317.4: Warning (pci_device_reg): /soc@0/pci@10000000/bridge@1,0: PCI unit address format error, expected "0,0"
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8072-ax9000.dts:565.13-581.4: Warning (pci_device_reg): /soc@0/pci@10000000/bridge@1,0: PCI unit address format error, expected "0,0"
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts:240.7-28: Warning (reg_format): /soc@0/spi@78b5000/flash@0/partitions/partition@650000/nvmem-layout/aqr-fw@0:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/image-ipq8074-nbg7815.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format'
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/image-ipq8074-nbg7815.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/image-ipq8074-nbg7815.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/image-ipq8074-nbg7815.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts:238.23-241.8: Warning (avoid_default_addr_size): /soc@0/spi@78b5000/flash@0/partitions/partition@650000/nvmem-layout/aqr-fw@0: Relying on default #address-cells value
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/linux-6.6.47/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts:238.23-241.8: Warning (avoid_default_addr_size): /soc@0/spi@78b5000/flash@0/partitions/partition@650000/nvmem-layout/aqr-fw@0: Relying on default #size-cells value
Pseudo file "dev" exists in source filesystem "/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-qualcommax/dev".
Ignoring, exclude it (-e/-ef) to override.
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/tmp/openwrt-qualcommax-ipq807x-netgear_rax120v2-initramfs-uImage.itb.its:48.15-55.5: Warning (unit_address_vs_reg): /configurations/config@hk01: node has a unit name, but no reg or ranges property
/git/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/netgear_rax120v2-uImage.itb.its:48.15-55.5: Warning (unit_address_vs_reg): /configurations/config@hk01: node has a unit name, but no reg or ranges property

but I'm not sure how to fix that.

Config:

	configurations {
		default = "config@hk01";
		config@hk01 {
			description = "OpenWrt netgear_rax120v2";
			kernel = "kernel-1";
			fdt = "fdt-1";
			
			
			
		};
		
	};

I don't think so, those are just warnings from dtc.

That has nothing to do with the actual image build.

Yes you right.

We call this function for each device at the beginning: https://github.com/openwrt/openwrt/blob/main/include/image.mk#L782
Variables are overwritten during this step.
As result, the last occurrence of a specified variable is used later during image preparation.

Hi community,

Wondering if anyone has more info on the following topics, I was not able to find info myself:

  • I noticed few commits that seem to work towards enabling the cooling fan on RX120v2 (here and here), but seems that fan itself is not running yet, at least on my device. Is it the case that this feature needs more development or am I simply missing some user configuration?
  • I have noticed in other threads, mainly the "custom builds" Qualcommax NSS thread, that there has been some progress in getting 5GHz WiFi power up, for example by replacing the board-2.bin file. From what I understand so far these fixes are with some level of risk and not clean enough to bring them into snapshot builds. Any clue if some fix is nearby and known to dev team which will make it into main git?

From what I can gather, @BrainSlayer has developed a patch that patches the board info from the device into an actually useful BDF for OpenWRT.
Haven't personally tested it myself but some folks that have compiled the patch for other devices report it works.

As for the board-2 and cal-ahb files, I used the generic one for RAX120 and the cal-ahb from MX4200 and the only main annoyance is that it drags along the MAC addresses from the source MX4200 instead of taking the one from the device.
This has caused me issues in my home network that uses 2 RAX120s , one as main router and the other one as AP because MAC addresses would conflict and block the network.
The workaround for that was to make them generate a random MAC address for each interface.

the mac addresses are patched into the caldata by openwrt scripts. but these scripts operate modell specific. so you may need todo adjustments to patch the caldata with the correct ones. this is very simple

Thank you a lot for testing the different files and sharing results. It certainly helped me. I just got time to play with the router again and ended up with the following setup for now:

  • using firmware 2.12 (very early to tell, but seems it has fixed the very regular and very annoying firmware crashes I had before. Maybe I was unlucky with client devices, as other forum members seemed to call this router stable much earlier than I could)
  • board-2.bin downloaded from same source as the firmware
  • cal-ahb file from MX4200 shared by you in this post

While I do not want to celebrate prematurely, it seems like WiFi is finally working reliably. I do not know if the signal coverage is as good as it should be, but it does seem no worse than previous routers, covers all of the area I need, speed is stable, network runs seemingly fast and not a single crash so far.

1 Like

hello everyone

i have a RAX120v2 with "OpenWrt SNAPSHOT (r27230-a70555fb4f)" almost everything works fine, but, have 2 little problems, 1st one itĀ“s the cooling fan isnĀ“t working (i have it cooled with a 80mm fan below the router...) 2nd, the 2,4Ghz WiFi stays connected fine, but after sometime, the internet connection drops and stay connected but no internet,something that doesn't happen with the 5Ghz connection. I am using default cal-ahb and board-2 from villahed94 post 417

Please consider updating this post. I was looking for an OpenWRT-compatible router, and considered RAX120. This post mentioned that we can check whether there's FCC-ID at the bottom of the device to see if it's v1 or v2, and yes - I checked the device before purchasing it, and it does have FCC ID, exactly as the one listed.
However, now I've got it, but after enabling telnet and getting into the device, it's version 1, which makes it useless. Sure, I should have done more investigation on this, but please update this post to make sure people won't make the same mistake.