From Linux kernels ≥5.16, Intel committed a new feature to iwlwifi, “iwlwifi: mvm: read 6E enablement flags from DSM and pass to FW”.
In an ideal world, the commit results in this process flow:
However, there are already OEMs who have neglected to set Wi-Fi 6E/6GHz enablement in their BIOS ACPI tables accordingly, e.g.:
Notably, these are products which list Wi-Fi 6E among their features in their spec sheets (P360 Tiny|P14s Gen 2 Intel|Framework).
Unfortunately, there is no way to bypass the regulatory restrictions set by iwlwifi, as the Linux wireless regulatory framework now allows wireless drivers to managed its own regulatory rules, taking precedence over the userspace regulatory domain.
Essentially, with the combination of:
…, Wi-Fi 6GHz band cannot be utilized in userspace even when in an environment where Wi-Fi 6E is available for unlicensed, indoor use, without a BIOS update from the OEM.
The simplest fix to re-enable Wi-Fi 6E with the above combination of hardware and software, is to just bypass the code block introduced by the iwlwifi commit:
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c index 1d5ee4330..ab182a1f8 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c @@ -1229,13 +1229,13 @@ static void iwl_mvm_lari_cfg(struct iwl_mvm *mvm) &iwl_guid, &value); if (!ret) cmd.chan_state_active_bitmap = cpu_to_le32(value); - +/* ret = iwl_acpi_get_dsm_u32(mvm->fwrt.dev, 0, DSM_FUNC_ENABLE_6E, &iwl_guid, &value); if (!ret) cmd.oem_uhb_allow_bitmap = cpu_to_le32(value); - +*/ ret = iwl_acpi_get_dsm_u32(mvm->fwrt.dev, 0, DSM_FUNC_FORCE_DISABLE_CHANNELS, &iwl_guid, &value);
Re-compiling your kernel is going to be easier than convincing your OEM's tech support to issue a BIOS update, so let's do that on Fedora in the meantime.
fedpkg local
steplinux-kernel-test.patch
and paste the above patch inkernel.spec
but fedpkg
no longer iterates through additional patch definitionssudo dnf install ccache
, if your kernel build fails for any reason, this greatly speeds up subsequent rebuilds (fedpkg
clears the build folder each time it is invocated)fedpkg local
cd x86_64 && ls
sudo dnf install
followed by the packages you need, probably:kernel kernel-core kernel-modules kernel-modules-core kernel-modules-extra
kernel-devel kernel-devel-matched
no IR
rather than disabled
:$ iw list|egrep "\* 6[0-9]+ MHz" * 6015 MHz [13] (22.0 dBm) (no IR) * 6035 MHz [17] (22.0 dBm) (no IR) * 6055 MHz [21] (22.0 dBm) (no IR) * 6075 MHz [25] (22.0 dBm) (no IR) * 6095 MHz [29] (22.0 dBm) (no IR) * 6115 MHz [33] (22.0 dBm) (no IR) * 6135 MHz [37] (22.0 dBm) (no IR) * 6155 MHz [41] (22.0 dBm) (no IR) * 6175 MHz [45] (22.0 dBm) (no IR) * 6195 MHz [49] (22.0 dBm) (no IR) * 6215 MHz [53] (22.0 dBm) (no IR) * 6235 MHz [57] (22.0 dBm) (no IR) * 6255 MHz [61] (22.0 dBm) (no IR) * 6275 MHz [65] (22.0 dBm) (no IR) * 6295 MHz [69] (22.0 dBm) (no IR) * 6315 MHz [73] (22.0 dBm) (no IR) * 6335 MHz [77] (22.0 dBm) (no IR) * 6355 MHz [81] (22.0 dBm) (no IR) * 6375 MHz [85] (22.0 dBm) (no IR) * 6395 MHz [89] (22.0 dBm) (no IR) * 6415 MHz [93] (22.0 dBm) (no IR) [snip]