Support for Netgear Orbi SXK80

Are those the files that were used to produce the .ipq8074 files? I don’t think I’ve seen those *-reg.bin files on their own (which might be the issue). Any pointers on where to look or how to use them would be great.

As a quick test, I’ve just built the SXR code using a board-netgear_sxr80.ipq8074 that was copied from board-netgear_sxs80.ipq8074 (originally from your repo) but with the header changed from SXS to SXR in a hex editor. That did appear to work, with no warning shown on boot or switching the region. Haven't had a chance to check if the wireless side is all working yet though.

Those are the ipq8074 files. Maybe just one of the files is the correct one.

These are the sha256 for the two ipq8074 files that were used for the builds:

806acb316d038a72fa212c82d8dd402506629ecc2dbafaf9f7616dad1b43e59e  package/firmware/ipq-wifi/board-netgear_sxr80.ipq8074
0d6b15fdc5b994d36756ffe6a224016917b585b7dbc6004b4ea914e8d337055f  package/firmware/ipq-wifi/board-netgear_sxs80.ipq8074

Does that correspond to the latest version?

Oh I forgot, those files are packed/assembled with some kind of command. It's been a long time since I've done all this...

Ah that sounds like the ath11k-bdencoder script?

Exactly! So if you decode it again the checksums from above should be reproduced.

I ended up getting different checksums back for both files - are you able to post the 2 reg.bin files somewhere and I'll see if I can work out what might be going on? I can try re-packaging them with bdencoder and see if that matches up with anything.

I re-packaged the bin files you sent over and re-built the OpenWrt images. Both SXR and SXS loaded up fine so I must have just had older files.

I notice with the old and fixed bin files I can't select channels 12 & 13 for the 2.4GHz radio however that looks to be a firmware issue rather than specific to the board file.

Otherwise, I've had the SXR & SXS running as a mesh using one of the 5GHz radios as backhaul for just under a week without any issues.

Will report back if any issues. I was unsure about the build recipe for sysupgrade but it is working, so I will revisit that when I have some time and will try and document a possible install process.

The default if no regulatory information is present is the world regulatory domain, which doesn't allow those channels. With the new files it should allow selecting those if the country is set properly.

You have the sysupgrade working aswell? Is that the latest version in you repo?

I can select GB in the UI. On mine the first thing I ran was:

iw set reg GB

I then also set GB for each of the radios within Luci, here is the result of iw reg get:

root@SXR80:~# iw reg get
country GB: DFS-ETSI
        (2400 - 2483 @ 40), (N/A, 20), (N/A)
        (5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
        (5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
        (5470 - 5730 @ 160), (N/A, 26), (0 ms), DFS
        (5725 - 5850 @ 80), (N/A, 23), (N/A), NO-OUTDOOR
        (5925 - 6425 @ 160), (N/A, 23), (N/A), NO-OUTDOOR
        (57000 - 71000 @ 2160), (N/A, 40), (N/A)

phy#2 (self-managed)
country GB: DFS-ETSI
        (2402 - 2472 @ 40), (N/A, 20), (N/A)
        (5170 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
        (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
        (5490 - 5590 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
        (5590 - 5650 @ 40), (N/A, 24), (600000 ms), DFS, AUTO-BW
        (5650 - 5710 @ 40), (N/A, 24), (0 ms), DFS, AUTO-BW

phy#1 (self-managed)
country GB: DFS-ETSI
        (2402 - 2472 @ 40), (N/A, 20), (N/A)
        (5170 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
        (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
        (5490 - 5590 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
        (5590 - 5650 @ 40), (N/A, 24), (600000 ms), DFS, AUTO-BW
        (5650 - 5710 @ 40), (N/A, 24), (0 ms), DFS, AUTO-BW

phy#0 (self-managed)
country GB: DFS-ETSI
        (2402 - 2472 @ 40), (N/A, 20), (N/A)
        (5170 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
        (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
        (5490 - 5590 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
        (5590 - 5650 @ 40), (N/A, 24), (600000 ms), DFS, AUTO-BW
        (5650 - 5710 @ 40), (N/A, 24), (0 ms), DFS, AUTO-BW

So global seems to have the right range (2400 - 2483) but the individual radios are showing 2402 - 2472. iw phy1 info also shows them as disabled:

                        * 2412 MHz [1] (20.0 dBm)
                        * 2417 MHz [2] (20.0 dBm)
                        * 2422 MHz [3] (20.0 dBm)
                        * 2427 MHz [4] (20.0 dBm)
                        * 2432 MHz [5] (20.0 dBm)
                        * 2437 MHz [6] (20.0 dBm)
                        * 2442 MHz [7] (20.0 dBm)
                        * 2447 MHz [8] (20.0 dBm)
                        * 2452 MHz [9] (20.0 dBm)
                        * 2457 MHz [10] (20.0 dBm)
                        * 2462 MHz [11] (20.0 dBm)
                        * 2467 MHz [12] (disabled)
                        * 2472 MHz [13] (disabled)
                        * 2484 MHz [14] (disabled)

Sysupgrade is working in the version in the repo, I had to change the bootargs in the DTS to:

bootargs-append = " ubi.mtd=rootfs root=/dev/ubiblock0_0";

It needed the ubiblock changing to 0_0 rather than 0_1 and I also couldn't get it to boot without adding ubi.mtd=rootfs but I'm not sure if that is due to the sysupgrade recipe options needing some tweaking. I stripped the options right back as I wasn't sure if they are all needed.

I'm not sure if creating a DNI adds any value given that it'll still need the bootcmd changing via telnet?

Creating the DNI would have the benefit of being able to boot stock firmware and openWRT without changing the bootcmd each time. My original approach was to change the bootcmd from the original firmware, then it's changed once and either stock firmware or openWRT can be loaded onto it.

So you update the bootcmd once to replace the boot_DNI_secureboot then loadn_dniimg can be used on either f/w? That would make sense - you could also switch between them by using boot_partition_set 1|2 (or flip the value in /dev/mtd21).

Yeah it would theoretically be possible to switch between them, however you hardcode the rootfs part, so that wouldn't really work there and to be honest I wouldn't really bother with that. If someone really needs that they'll figure it out, for "normal" openWRT that's not really necessary.

I figured there might be an exotic way to dynamically set the rootfs part depending on the boot_partition rather than hardcode it into the DTS, but like you say I don't think it's worth the extra work - especially as I seem to recall the Netgear f/w overwites both partitions if you run the updater.

When I next get some time I'll see if I can get a DNI generated that it is happy with. The current repo was just to get it working so I could move off the dreadful stock firmware (in AP mode) so it needs a little tidy.

I think the DNI isn't that complicated actually, and I'll be happy to test that when you have something that should work, I just don't really have time to look at it myself at the moment, so I am glad that someone else is taking care of it now and I might finally get those disassembled routers off my desk :smiley:

Just to follow up on channels 12 and 13 not being available to select in the UI I presume it's related to this discussion.

If so it looks like robimarko's recent commit will go some way to fixing that:;a=commit;h=7475321f46b83cc04296638d6cf31542d11e3e78

@Flole are you happy for me to try and get the board files upstreamed into openwrt/firmware_qca-wireless so they can have the updated regDb applied?

Yeah sure, go ahead.

I own an SXR80, two SXR30 and two SXS30.
To switch all this devices to OpenWRT would be perfect. So not sure how easy it is to get an SXR80 firmware? And if it will be also possible for the SXR30 / SXS30 device to build a image.

With some instruction I want to help make this possible.

I believe you can just build the repo where @Gul put the latest state. It should even be possible to simply upstream it so you can benefit from using stock openWRT, someone just needs to do it....

I've been busy recently so haven't had much time to devote to this - however I have had it running on both an SXR80 and SXS80 for around 3 months without issue. I've just updated my local code base to the latest OpenWRT master (there was a reorganisation of the IPQ807X target). I'll get the GitHub repo updated soon.

The outstanding issues I've got are:

  • MAC addresses still seem a bit off compared to stock - Netgear seem to have taken some liberties with how they are incrementing theirs, need to get my head around it again.
  • Tidy up the install instructions. I haven't yet been able to build a DNI image the device will accept using a bootcmd that's also compatible with reverting to the stock firmware, so for now it needs tftpboot to install for the first time and updating the bootcmd.
1 Like