Odyssey Wifi problems - Cannot setup a 5 GHz access point (but 2.4 GHz works) [ODYSSEY-X86J4105]

I have an X86J4105 Odyssey, running Ubuntu 21.04 (fully up-to-date, kernel 5.11.0), and I need to setup a 5 GHz Wifi access point using hostapd. This does not work, because the 5 GHz channels are either disabled or listed as “No IR”, which means “No initiating radiation” (i.e., it can connect to an external 5 GHz access point but it cannot create one by itself).

How do I get rid of the “No IR”, so that the system allows me to create a 5 GHz access point?
I can create a 2.4 GHz access point on this system, but that is not good enough for my usecase.

I suspect this is a driver issue, but I’m not sure.

The exact same hostapd/dnsmasq configuration works on a Raspberry Pi 4, so I’m confident it is some hardware, firmware or driver issue - Not a hostapd configuration error on my part (also, 2.4 GHz works).

Edit: There was also some additional iwlwifi driver info I forgot to paste:
Selected output from dmesg | grep -i wifi:

[ 4.200358] iwlwifi 0000:00:0c.0: loaded firmware version 46.6f9f215c.0 9000-pu-b0-jf-b0-46.ucode op_mode iwlmvm
[ 4.275764] iwlwifi 0000:00:0c.0: Detected Intel® Wireless-AC 9560 160MHz, REV=0x318

The “Detected” board is a Wireless-AC 9560 according to the driver, but lspci reports AC 1550i - Is this a problem (or are these two names for the same or compatible hardware)?
Edit 2: This is probably not a problem, since I found the string extern const char iwl9560_killer_1550i_name[]; in the iwl-config.h file (from the kernel driver’s source code). Probably different Intel commercial and internal/technical name.

Below this line is some information about my system:

dmesg | grep -i odyssey:
[ 0.000000] DMI: Default string ODYSSEY-X86J4105/ODYSSEY-X86J4105, BIOS SD-BS-CJ41G-M-101-E 01/07/2020

Selected output from lspci -vvv:

00:0c.0 Network controller: Intel Corporation AC 1550i Wireless (rev 03)
DeviceName: Onboard - Ethernet
Subsystem: Intel Corporation AC 1550i Wireless
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 44
Region 0: Memory at a1414000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [c8] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [40] Express (v2) Root Complex Integrated Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE- FLReset+
DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
DevCap2: Completion Timeout: Range B, TimeoutDis+ NROPrPrP- LTR+
10BitTagComp- 10BitTagReq- OBFF Via WAKE#, ExtFmt- EETLPPrefix-
EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
FRS-
AtomicOpsCap: 32bit- 64bit- 128bitCAS-
DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis- LTR+ OBFF Disabled,
AtomicOpsCtl: ReqEn-
Capabilities: [80] MSI-X: Enable+ Count=16 Masked-
Vector table: BAR=0 offset=00002000
PBA: BAR=0 offset=00003000
Capabilities: [100 v0] Null
Capabilities: [14c v1] Latency Tolerance Reporting
Max snoop latency: 0ns
Max no snoop latency: 0ns
Capabilities: [164 v1] Vendor Specific Information: ID=0010 Rev=0 Len=014 <?>
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi

modinfo iwlwifi

filename: /lib/modules/5.11.0-22-generic/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
license: GPL
author: Intel Corporation linuxwifi@intel.com
description: Intel® Wireless WiFi driver for Linux

iw list

Wiphy phy0
	wiphy index: 0
...
	Supported interface modes:
		 * IBSS
		 * managed
		 * AP
		 * AP/VLAN
		 * monitor
		 * P2P-client
		 * P2P-GO
		 * P2P-device
...	
	Band 1:
...
		Frequencies:
			* 2412 MHz [1] (22.0 dBm)
			* 2417 MHz [2] (22.0 dBm)
			* 2422 MHz [3] (22.0 dBm)
			* 2427 MHz [4] (22.0 dBm)
			* 2432 MHz [5] (22.0 dBm)
			* 2437 MHz [6] (22.0 dBm)
			* 2442 MHz [7] (22.0 dBm)
			* 2447 MHz [8] (22.0 dBm)
			* 2452 MHz [9] (22.0 dBm)
			* 2457 MHz [10] (22.0 dBm)
			* 2462 MHz [11] (22.0 dBm)
			* 2467 MHz [12] (22.0 dBm)
			* 2472 MHz [13] (22.0 dBm)
			* 2484 MHz [14] (disabled)
...
	Band 2:
...
		Frequencies:
			* 5180 MHz [36] (22.0 dBm) (no IR)
			* 5200 MHz [40] (22.0 dBm) (no IR)
			* 5220 MHz [44] (22.0 dBm) (no IR)
			* 5240 MHz [48] (22.0 dBm) (no IR)
			* 5260 MHz [52] (22.0 dBm) (no IR, radar detection)
			* 5280 MHz [56] (22.0 dBm) (no IR, radar detection)
			* 5300 MHz [60] (22.0 dBm) (no IR, radar detection)
			* 5320 MHz [64] (22.0 dBm) (no IR, radar detection)
			* 5340 MHz [68] (disabled)
			* 5360 MHz [72] (disabled)
			* 5380 MHz [76] (disabled)
			* 5400 MHz [80] (disabled)
			* 5420 MHz [84] (disabled)
			* 5440 MHz [88] (disabled)
			* 5460 MHz [92] (disabled)
			* 5480 MHz [96] (disabled)
			* 5500 MHz [100] (22.0 dBm) (no IR, radar detection)
			* 5520 MHz [104] (22.0 dBm) (no IR, radar detection)
			* 5540 MHz [108] (22.0 dBm) (no IR, radar detection)
			* 5560 MHz [112] (22.0 dBm) (no IR, radar detection)
			* 5580 MHz [116] (22.0 dBm) (no IR, radar detection)
			* 5600 MHz [120] (22.0 dBm) (no IR, radar detection)
			* 5620 MHz [124] (22.0 dBm) (no IR, radar detection)
			* 5640 MHz [128] (22.0 dBm) (no IR, radar detection)
			* 5660 MHz [132] (22.0 dBm) (no IR, radar detection)
			* 5680 MHz [136] (22.0 dBm) (no IR, radar detection)
			* 5700 MHz [140] (22.0 dBm) (no IR, radar detection)
			* 5720 MHz [144] (22.0 dBm) (no IR, radar detection)
			* 5745 MHz [149] (22.0 dBm) (no IR)
			* 5765 MHz [153] (22.0 dBm) (no IR)
			* 5785 MHz [157] (22.0 dBm) (no IR)
			* 5805 MHz [161] (22.0 dBm) (no IR)
			* 5825 MHz [165] (22.0 dBm) (no IR)
			* 5845 MHz [169] (disabled)
			* 5865 MHz [173] (disabled)
			* 5885 MHz [177] (disabled)
			* 5905 MHz [181] (disabled)

And for completeness:

If I try to configure hostapd for channel 44 (5220 MHz), journalctl -xe reports this:

jul 07 14:38:19 mysystem hostapd[1533104]: wlo2: interface state UNINITIALIZED->COUNTRY_UPDATE
jul 07 14:38:19 mysystem hostapd[1533104]: Channel 44 (primary) not allowed for AP mode, flags: 0x30073 NO-IR
jul 07 14:38:19 mysystem hostapd[1533104]: wlo2: IEEE 802.11 Configured channel (44) not found from the channel list of current mode (2) IEEE 802.11a

(And some follow-up errors further down in the error output.)

No-one from Seeed who has some insight into the 5 GHz Wifi configuration? New firmware available?

Found via some Googling:

"The NO-IR flag then means you cannot use modes of operation that require you to initiate radiation first"

Check / set your wifi country code: https://superuser.com/a/810889/20990

I have tried different country codes, but I don’t seem to have written that in my post above…

I wrote about the “No IR” flag in my first OP paragraph.
What I didn’t write is that iw reg get lists both the regulatory information relating to the domain defined by iw reg set COUNTRY_CODE, but the “phy#0” is also defined as “self-managed”, which is something I do not see on a Raspberry Pi with a similar configuration.

Under “self-managed”, iw reg get says “DFS-UNSET”, but I don’t know why…

Like this:

global
country SE: 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)
(57000 - 66000 @ 2160), (N/A, 40), (N/A)

phy#0 (self-managed)
country SE: 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 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5510 - 5530 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
(5530 - 5550 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5550 - 5570 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
(5570 - 5590 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5590 - 5610 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, PASSIVE-SCAN
(5610 - 5630 @ 240), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40MINUS, PASSIVE-SCAN
(5630 - 5650 @ 240), (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
(5710 - 5730 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, 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 @ 20), (6, 22), (N/A), AUTO-BW, NO-HT40MINUS, NO-HT40PLUS, NO-80MHZ, NO-160MHZ

The wiki at https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi only mentions 2.4ghz AP support.

To save you from further frustration, get Realtek based dongle for 10 Euro and setup AP on it. That will work. The support for the Intel AP’s in Ubuntu is really bad and erratic. I spent days on that and it is just not reliable.

I forgot to reply here, but I saw that too.

I did try to recompile the kernel driver with some modifications (namely, comment out “channel->flags |= IEEE80211_CHAN_NO_IR” and “flags |= IEEE80211_CHAN_NO_IR”) to prevent the “No IR” flag to ever be set for anything. I am not 100% sure I compiled the driver correctly, but even though “iwl reg get” did no longer complain, it did not work. The system logs complained about “microcode” errors, which I assume is some block in the Intel Wifi firmware that prevents any 5 GHz AP mode regardless of what the software/drivers define.

I have given up on making this chipset work as a Wifi AP in the 5 GHz band. Too bad, since where the box is located, the 2.4 GHz spectrum is really congested, with terrible performance.

Yes, that will probably be the easiest way forward. I know since earlier how to bridge a Wifi AP and Ethernet uplink, so I assume I can just as easily bridge the internal Intel 2.4 GHz Wifi AP with a USB-based 5 GHz AP as well.

But I don’t think any other distro than Ubuntu will manage any better for this chipset, see my above comment…