At least it doesn’t for me. After some digging into the kernel code, it looks like a new mechanism (CLC, country location control) was implemented in the kernel driver for 6.7 (driver’s name is mt7921e), but it didn’t work at all for me.
Anyway, the solution on my system was to disable CLC like this:
echo "options mt7921_common disable_clc=1" | sudo tee /etc/modprobe.d/mt7921-kernel67-fix.conf
There are a ton of patches on the linux-wireless mailing list regarding the mt7921 and this mechanism, so maybe this will be fixed in later releases.
Same issue, but this fix didn’t work for me. I’m not sure how long wifi 6 hasn’t been working.
I have 2 kernels installed (stock and custom). Tried booting into each, but to no avail.
When I look at the band options in iw and nmcli, I only have a(5g) and b/g (2.4)
nmcli and iw detects my wifi 6 network, but reports it to be on channel 0. In my router config, I have set the wifi channel to 165, but it still reports as 0. I’ve tried renaming/separating my wifi 6 network in router settings, tried to connect using iw and nmcli in terminal and both fail with a network not found error.
I’ve tried for weeks searching for a solution to this, but the results are very limited. I would really appreciate some help with this.
I figured it out.
Even though you can set your region with sudo iw reg set US
and it appears to be set when I checked. I found that in /sys/module/cfg80211/parameters/ieee80211_regdom
it was set to world (00)
Using the aforementioned echo "options mt7921_common disable_clc=1" | sudo tee /etc/modprobe.d/mt7921-kernel67-fix.conf
Didn’t seem to do anything to help
Using echo "options cfg80211 ieee80211_regdom=US" | sudo tee /etc/modprobe.d/mt7921-kernel67-fix.conf
and then reboot
Did the trick
Not sure why the region isn’t getting set correctly, but this has survived several reboots.
Hope this helps someone else.
I agree, but I cannot seem to find out as to what is responsible for setting regdom.
Looking at kernel code net/wireless/reg.c, I found this note:
/*
* Central wireless core regulatory domains, we only need two,
* the current one and a world regulatory domain in case we have no
* information to give us an alpha2.
* (protected by RTNL, can be read under RCU)
*/
So, I started thinking this may be an OS issue. I installed Fedora-Kinoite-ostree-x86_64-41-1.4 which is on kerne 6.11. On first boot, I connected to my WiFi and checked regdom. I was already set to US.
So, I am currently running Linux Mint 22.1, but this problem is present for quite a while. Mint uses network-manager-gnome to handle internet/network connections, but I’m not sure if it has anything to do with setting regdom.
Overall, I believe the “bug” lies in either debian/ubuntu based OS’s or gnome base NetworkManager. But this still doesn’t answer the question, “Who or where to we submit the bug?”
If anyone at Framework is working specifically on wifi support in Linux I’d love to hear from you.
For myself, I no longer have access to the 6GHz network I was having issues with and I will swap to an Intel BE200 card soon as I am unhappy with the performance of the included Mediatek card.
I could be mistaken, but the ieee80211_regdom parameter is only used by the cfg80211 driver during initialization which happens during boot. It’s possibly to force its use without rebooting (via rmmod), but it’s probably best and easiest just to reboot.
Quick and dirty command to verify (assuming you have iw installed):
# If there's no output and 'iw phy0 info' doesn't display a 'Band 4',
# you likely have mt7921 dual-band chip
iw phy0 info | grep "Band 4" -A250 | grep "Frequencies:" -A 59
As to why the RZ616 (mt7921k) driver doesn’t want to use the configuration specified with iw reg set US, I’m not so sure. The commit which introduced it refers to configuration in the firmware, so possibly MediaTek released firmware for Linux which has 6GHz disabled by default, but that’s just speculation.
The mt7922 and mt7925 chips are somewhat similar in that they also supports CLC (although mt7925 is WiFi 7 instead, mt7921/mt7921k/mt7922 share same driver). However, the neither require the additional disable_clc=1 module parameter to enable 6GHz like the mt7921k.
Side note, the mt7921k (tri-band, WiFi 6E) is not the same as the mt7921 (dual-band, WiFi 6).
Just going further down the rabbit hole on this. On Fedora, “iw reg get” does correctly show the region automatically, while “/sys/module/cfg80211/parameters/ieee80211_regdom” shows 00, and yet, it still successfully connects to 6GHz networks on RZ717!
We’re trying to figure out why that is. Perhaps its that if the reg region is set early enough in the boot process, the mtk kernel modules use it correctly.
Edit: Never mind, reading through the kernel documentation, ieee80211_regdom is the legacy path for setting the regulatory region. The modern/recommended path is through iw reg set. As noted above, Fedora does set this as part of the boot process through a udev rule that checks the current region and then runs iw reg set.