<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
	<channel>
		<title>Wireless on Datensch.eu</title>
		<link>https://datensch.eu/tags/wireless/</link>
		<description>Recent content in Wireless on Datensch.eu</description>
		<generator>Hugo -- 0.161.1</generator>
		<language>en</language>
		<copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright>
		<lastBuildDate>Mon, 18 May 2026 00:00:00 +0000</lastBuildDate>
		<atom:link href="https://datensch.eu/tags/wireless/index.xml" rel="self" type="application/rss+xml" />
		
		
		<item>
			<title>6 GHz Wi-Fi connection issues</title>
			<link>https://datensch.eu/projects/iwd/</link>
			<pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><author>Florian Maurer</author><guid>https://datensch.eu/projects/iwd/</guid>
			<description><![CDATA[new tech, new problesm]]></description><content type="text/html" mode="escaped"><![CDATA[<p>As I bought a Tuxedo laptop with MediaTek MT7922 / AMD RZ616 wireless card, which supports 6GHz radios as well, I did need to test this.
Unfortunately, my laptop always tried to connect but failed and did fall back to 2.4/5GHz wireless connection.</p>
<h3 id="the-symptoms">The Symptoms<a href="#the-symptoms" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>When connecting your 6GHz network, but the connection times out. If you check your system logs (<code>journalctl -u NetworkManager</code>), you will likely see a sequence like this:</p>
<ol>
<li>The system drops into the global regulatory domain:
<code>wlp99s0: CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD</code></li>
<li>NetworkManager fails to find the network:
<code>device (wlp99s0): state change: config -&gt; failed (reason 'ssid-not-found')</code></li>
<li>The system connects to a 5GHz fallback network and <em>then</em> remembers your correct country code:
<code>wlp99s0: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=DE</code></li>
</ol>
<p>Even if <code>iw reg get</code> shows your country code correctly configured and the 6GHz spectrum available, the connection still fails.</p>
<h3 id="the-root-cause-the-regulatory-domain-catch-22">The Root Cause: The Regulatory Domain &ldquo;Catch-22&rdquo;<a href="#the-root-cause-the-regulatory-domain-catch-22" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>Because 6GHz Wi-Fi regulations vary drastically by country, Linux heavily restricts these frequencies when the Wi-Fi adapter is in the default <code>WORLD</code> (00) regulatory domain. Furthermore, active scanning (sending probe requests) on 6GHz is banned in many regions to save airtime; devices must rely on passive scanning or 5GHz Reduced Neighbor Reports (RNR).
See also: <a href="https://mrncciew.com/2023/09/20/6ghz-ap-discovery-part-1/">https://mrncciew.com/2023/09/20/6ghz-ap-discovery-part-1/</a></p>
<h3 id="the-solution-switch-to-iwd">The Solution: Switch to <code>iwd</code><a href="#the-solution-switch-to-iwd" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>The cleanest, most permanent fix is to replace the aging <code>wpa_supplicant</code> backend with <code>iwd</code> (iNet Wireless Daemon).</p>
<p>Developed by Intel, <code>iwd</code> is a modern Wi-Fi backend built specifically for the Linux kernel. It handles modern WPA3/OWE cryptography and 6GHz roaming natively. More importantly, it manages its own scanning logic using modern passive scanning queues, completely bypassing the NetworkManager behavior that triggers the MediaTek firmware bug.</p>
<p>Here is how to switch to <code>iwd</code> as a drop-in replacement for NetworkManager.</p>
<h4 id="step-1-install-iwd">Step 1: Install <code>iwd</code><a href="#step-1-install-iwd" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>Use the distribution&rsquo;s package manager to install the daemon.
<code>sudo apt install iwd</code></p>
<h4 id="step-2-configure-networkmanager-to-use-iwd">Step 2: Configure NetworkManager to use <code>iwd</code><a href="#step-2-configure-networkmanager-to-use-iwd" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>Tell NetworkManager to use <code>iwd</code> instead of <code>wpa_supplicant</code>.</p>
<p>Open or create the configuration file:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo nano /etc/NetworkManager/NetworkManager.conf
</span></span></code></pre></div><p>Add the following lines:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="k">[device]</span>
</span></span><span class="line"><span class="cl"><span class="na">wifi.backend</span><span class="o">=</span><span class="s">iwd</span>
</span></span></code></pre></div><p>Save and exit the file.</p>
<h4 id="step-3-enable-and-restart-services">Step 3: Enable and Restart Services<a href="#step-3-enable-and-restart-services" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>Start the <code>iwd</code> service and restart NetworkManager to apply the changes.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo systemctl restart NetworkManager
</span></span></code></pre></div><aside class="admonition note">
    <div class="admonition-title"><span class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
      stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-edit-2">
      <path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path>
   </svg></span><b>Note</b></div>
    <div class="admonition-content">Because <code>iwd</code> uses its own secure storage, you will need to re-enter your Wi-Fi passwords the first time you reconnect to your saved networks.</div>
</aside>
<p>Once connected, your MT7922 card should instantly authenticate to the 6GHz band without dropping its regulatory domain. You can verify your connection frequency by running <code>iw dev wlan0 link</code> (replace <code>wlan0</code> with your interface name).</p>
<hr>
<h3 id="alternative-temporary-fixes">Alternative Temporary Fixes<a href="#alternative-temporary-fixes" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>If you cannot switch to <code>iwd</code> for policy reasons, you can bypass the bug in <code>wpa_supplicant</code> using either of these two methods:</p>
<ol>
<li><strong>Lock the connection to the AP&rsquo;s BSSID:</strong> Bypass the scanning phase entirely by telling NetworkManager the exact hardware address of the 6GHz access point.
<code>nmcli connection modify &quot;Your_6GHz_SSID&quot; 802-11-wireless.bssid XX:XX:XX:XX:XX:XX</code></li>
<li><strong>Disable MAC Randomization:</strong> Stop NetworkManager from triggering the firmware reset during scans.
Create <code>/etc/NetworkManager/conf.d/wifi-mac-randomization.conf</code> and add:</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="k">[device]</span>
</span></span><span class="line"><span class="cl"><span class="na">wifi.scan-rand-mac-address</span><span class="o">=</span><span class="s">no</span>
</span></span></code></pre></div>]]></content>
		</item>
		
	</channel>
</rss>
