Intel AX200 on OpenWrt 21.02.1: no suitable firmware found

Dear all,
I'm trying to make an Intel AX200-based mPCIe card (https://www.alfa.com.tw/products/awpcie-ax200u?variant=36473965805640) work with OpenWrt, and have at least the possibility of using it as 2.4 GHz AP or client towards another 802.11ax AP I own.

I'm currently trying to use the latest stable version of OpenWrt (21.02.1, with Linux kernel 5.4.154), by building the image myself, and PC Engines APU2E4 as main hardware (https://pcengines.ch/apu2e4.htm).

I selected the kmod-iwlwifi package, with make menuconfig, and built a new image for the boards, however, I'm unable to make it work.
The firmware, according also to this discussion, should be already contained in the 5.4 kernel (a user in the same discussion was able to make an AX200-based card work with Ubuntu with "iwlwifi-cc-a0-55.ucode", which should be theoretically included in OpenWrt 21.02.1), but, unfortunately, I'm getting the following errors:

[    9.026814] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-59.ucode failed with error -2
[    9.036740] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-59.ucode
[    9.054893] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-58.ucode failed with error -2
[    9.064656] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-58.ucode
[    9.081692] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-57.ucode failed with error -2
[    9.091776] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-57.ucode
[    9.109264] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-56.ucode failed with error -2
[    9.118876] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-56.ucode
[    9.136929] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-55.ucode failed with error -2
[    9.146814] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-55.ucode
[    9.165052] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-54.ucode failed with error -2
[    9.175014] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-54.ucode
[    9.193324] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-53.ucode failed with error -2
[    9.203496] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-53.ucode
[    9.220945] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-52.ucode failed with error -2
[    9.234411] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-52.ucode
[    9.251301] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-51.ucode failed with error -2
[    9.261138] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-51.ucode
[    9.278196] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-50.ucode failed with error -2
[    9.290903] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-50.ucode
[    9.366085] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-49.ucode failed with error -2
[    9.376032] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-49.ucode
[    9.392498] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-48.ucode failed with error -2
[    9.402086] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-48.ucode
[    9.420162] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-47.ucode failed with error -2
[    9.429865] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-47.ucode
[    9.447788] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-46.ucode failed with error -2
[    9.457434] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-46.ucode
[    9.475320] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-45.ucode failed with error -2
[    9.485148] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-45.ucode
[    9.502486] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-44.ucode failed with error -2
[    9.512402] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-44.ucode
[    9.529829] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-43.ucode failed with error -2
[    9.539856] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-43.ucode
[    9.558108] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-42.ucode failed with error -2
[    9.567877] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-42.ucode
[    9.586032] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-41.ucode failed with error -2
[    9.595883] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-41.ucode
[    9.613414] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-40.ucode failed with error -2
[    9.623153] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-40.ucode
[    9.640631] iwlwifi 0000:05:00.0: Direct firmware load for iwlwifi-cc-a0-39.ucode failed with error -2
[    9.650608] iwlwifi 0000:05:00.0: Falling back to sysfs fallback for: iwlwifi-cc-a0-39.ucode
[    9.669423] iwlwifi 0000:05:00.0: no suitable firmware found!
[    9.675743] iwlwifi 0000:05:00.0: minimum version required: iwlwifi-cc-a0-39
[    9.683233] iwlwifi 0000:05:00.0: maximum version supported: iwlwifi-cc-a0-59
[    9.690809] iwlwifi 0000:05:00.0: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

And, as no firmware can be loaded, the AX200 card cannot be used, even if it shows up when launching lspci.

Do you know if I'm missing some package or if I should use another firmare which is not included in kernel v5.4?

Thank you very much in advance for your assistance!

The individual intel wireless firmwares are packaged separately, e.g. iwlwifi-firmware-iwl9260, however ax200 or ax210 don't appear to be in that list so far. While you can get the necessary files from linux-firmware.git or Intel directly, it would be best to provide a (tested) PR to add them to OpenWrt's repos as well.

2 Likes

@fr483 download https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/iwlwifi-cc-a0-59.ucode to /lib/firmware/. If it doesn't work or crash, try some other (older) version/s: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/

1 Like

Thank you very much for your reply! I tried to separately downloading the firmware from the link you provided (version 59), and now the Intel AX200-based card is properly recognized.
I was able to test it with an 802.11ax Access Point, and it seems to work properly when in client mode. However, I am unable to activate any AP functionality with it, both at 2.4 GHz and 5 GHz. When I try to activate a 2.4 GHz AP with "mode" equal to "AX" inside LuCI, I get:

Generic MAC80211 802.11nacax
Device is not active

And

SSID: MySSIDAX | Mode: Master
Wireless is not associated

And the output of iw dev is:

Interface wlan0
		ifindex 20
		wdev 0xd
		addr b0:a4:60:0f:9e:93
		type AP
		txpower 0.00 dBm
		multicast TXQ:
				qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
				0       0       0       0       0       0       0       0               0

With no AP being created.

If I try then to manually start hostapd, I get the following errors:

Line 18: unknown configuration item 'ieee80211ax'
Line 19: unknown configuration item 'he_default_pe_duration'
Line 20: unknown configuration item 'he_rts_threshold'
Line 21: unknown configuration item 'he_su_beamformer'
Line 22: unknown configuration item 'he_su_beamformee'
Line 23: unknown configuration item 'he_mu_beamformer'
6 errors found in configuration file '/tmp/run/hostapd-phy0.conf'
Failed to set up interface with /tmp/run/hostapd-phy0.conf
Failed to initialize interface

Do you know why? Is the hostapd version included in OpenWrt 21.02.1 still not supporting any AP creation with 802.11ax?

Try master and don't expect AP on 5 GHz:

AP mode on 2.4GHz (on devices driven by iwlmvm)
https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi#features

1 Like

All recent Intel cards use LAR (Location-Aware Regulatory) which means they ignore the region you have configured in software and the firmware won't transmit on any 5 GHz frequency unless it detects other access points already broadcasting on those frequencies, then it deduces what region you're in from that. So if you're in a quiet area with no other 5 GHz signals then the card will never transmit on 5 GHz.

This means if you want a 5 GHz access point, you can't do it with any recent Intel card, which probably explains why they are so cheap.

There's an open bug report for it but it requires persuading Intel to change the firmware so chances are slim this functionality will become available any time soon.

Old firmware versions had the ability to disable LAR, but this caused a firmware crash. Rather than fixing the crash and making the cards extremely desirable for soft-AP duty, Intel disabled the ability switch off LAR instead making the cards essentially useless.

3 Likes

Thanks a lot for your replies! I was finally able to make it work by manually importing the v59 .ucode file (https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/iwlwifi-cc-a0-59.ucode) into "lib/firmware". I then built a new image, and, after flashing it into the target device, the Intel AX200-based chip was properly recognized.
As pointed out by @Malvineous I can only use it in AP mode at 2.4 GHz (and it seems that only 20 MHz and 40 MHz channels can be selected in AP mode). However, it seems to work quite well when used in client mode with an external IEEE 802.11ax Access Point operating at 5 GHz.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.