WiFi Fix: MediaTek MT7921e Low Power & Disconnects
Fix low transmit power, authentication timeouts, and random disconnects on MediaTek MT7921e WiFi cards — tested on Ubuntu 24.04-based distros with a ThinkPad L14 Gen 2.
What This Guide Fixes
The MediaTek MT7921e (MT7921 802.11ax) WiFi card has known Linux driver issues that cause three distinct problems:
| Symptom | Root Cause | Fix Level |
|---|---|---|
| WiFi connects but keeps dropping | Driver power management suspends the card | Standard |
| “Authentication timed out” in logs — requires reboot to reconnect | ASPM (Active State Power Management) causes PCIe link errors | Driver fix |
| Transmit power stuck at 3 dBm (should be 15–20 dBm) | Firmware power table or regulatory domain issue | Driver + kernel fix |
| Random disconnects after suspend/resume | Driver fails to recover after firmware crash | Driver fix |
Affected hardware: Laptops with MediaTek MT7921 / MT7921e / MT7922 WiFi chips — common in Lenovo ThinkPad, HP, ASUS, and Acer mid-range laptops.
Will this work for me? This guide was tested on a ThinkPad L14 Gen 2 (i5-1135G7) running Linux Mint 22.3 and Zorin OS 18.1 Pro. The fixes apply to any Ubuntu 24.04-based distro with the same WiFi chip.
Before You Start
Identify Your WiFi Card
Run this to confirm you have the MT7921e:
lspci -nnk | grep -A3 -i network
If you see MEDIATEK Corp. MT7921 and Kernel driver in use: mt7921e, continue with the rest of this guide.
Check Your Current Tx-Power
iw dev wlp9s0 get txpower
If the output shows 3.00 dBm (or anything below 10 dBm), your card is operating at severely reduced power — likely causing poor range and frequent disconnections.
Replace
wlp9s0with your actual interface name if different. Find it withip link show— look for an interface starting withwl.
Check Current Kernel Version
uname -r
Make a note of it. You may need to switch kernels (covered in Phase 3).
Phase 1: Essential Driver Tweaks (Do First)
These three changes fix the most common MT7921e problems and persist across reboots.
Step 1.1: Disable ASPM and Enable Driver Recovery
ASPM (Active State Power Management) causes PCIe communication errors that manifest as “authentication timed out” in kernel logs. The disable_hw_restart=0 option allows the driver to auto-recover after a firmware crash instead of staying broken until reboot.
Create the config file:
sudo tee /etc/modprobe.d/mt7921e.conf > /dev/null <<'EOF'
options mt7921e disable_aspm=1 disable_hw_restart=0
EOF
Important: Both options must be on a single line. Do not split them across multiple lines.
Apply immediately without reboot:
sudo modprobe -r mt7921e && sudo modprobe mt7921e
If you get No such device error after this command, reboot — the module will load correctly on next boot with the config applied.
Step 1.2: Disable WiFi Power Management
NetworkManager’s built-in WiFi power saving can cause the driver to aggressively suspend the card, leading to drops.
sudo tee /etc/NetworkManager/conf.d/wifi-powersave-off.conf > /dev/null <<'EOF'
[connection]
wifi.powersave = 2
EOF
sudo systemctl restart NetworkManager
Note:
wifi.powersave = 2means “disable power saving.” Value0uses the default,1enables it,2disables it.
Step 1.3: Update WiFi Firmware
The firmware file (mt7921e.bin) is the low-level code that runs on the WiFi chip itself. An outdated firmware is the single most common cause of MT7921e issues — including the 3 dBm power bug.
sudo apt update
sudo apt install --reinstall linux-firmware firmware-misc-nonfree
sudo update-initramfs -u
Step 1.4: Set the Regulatory Domain
Without a country code set, Linux defaults to the “world” regulatory domain (code 00) which caps transmit power to the most restrictive limits. Setting the correct country unlocks the full allowed power.
# Check current regulatory domain
iw reg get
# Look for "country 00:" — this means unset
# Set your country (change BD to your actual country code)
sudo iw reg set BD
# Verify it took effect
iw reg get
This change resets on reboot. To make it permanent:
sudo tee /etc/udev/rules.d/99-regulatory.rules > /dev/null <<'EOF'
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlp*", RUN+="/usr/sbin/iw reg set BD"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger
Find your ISO country code: en.wikipedia.org/wiki/ISO_3166-1_alpha-2. Examples:
US(United States),DE(Germany),GB(United Kingdom),IN(India),BD(Bangladesh).
Step 1.5: Reboot
sudo reboot
Phase 2: Verify the Fixes (After Reboot)
Verify ASPM Is Disabled
cat /sys/module/mt7921e/parameters/disable_aspm
Expected output: Y or 1
Verify Regulatory Domain
iw reg get | head -1
Expected: country BD: (or your country code) — not country 00:
Check and Force Tx-Power
sudo iw dev wlp9s0 set txpower fixed 2000
sudo iw dev wlp9s0 info | grep txpower
Expected: txpower 20.00 dBm or similar (15–20 dBm range). If it still shows 3.00 dBm, proceed to Phase 3.
Verify Power Management Is Off
iw dev wlp9s0 get power_save
Expected: Power save: off
Reconnect to Your Network and Test
nmcli device wifi rescan ifname wlp9s0
sleep 5
nmcli device wifi connect "YourSSID" password 'YourPassword' ifname wlp9s0
Always use single quotes
' 'around passwords. Double quotes" "will break if the password contains characters like!,@,#, or$.
Phase 3: Kernel Fallback (If Tx-Power Still Stuck at 3 dBm)
If Phase 1–2 did not resolve the tx-power issue, the problem is in the kernel version itself. Kernel 6.8.x (LTS) is more stable for MT7921e than newer kernels. If you have a kernel like 6.14, 6.17, or newer, switch to 6.8.
Step 3.1: Check Which Kernels You Have Installed
dpkg --list | grep linux-image
Step 3.2: Boot into Kernel 6.8 at GRUB
- Restart your computer.
- During boot, hold Shift (BIOS mode) or press Escape (UEFI mode) to enter the GRUB menu.
- Select “Advanced options for Linux Mint” (or Ubuntu/Zorin equivalent).
- Choose the entry containing
6.8.0-124-genericor any 6.8.x kernel. - Press Enter to boot.
Step 3.3: Verify Kernel and Test
uname -r
# Should show: 6.8.0-124-generic
# Repeat Phase 2 checks
sudo iw dev wlp9s0 set txpower fixed 2000
sudo iw dev wlp9s0 info | grep txpower
Step 3.4: Make Kernel 6.8 the Default (Only if It Fixes the Issue)
sudo sed -i 's/^GRUB_DEFAULT=.*/GRUB_DEFAULT="Advanced options for Linux Mint>Linux Mint, with Linux 6.8.0-124-generic"/' /etc/default/grub
sudo update-grub
Note: The exact string inside the quotes depends on your distro. To see the exact syntax, check what GRUB shows in the menu. For Ubuntu, it would be
"Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-124-generic". For Zorin, adjust accordingly.
Step 3.5: Remove the Unstable Kernel (Optional)
After confirming 6.8 is stable:
sudo apt remove linux-image-6.17.0-35-generic
sudo update-grub
Keep at least two kernels installed as a safety fallback.
Phase 4: MAC Address Blocking Fix (For Office/Building WiFi)
If WiFi connects to your phone hotspot but fails on a specific office or building network — even after the fixes above — your device’s MAC address may be blocked.
Step 4.1: Diagnose by Spoofing MAC
sudo ip link set wlp9s0 down
sudo ip link set wlp9s0 address 00:11:22:33:44:55
sudo ip link set wlp9s0 up
sudo systemctl restart NetworkManager
nmcli device wifi rescan ifname wlp9s0
sleep 5
nmcli device wifi connect "OfficeNetwork" password 'YourPass' ifname wlp9s0
If this connects successfully, your real MAC is blocked on that network.
Step 4.2: Enable Random MAC (Permanent)
sudo tee /etc/NetworkManager/conf.d/mac-random.conf > /dev/null <<'EOF'
[device]
wifi.cloned-mac-address=random
EOF
sudo systemctl restart NetworkManager
Using
randomis better than a fixed fake MAC like00:11:22:33:44:55, which is obviously fake and may also get blocked.
Step 4.3: Long-Term Fix
Contact the network administrator to whitelist your real MAC address:
c8:94:02:ba:26:35
Find your real MAC with: ip link show wlp9s0 | grep link/ether
Phase 5: Prefer 5 GHz (Better Stability)
The 2.4 GHz band is congested and more prone to interference. If your router has both bands, prefer 5 GHz for a more stable connection.
# List available connections
nmcli connection show
# Set 5 GHz band on a connection (replace "Mohsin_5G" with your 5 GHz SSID)
nmcli connection modify "Mohsin_5G" 802-11-wireless.band a
nmcli connection modify "Mohsin_5G" connection.autoconnect yes
# Disable auto-connect on 2.4 GHz if desired
nmcli connection modify "Auto Mohsin_2.4g" connection.autoconnect no
The
.bandvalueameans 5 GHz. Valuebgmeans 2.4 GHz. Omitting it allows both.
Phase 6: Terminal Connection Commands (When GUI Fails)
Use these when the NetworkManager GUI fails to connect or gives unclear error messages.
Scan for Networks
nmcli device wifi rescan ifname wlp9s0
sleep 5
nmcli device wifi list ifname wlp9s0
Connect to a Network
nmcli device wifi connect "SSID" password 'YourPassword' ifname wlp9s0
Always use single quotes
' 'around the password. Double quotes cause errors if the password contains!,@,#,$.
Delete and Refresh a Saved Connection
nmcli connection show
sudo nmcli connection delete "SSID"
Then reconnect via the command above.
Phase 7: Full System Updates (Prevent Future Issues)
Keep everything updated monthly:
# Update all packages
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove --purge -y
# Update WiFi firmware
sudo apt install --reinstall linux-firmware firmware-misc-nonfree
# Update Intel microcode and GPU firmware (ThinkPad specific)
sudo apt install intel-microcode firmware-linux firmware-linux-nonfree
# Install latest kernel
sudo apt install linux-generic
# Check recommended drivers
sudo mintdrivers
After reboot, verify:
uname -r
nmcli device status
sudo iw dev wlp9s0 info | grep txpower
cat /sys/module/mt7921e/parameters/disable_aspm
Quick Reference: Decision Tree
| Symptom | Start Here |
|---|---|
| WiFi won’t turn on / no networks visible | Phase 1 (reinstall firmware, reboot) |
| Connects but keeps dropping | Phase 1.2 (power management) |
| Disconnects and won’t reconnect without reboot | Phase 1.1 (ASPM + hw_restart) |
| “Authentication timed out” in kernel logs | Phase 1.1 (ASPM fix) |
| Tx-power stuck at 3 dBm | Phase 1.3 (firmware) + Phase 1.4 (reg domain) → if no change: Phase 3 (kernel 6.8) |
| Works on hotspot, not on office/building WiFi | Phase 4 (MAC blocking) |
| GUI shows “Network could not be found” | Phase 6 (terminal rescan + connect) |
| Password with special characters fails | Use single quotes in terminal |
| Everything works but want better stability | Phase 5 (5 GHz band) |
| Recurring issues after kernel update | Phase 7 (full update) + Phase 3 (kernel 6.8) |
Known Issues: MT7921e on Linux
- Tx-power stuck at 3 dBm — Firmware bug in
20240219build on kernels >= 6.14. Fix: Phase 3 (kernel 6.8 fallback). - Authentication timeouts — Caused by ASPM (PCIe link power state transitions). Fix: Phase 1.1 (
disable_aspm=1). - Driver fails to recover after disconnect — The card goes into an unrecoverable state and requires a reboot. Fix: Phase 1.1 (
disable_hw_restart=0). - “RAS: Correctable Errors collector initialized” in dmesg — This is normal hardware error reporting, not a real problem. Ignore it.
- Interface named
wlp9s0notwlan0— Commands usingwlan0will fail on this device. Usewlp9s0or check withip link show. BIGDandBIGD-5are the same router on 2.4 GHz and 5 GHz bands respectively. Both bands may be blocked independently when MAC is blocked.
Verification Checklist
After completing all phases, run through this list:
-
cat /sys/module/mt7921e/parameters/disable_aspm→Yor1 -
iw reg get→ shows your country, not00 -
sudo iw dev wlp9s0 info | grep txpower→ 15–20 dBm range -
iw dev wlp9s0 get power_save→Power save: off -
nmcli device status→ WiFi showsconnected - Connection survives suspend/resume cycle
- Connection survives router reboot
Related Guides
- Common Issues — FAQ for general Windows-to-Linux problems
- Log Analysis — Reading system logs for hardware diagnostics
- Fan and Power Management — ThinkPad fan control and power tuning
- Package Management Basics — APT, Snap, Flatpak fundamentals
This guide was written from real debugging sessions on a ThinkPad L14 Gen 2 with a MediaTek MT7921e WiFi card running Linux Mint 22.3 and Zorin OS 18.1 Pro. Every command was tested on actual hardware.
Discussion