How to Fix WiFi Driver and Connection Issues on Linux: Module Loading, NetworkManager, and WPA_Supplicant Fixes
WiFi not working after a Linux install or kernel update? This guide walks through diagnosing and fixing driver module failures for Intel, Realtek, and Broadcom adapters, plus NetworkManager and wpa_supplicant authentication errors.
Linux WiFi problems fall into one of two categories: the kernel can’t see your adapter at all (a driver or module issue), or it can see it but fails to connect (a NetworkManager or wpa_supplicant issue). This guide covers both in order, so you can fix whichever stage is broken and get back online.
Step 1: Identify Your Adapter and Check the Kernel Module
Before fixing anything, confirm exactly what hardware you have and whether the kernel recognizes it.
lspci -k | grep -A 3 -i wireless
lsusb | grep -i wireless
Note the chipset name — for example Intel Wi-Fi 6 AX200, Realtek RTL8822CE, or Broadcom BCM4360. Then confirm whether the driver module is loaded:
lsmod | grep -E "iwlwifi|rtw|wl|brcmfmac"
If nothing appears, the module is not loaded and that is where you start. Also scan the kernel ring buffer for firmware errors:
dmesg | grep -E "iwlwifi|rtw|firmware|wlan"
Step 2: Fix Intel iwlwifi Driver Issues
Intel WiFi adapters — including the AX200, AX210, AX211, and BE200 — use the iwlwifi driver, which ships with the mainline Linux kernel. Most problems trace back to missing firmware, aggressive power saving, or a module option conflict.
Install or Update the Firmware Package
If dmesg shows “Direct firmware load for iwlwifi-*.ucode failed”, your firmware package is outdated. Install the latest version:
sudo apt update && sudo apt install linux-firmware # Ubuntu/Debian
sudo dnf install iwl*-firmware # Fedora
Reboot after installing. The linux-firmware package contains the binary blobs the iwlwifi module requires at load time.
Disable Hardware Encryption to Fix Random Drops
A common cause of random disconnects on AX200 and AX210 adapters is hardware encryption offload. Create /etc/modprobe.d/iwlwifi.conf and add this single line:
options iwlwifi swcrypto=1
Reload the module: sudo modprobe -r iwlwifi && sudo modprobe iwlwifi. Moving encryption back to the CPU resolves a surprising number of stability issues without affecting throughput noticeably.
Disable WiFi Power Management
Power saving is enabled by default on most distributions and causes intermittent drops. Disable it immediately with:
sudo iw dev wlan0 set power_save off
To persist across reboots, create /etc/NetworkManager/conf.d/default-wifi-powersave-off.conf with this content:
[connection]
wifi.powersave = 2
Step 3: Fix Realtek Driver Issues
Realtek adapters (RTL8822CE, RTL8821CE, RTL8852BE, RTL8852AE) are the most frequent source of “no WiFi adapter found” errors on Linux. Many of these chips require the rtw88 or rtw89 in-kernel driver, which was merged into Linux 5.16 and 5.18 respectively — older distributions ship kernels that predate these drivers entirely.
Check your running kernel version with uname -r. If you are below 5.16, upgrade to a hardware-enablement kernel on Ubuntu LTS:
sudo apt install linux-generic-hwe-22.04
After rebooting into the newer kernel, run lsmod | grep rtw to confirm the driver loaded automatically.
DKMS for Out-of-Tree USB Adapters
Some Realtek USB adapters (RTL88x2BU, RTL8814AU) are not yet merged into the mainline kernel and require an out-of-tree driver built with DKMS. DKMS automatically recompiles the module whenever your kernel updates, preventing the “module missing after upgrade” cycle:
sudo apt install dkms git build-essential linux-headers-$(uname -r)
git clone https://github.com/RinCat/RTL88x2BU-Linux-Driver.git
cd RTL88x2BU-Linux-Driver && sudo make dkms_install
Step 4: Fix Broadcom Driver Issues
Broadcom is the most complex WiFi vendor on Linux. BCM43xx chips need either the proprietary wl (Broadcom STA) driver or the open-source brcmfmac or b43 driver depending on the exact chip model. Installing both simultaneously causes a module conflict that silently blocks WiFi entirely.
Install the proprietary driver on Ubuntu/Debian:
sudo apt install broadcom-sta-dkms
sudo modprobe -r b43 brcmfmac
sudo modprobe wl
If module conflicts persist, blacklist the competing open-source drivers. Create /etc/modprobe.d/broadcom-blacklist.conf:
blacklist b43
blacklist brcmfmac
Step 5: Fix NetworkManager Connection Failures
Once your adapter is visible to the kernel, NetworkManager handles authentication. If it lists your SSID but the connection attempt fails, inspect the live log first:
journalctl -u NetworkManager --since "10 minutes ago"
Three common culprits account for the majority of failures:
- Stale saved credentials — NetworkManager sometimes caches an old wrong password indefinitely. Delete the stored profile and reconnect fresh:
nmcli connection delete "YourSSID", then reconnect from the network list. - WPA3 incompatibility — older adapters and some Realtek drivers do not support WPA3 SAE handshakes. In your router admin panel, switch the security mode to WPA2/WPA3 Transition or WPA2-only as a diagnostic test.
- Manual wpa_supplicant conflict — if you previously started wpa_supplicant by hand, stop it before using NetworkManager:
sudo systemctl stop wpa_supplicant. NetworkManager invokes and manages wpa_supplicant internally; two independent instances fight over the wireless interface and neither wins.
Step 6: Use wpa_supplicant Directly on Headless Servers
On servers or minimal installs without a desktop or NetworkManager, connect with wpa_supplicant directly. Generate a credentials file:
wpa_passphrase "YourSSID" "YourPassword" | sudo tee /etc/wpa_supplicant/wpa_supplicant.conf
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
sudo dhclient wlan0
If wpa_supplicant fails with “Failed to initialize driver interface”, your driver does not expose a proper nl80211 interface. Force the legacy wext backend instead:
sudo wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
The wext driver backend supports older chipsets that the modern nl80211 interface rejects outright.
Quick-Reference Checklist
- Run
lspci -kto confirm the kernel detects your WiFi adapter - Check
dmesgfor firmware load errors and missing ucode files - Install or update
linux-firmwarefor Intel adapter firmware - Add
options iwlwifi swcrypto=1to fix AX200/AX210 random disconnects - Upgrade to a newer kernel for Realtek RTL8822CE and RTL8852BE support
- Use DKMS for Realtek USB adapters not yet in the mainline kernel
- Blacklist conflicting Broadcom modules in
/etc/modprobe.d/ - Disable WiFi power management via NetworkManager config file
- Delete stale NetworkManager connection profiles if WPA handshake fails
- Never run wpa_supplicant manually alongside a running NetworkManager service
Once your adapter connects and holds the link, run a speed test to confirm you’re getting the full throughput your plan provides. If speeds still disappoint after the driver is fixed, the issue may be upstream — check our guide on how to tell if your ISP is throttling your connection.
Related Articles
How to Fix 5 GHz WiFi Not Showing Up on Windows 11: Driver, Adapter, and Band Settings
Your router broadcasts 5 GHz but Windows 11 only sees the 2.4 GHz network? Here’s how to diagnose whether it’s a driver issue, an adapter setting, or a missing preferred-band option—and exactly how to fix each one.
How to Fix WiFi Driver and Network Issues on macOS: Renew DHCP, Reset Network Settings, and Reinstall Drivers
Mac refusing to connect to WiFi, dropping the network, or showing no internet after connecting? This step-by-step guide covers every fix — from renewing your DHCP lease to deleting corrupted network preference files and running Apple’s built-in Wireless Diagnostics tool.
How to Fix WiFi Issues on Raspberry Pi: Slow Speeds, Drops, and Connection Failures
Raspberry Pi WiFi problems range from “can’t connect at all” to frustrating random drops and mysteriously slow speeds. This guide walks through every fix — from country codes and rfkill to HDMI interference and WPA3 compatibility.