Wireless
Participate in insightful discussions regarding issues related to Intel® Wireless Adapters and technologies
8546 讨论

How to enable AX210 6GHz channels

SOLGIL
新手
19,171 次查看

Hi

 

Could you let me know how to enable AX210 6GHz channels ?

 

Recently, I installed AX210 in my Ubuntu 20.04(Kernel 5.11.0-27 generric).

It works properly with 2GHz and 5GHz, but 6GHz channels are disabled. 

 

Checking “iw list”, all 6GHz channels are disabled. 

I tried to change regulatory domain to US with “iw reg set US”, but phy#0 still shows country code KR with all 6GHz frequencies disabled. 

 

 

Thank you in advance.

 

Regards,

Sol

12 回复数
Spacefish
新分销商 I
19,146 次查看

You can´t

The regulatory database is embeeded in the AX210s Firmware. So called "Device Managed".. Your country is automatically selected by the firmware, it will use the country indicated in beacon packets of received wifis to determine the current country most of the time.

Intel has to release a fimware update with a new regulatory database in order to enable 6Ghz in the countries where this is allowed now.

Regulatory bodies enforce this behaviour, as they specify that the user should be unable to change TX Power and bands by themselfs.. Intel implements this by doing all of this in Firmware.

Almighty1
新分销商 II
19,139 次查看

Has there ever been firmware updates for WiFi cards or networking cards in general?  I had never seen Intel or any other of their competitors ever post firmware updates ever since I had used networking products since the 1980s. 

0 项奖励
n_scott_pearson
超级用户
19,125 次查看
Firmware is released as part of driver update packages. I presume that it is more complicated in Linux, but should be similar.
...S
0 项奖励
Almighty1
新分销商 II
19,077 次查看

Interesting, so basically in Windows, it would mean it's done in ProSet drivers?  I had never successfully used wireless on FreeBSD or Linux so not sure how that works as my internet uses static IPs since my machine is the server so only wired would work as the WiFi would be using NAT.  Is the firmware actually flashed to the card or does it load each time like mentioned below for Linux?

0 项奖励
Spacefish
新分销商 I
19,113 次查看
Firmware is loaded by the kernel driver from /lib/firmware you can see which file is loaded it dmesg. There is no persistent firmware storage on the card, it's loaded each time.
/lib/firmware is updated by the package linux-firmware in Ubuntu.
Currently as far as I know 6Ghz is only enabled in US
0 项奖励
Vegan
新分销商 I
19,040 次查看

Linux is not that up to date for WiFi like Windows is. I have an AX210 and a suitable access point and it works fine. I am using Windows 11.

 

 

 

 

0 项奖励
NetEngineer
初学者
18,351 次查看

Any update on this topic? I still wait for a iwlwifi firmware file we can use in Germany for 6Ghz channels. Is there any page to get release notes for iwlwifi firmware? I haven't seen any indication for this country code issue in the GIT commit messages so far...

As soon as there is a iwlwifi firmware file (and a kernel who is able to play with this file) it would be interessting to know...

0 项奖励
Spacefish
新分销商 I
18,332 次查看

In the meantime they enable 6GHz (lower bands) in Europe or at least in germany.. It´s enabled by this commit: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=23e0197e9e6fe9ca0d2ead3a3df3c41df97ad16b

 

This as 7 days ago!

It only works as a client, but not in AP-Mode, as "NO-IR" is set for all channels in the 6GHz Band.

But at least it works! You still need a 6GHz AP all of them are currently very expensive.

NetEngineer
初学者
18,318 次查看

This is great news! I wasn't able to find the specific information about the region table update on the -68 version mentioned in the commit message. This seems to be quite an important update though. However, I have the -68 ucode in my installation, but my 5.16 kernel (mainline) don't want to use it. But this is something I can surely handle. Thank you very much for sharing this information!

0 项奖励
Vegan
新分销商 I
18,347 次查看

More and more 6 GHz access points are now available. Prices are still comparatively high.

Cable co boxes can be bridged so that a customer WiFi box can be used with more capabilities.

0 项奖励
NetEngineer
初学者
18,309 次查看

Hi again,

today I tried an Ubuntu Jammy (LTS pre-release) with a 5.16.1 Kernel (main) and copied the -68.ucode manually to /lib/firmware. However, the system is still using -67 version. The dmesg output shows the max. version supported is -67 still. Any ideas what's missing here? Is the check of the ucode version part of the iwlwifi module itself (not related to the kernel)? Is there a workaround / force routine I could use? Any recommendation is appreciated. 

EDIT: I think I see the answer. The iwlwifi module needs to updated. Found the source on kernel/git/iwlwifi/iwlwifi-next.git - iwlwifi next tree - for next kernel version

0 项奖励
Spacefish
新分销商 I
18,259 次查看

Try copying the .pnvm file as well..
For me dmesg looks like this:


[   29.031215] iwlwifi 0000:04:00.0: enabling device (0000 -> 0002)
[   29.036978] iwlwifi 0000:04:00.0: api flags index 2 larger than supported by driver
[   29.036999] iwlwifi 0000:04:00.0: TLV_FW_FSEQ_VERSION: FSEQ Version: 0.63.2.1
[   29.037582] iwlwifi 0000:04:00.0: loaded firmware version 66.55c64978.0 ty-a0-gf-a0-66.ucode op_mode iwlmvm
[   29.129368] iwlwifi 0000:04:00.0: Detected Intel(R) Wi-Fi 6 AX210 160MHz, REV=0x420
[   29.297547] iwlwifi 0000:04:00.0: loaded PNVM version 0xdda57f4f
[   29.313000] iwlwifi 0000:04:00.0: Detected RF GF, rfid=0x10d000
[   29.380657] iwlwifi 0000:04:00.0: base HW address: 4c:77:cb:ed:ab:11
[   29.396323] iwlwifi 0000:04:00.0 wlp4s0: renamed from wlan0
[   39.188087] iwlwifi 0000:04:00.0: Unhandled alg: 0x3f0707
​

And 6 GHz is enabled ("iw reg get")

phy#0 (self-managed)
country DE: DFS-UNSET
	(2402 - 2437 @ 40), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-80MHZ, NO-160MHZ
	(2422 - 2462 @ 40), (6, 22), (N/A), AUTO-BW, NO-80MHZ, NO-160MHZ
	(2447 - 2482 @ 40), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-80MHZ, NO-160MHZ
	(5170 - 5190 @ 160), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(5190 - 5210 @ 160), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(5210 - 5230 @ 160), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(5230 - 5250 @ 160), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(5250 - 5270 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
	(5270 - 5290 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
	(5290 - 5310 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
	(5310 - 5330 @ 160), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
	(5490 - 5510 @ 220), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
	(5510 - 5530 @ 220), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
	(5530 - 5550 @ 220), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
	(5550 - 5570 @ 220), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
	(5570 - 5590 @ 220), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
	(5590 - 5610 @ 220), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
	(5610 - 5630 @ 220), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
	(5630 - 5650 @ 220), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
	(5650 - 5670 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-160MHZ, PASSIVE-SCAN
	(5670 - 5690 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-160MHZ, PASSIVE-SCAN
	(5690 - 5710 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, NO-160MHZ, PASSIVE-SCAN
	(5735 - 5755 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-160MHZ
	(5755 - 5775 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-160MHZ
	(5775 - 5795 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-160MHZ
	(5795 - 5815 @ 80), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-160MHZ
	(5815 - 5835 @ 40), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-80MHZ, NO-160MHZ
	(5945 - 5965 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(5965 - 5985 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(5985 - 6005 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6005 - 6025 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6025 - 6045 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6045 - 6065 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6065 - 6085 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6085 - 6105 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6105 - 6125 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6125 - 6145 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6145 - 6165 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6165 - 6185 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6185 - 6205 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6205 - 6225 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6225 - 6245 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6245 - 6265 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6265 - 6285 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6285 - 6305 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6305 - 6325 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6325 - 6345 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6345 - 6365 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6365 - 6385 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN
	(6385 - 6405 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, PASSIVE-SCAN
	(6405 - 6425 @ 480), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, PASSIVE-SCAN

 

I believe the "nvm" is the configuration area.. I read the driver source code and there are multiple sources for the "nvm"/"pnvm". As far as i understand it.
- One is preloaded on the chip?!
- It could be set by the BIOS / UEFI by the "platform manufacturer", guess this is used, if someone certifies a whole laptop as a manufacturer or a device with WiFi (you see certification marking for wifi on some business laptops)
- If could be set by the driver from the PNVM file

In the certification documentation (FCC) intel lists the frequencies of the card as "set in factory in NVM, unchachable by user", but this does not seem to be the case IMHO..

Not sure if the regdb is embeeded in the PNVM or if it is in the ucode, but i suspect the PNVM.. There is some code in the driver to split the .pnvm file into different "sections" but the payload of this section is binary and there is no code in the driver to parse it.. There is code which reads and parses the reg info from the card firmware once it´s running, the format is pretty tightly packed, with single bits defining modes and enabled channels and so on..

Comparing different versions of the PNVM file with a hex editor at least shows some bit changes in a larger region which is suspect to be the firmware embeeded regdb, but we will probably never know.. The payload is parsed by the firmware running on the wifi chip, which we don´t have the sourceode for nor is it easy to disassemble.. As they probably use some esotheric intel only in-house microarchitecture for the firmware..

I wrote a parser for the PNVM file which is able to extract the different binary sections from it, but from there on i am clueless.. If i would be able to understand the format we could have a parse which translates it into human readable regdb, so we can see what intel is doing.
I suspect changing it won´t be possible as it is probably signed.. Furthermore there might be some block-based cipher applied to it.. Probably uses big-endian or something like that as well... Did not want to spent the effort to investigate further in the end.

0 项奖励
回复