[GUIDE] Successful Wi-Fi 7 (802.11be) on Framework 13 AMD with Qualcomm QCNCM865 and Arch Linux

I’m having an identical problem with the card after the update. It’s also listing all 6GHz frequencies as disabled in the output of iw list.

                        * 5935.0 MHz [2] (disabled)
                        * 5955.0 MHz [1] (disabled)
                        * 5975.0 MHz [5] (disabled)
                        * 5995.0 MHz [9] (disabled)
                        * 6015.0 MHz [13] (disabled)
                        * 6035.0 MHz [17] (disabled)
                        * 6055.0 MHz [21] (disabled)
                        * 6075.0 MHz [25] (disabled)
                        * 6095.0 MHz [29] (disabled)
                        * 6115.0 MHz [33] (disabled)
                        * 6135.0 MHz [37] (disabled)
                        * 6155.0 MHz [41] (disabled)
                        * 6175.0 MHz [45] (disabled)
                        * 6195.0 MHz [49] (disabled)
                        * 6215.0 MHz [53] (disabled)
                        * 6235.0 MHz [57] (disabled)
                        * 6255.0 MHz [61] (disabled)
                        * 6275.0 MHz [65] (disabled)
                        * 6295.0 MHz [69] (disabled)
                        * 6315.0 MHz [73] (disabled)
                        * 6335.0 MHz [77] (disabled)
                        * 6355.0 MHz [81] (disabled)
                        * 6375.0 MHz [85] (disabled)
                        * 6395.0 MHz [89] (disabled)
                        * 6415.0 MHz [93] (disabled)
                        * 6435.0 MHz [97] (disabled)
                        * 6455.0 MHz [101] (disabled)
                        * 6475.0 MHz [105] (disabled)
                        * 6495.0 MHz [109] (disabled)
                        * 6515.0 MHz [113] (disabled)
                        * 6535.0 MHz [117] (disabled)
                        * 6555.0 MHz [121] (disabled)
                        * 6575.0 MHz [125] (disabled)
                        * 6595.0 MHz [129] (disabled)
                        * 6615.0 MHz [133] (disabled)
                        * 6635.0 MHz [137] (disabled)
                        * 6655.0 MHz [141] (disabled)
                        * 6675.0 MHz [145] (disabled)
                        * 6695.0 MHz [149] (disabled)
                        * 6715.0 MHz [153] (disabled)
                        * 6735.0 MHz [157] (disabled)
                        * 6755.0 MHz [161] (disabled)
                        * 6775.0 MHz [165] (disabled)
                        * 6795.0 MHz [169] (disabled)
                        * 6815.0 MHz [173] (disabled)
                        * 6835.0 MHz [177] (disabled)
                        * 6855.0 MHz [181] (disabled)
                        * 6875.0 MHz [185] (disabled)
                        * 6895.0 MHz [189] (disabled)
                        * 6915.0 MHz [193] (disabled)
                        * 6935.0 MHz [197] (disabled)
                        * 6955.0 MHz [201] (disabled)
                        * 6975.0 MHz [205] (disabled)
                        * 6995.0 MHz [209] (disabled)
                        * 7015.0 MHz [213] (disabled)
                        * 7035.0 MHz [217] (disabled)
                        * 7055.0 MHz [221] (disabled)
                        * 7075.0 MHz [225] (disabled)
                        * 7095.0 MHz [229] (disabled)
                        * 7115.0 MHz [233] (disabled)

BE requires WPA3 ONLY (as does 160 witdth AX) - if you have wpa2/wpa3 mixed mode available on your AP this is actually out of spec you will need to change it and create separate essid’s for your legacy kit that doesn’t support wpa3.

This is why I just stick with Intel cards, even if it means I can’t use Wi-Fi 7 yet…

I use WPA3 only, there is a separate WPA2-Legacy SSID.

The issue seems to be related to the regdb.

Okay, at least I’m not crazy…

I’ve tried to revert to oldest btrfs snapshot, but it is from Sunday, when the kernel was already upgraded, so the issue almost exact the same, bus shows NA instead 00, but still can’t connect to 6GHz or use 160MHz 5GHz.

Intel cards are too “lazy” on linux, mine refused to stay on 6GHz, just because the signal is a little bit stronger, but worse airtime.

For any ath12k issues, I recommend to directly send your request to ath12k Info Page
you’ll have direct contact to Qualcomm team

It’s possible that it’s not the card but your AP. Intel doesn’t follow the wireless domain set by the OS, but tries to determine it on its own, falling back to safe defaults if it’s unable to determine that. Since 6Ghz isn’t generally available worldwide, transmission is turned off until it can determine that it’s in a country where it can be enabled. IIRC, what it does is listen for wifi beacons to see what country code they’re advertising and then uses that for setting its operating region.

So by “staying on” 6Ghz, it’s possible that it detected the wrong country code, disabling 6Ghz; or if it’s on boot, it’s possible that it couldn’t detect the country code right away but was able to connect to a 2.4 or 5Ghz network instead and so you ended up on that one.

Another thing you could try if you haven’t already is separating out your WiFi SSIDs per frequency range; I have separate networks for 2.4, 5, and 6Ghz, so that I can choose specifically what I want instead of letting the OS figure that out. I know that it’s supposed to be able to hop between 5 and 6 Ghz however the WiFi cards still consider 5 and 6Ghz separate bands and will treat them as such, the same as 2.4 and 5Ghz, which is why I separated out my networks in the first place.

1 Like

I appreciate that the Qualcomm developers have this however for me it just seems that they have major issues that end up in mainline kernels way too often, while it’s very rare for the Intel drivers to have problems. While I do like tinkering, I want things to “just work” at least on my primary machine(s).

Wifi 7 and 6Ghz is not yet well supported in Linux.
To get the best support one probably needs to compile your own linux kernel direct from the wireless repo.

when I was using the intel AX210, both different AP’s that I used, one Asus (that did not let me change the country, kept in DE) and on UniFi U7 Pro, correctly configured to PL.

I already separate the 2.4 from the 5 and 6, I don’t like to separate the 6, as the roaming would require completely re-association, as in some places of my home does not have 6GHz coverage.

besides the ath12k firmware that broke last month, I did not had issues with the Qualcomm W7 card for some time.

Now this is almost a deal breaker.

Pretty sure I am running 160mhz ax with WPA2 (5GHz though)

I think that I got it working, I’ve manually downgraded linux-firmware and atheros-firmware to 20250410-1.fc42

~$ iw reg get
global
country PL: 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 - 5725 @ 160), (N/A, 26), (0 ms), DFS
	(5725 - 5875 @ 80), (N/A, 13), (N/A)
	(5945 - 6425 @ 320), (N/A, 23), (N/A), NO-OUTDOOR
	(57000 - 66000 @ 2160), (N/A, 40), (N/A)

phy#0 (self-managed)
country na: DFS-UNSET
	(2402 - 2472 @ 40), (N/A, 20), (N/A)
	(2457 - 2482 @ 20), (N/A, 20), (N/A), PASSIVE-SCAN
	(5170 - 5330 @ 160), (N/A, 20), (N/A), AUTO-BW, PASSIVE-SCAN
	(5490 - 5730 @ 160), (N/A, 20), (N/A), AUTO-BW, PASSIVE-SCAN
	(5735 - 5895 @ 160), (N/A, 20), (N/A), AUTO-BW, PASSIVE-SCAN
	(5945 - 7125 @ 320), (N/A, 30), (N/A), AUTO-BW, PASSIVE-SCAN

~$ dnf list linux-firmware atheros-firmware
Updating and loading repositories:
Repositories loaded.
Installed packages
atheros-firmware.noarch 20250410-1.fc42 @commandline
linux-firmware.noarch   20250410-1.fc42 @commandline

I still get the wrong country, but at least now I have 6GHz working, as the APs are in the correct country, I do not see this as big issue.
I got the rpm’s here: linux-firmware-20250410-1.fc42 | Build Info | koji

The country code for Intel cards is always going to be DFS-UNSET as it doesn’t use the the system-configured country code, it figures it out itself via “Location Aware Regulatory (LAR)”.

My card is not Intel, is the Qualcomm WiFI7

It’s possible Qualcomm does the same then.

I got info from the ath12k mailing list to try the mainline(6.16rc4) kernel. that fixed and with the new firmware it does work, even MLO made an appearance.

~$ iw reg get
global
country PL: 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 - 5725 @ 160), (N/A, 26), (0 ms), DFS
	(5725 - 5875 @ 80), (N/A, 13), (N/A)
	(5945 - 6425 @ 320), (N/A, 23), (N/A), NO-OUTDOOR
	(57000 - 66000 @ 2160), (N/A, 40), (N/A)

phy#0 (self-managed)
country PL: DFS-ETSI
	(2402 - 2482 @ 40), (N/A, 20), (N/A)
	(5170 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
	(5250 - 5330 @ 80), (N/A, 23), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
	(5490 - 5590 @ 80), (N/A, 30), (0 ms), DFS, AUTO-BW
	(5590 - 5650 @ 40), (N/A, 30), (600000 ms), DFS, AUTO-BW
	(5650 - 5710 @ 40), (N/A, 30), (0 ms), DFS, AUTO-BW
	(5735 - 5855 @ 80), (N/A, 14), (N/A), AUTO-BW
	(5855 - 5875 @ 20), (N/A, 14), (N/A), AUTO-BW
	(5945 - 6425 @ 320), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW

Just lost 5GHz 160MHz

1 Like
❯ iw reg get
global
country CA: DFS-FCC
	(2402 - 2472 @ 40), (N/A, 30), (N/A)
	(5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
	(5250 - 5350 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
	(5470 - 5600 @ 80), (N/A, 24), (0 ms), DFS
	(5650 - 5730 @ 80), (N/A, 24), (0 ms), DFS
	(5735 - 5835 @ 80), (N/A, 30), (N/A)
	(5925 - 7125 @ 320), (N/A, 12), (N/A), NO-OUTDOOR

phy#0 (self-managed)
country CA: DFS-FCC
	(2402 - 2472 @ 40), (6, 30), (N/A)
	(5170 - 5250 @ 80), (6, 24), (N/A), NO-OUTDOOR, AUTO-BW
	(5250 - 5330 @ 80), (6, 24), (0 ms), DFS, AUTO-BW
	(5490 - 5590 @ 80), (6, 24), (0 ms), DFS, AUTO-BW
	(5650 - 5730 @ 80), (6, 24), (0 ms), DFS, AUTO-BW
	(5735 - 5835 @ 80), (6, 30), (N/A), AUTO-BW
	(5925 - 7125 @ 320), (N/A, 24), (N/A), NO-OUTDOOR, AUTO-BW

I get this in Canada (also using 6.16-rc4), but yeah this seems to be missing 160, so I think that’s the reason it can’t see my unifi 6e SSID. Anyone else know how I can debug this? or the relevant threads on the LKML?

Just built this branch: pending branch of the ath kernel repo of the kernel, and I got it to connect to my Unifi 6E, with pretty good results:

❯ speedtest -s 3049

   Speedtest by Ookla

      Server: TELUS - Vancouver, BC (id: 3049)
         ISP: Telus Communications
Idle Latency:     3.72 ms   (jitter: 0.34ms, low: 3.41ms, high: 3.93ms)
    Download:  1406.45 Mbps (data used: 2.3 GB)                                                   
                 11.16 ms   (jitter: 4.71ms, low: 2.50ms, high: 40.47ms)
      Upload:  1118.84 Mbps (data used: 1.7 GB)                                                   
                  9.95 ms   (jitter: 5.36ms, low: 1.89ms, high: 45.88ms)
 Packet Loss: Not available.

curiously, the regdom stuff hasn’t changed, but it’s able to see and connect to it now:

❯ iw reg get
global
country CA: DFS-FCC
	(2402 - 2472 @ 40), (N/A, 30), (N/A)
	(5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
	(5250 - 5350 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
	(5470 - 5600 @ 80), (N/A, 24), (0 ms), DFS
	(5650 - 5730 @ 80), (N/A, 24), (0 ms), DFS
	(5735 - 5835 @ 80), (N/A, 30), (N/A)
	(5925 - 7125 @ 320), (N/A, 12), (N/A), NO-OUTDOOR

phy#0 (self-managed)
country CA: DFS-FCC
	(2402 - 2472 @ 40), (6, 30), (N/A)
	(5170 - 5250 @ 80), (6, 24), (N/A), NO-OUTDOOR, AUTO-BW
	(5250 - 5330 @ 80), (6, 24), (0 ms), DFS, AUTO-BW
	(5490 - 5590 @ 80), (6, 24), (0 ms), DFS, AUTO-BW
	(5650 - 5730 @ 80), (6, 24), (0 ms), DFS, AUTO-BW
	(5735 - 5835 @ 80), (6, 30), (N/A), AUTO-BW
	(5925 - 7125 @ 320), (N/A, 24), (N/A), NO-OUTDOOR, AUTO-BW
1 Like

6E uses the frequency on the last line:

	(5925 - 7125 @ 320), (N/A, 24), (N/A), NO-OUTDOOR, AUTO-BW

I was never before able to see or connect any 6GHz-only SSID, I had to share it with 5GHz.

Are you able to connect to any 5GHz 160MHz SSID at full speed?