Fix WiFi Not Working on Linux
Most Common Solution: Missing or incorrect WiFi drivers. This guide covers diagnosing your WiFi adapter, installing correct drivers, and fixing connectivity issues on Ubuntu, Debian, Fedora, and Arch Linux.
Symptoms Checklist
Which describes your situation?
- No WiFi icon in system tray
- Network settings show only "Wired"
- WiFi adapter not listed in hardware
Root Cause: Missing WiFi drivers or hardware disabled
Jump to: Diagnose Adapter → Install Drivers
- WiFi icon visible but grayed out
- No networks appear in list
- Scanning shows no results
Root Cause: Driver loaded but not functioning, or hardware rfkill
Jump to: Check Hardware Switch
- Networks listed but connection fails
- "Failed to connect" error
- Authentication errors
Root Cause: Wrong password, encryption mismatch, or NetworkManager issues
Jump to: Advanced Fixes
Step 1: Diagnose Your WiFi Adapter
First, identify your WiFi hardware and check if Linux detects it.
Check Hardware Detection
lspci | grep -i wireless
Example output:
02:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)
03:00.0 Network controller: Realtek Semiconductor RTL8821CE 802.11ac
If you see output, your WiFi hardware is detected. Note the manufacturer (Intel, Realtek, Broadcom, etc.).
If lspci shows nothing, try:
lsusb | grep -i wireless
Some WiFi adapters (especially USB dongles) connect via USB instead of PCI.
Check if Driver is Loaded
ip link show
Look for wlan0, wlp2s0, or similar wireless interface. If present, driver is loaded but may need configuration.
Check NetworkManager Status
systemctl status NetworkManager
Should show active (running). If not:
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
Step 2: Check Hardware Switch & rfkill
Many laptops have physical or software switches that disable WiFi.
Check Physical Switch
Look for:
- Dedicated WiFi toggle button/switch
- Fn + F2/F3/F12 key combination (varies by manufacturer)
- Airplane mode button
Check Software Block (rfkill)
rfkill list
Example output:
0: phy0: Wireless LAN
Soft blocked: yes
Hard blocked: no
Soft blocked: Software disabled (fixable)
Hard blocked: Hardware switch disabled (flip physical switch)
Unblock WiFi
sudo rfkill unblock wifi
sudo rfkill unblock all
Step 3: Install WiFi Drivers
Driver installation varies by WiFi chipset and distribution.
Ubuntu / Debian
Method 1: Additional Drivers (GUI)
- Open Software & Updates
- Go to Additional Drivers tab
- Select recommended WiFi driver
- Click Apply Changes
- Reboot
Method 2: Command Line
For Broadcom Chips (common issue):
sudo apt update
sudo apt install broadcom-sta-dkms
sudo modprobe -r b43 b43legacy bcma ssb wl
sudo modprobe wl
For Realtek Chips:
sudo apt update
sudo apt install rtl8821ce-dkms
For Intel Chips (usually work out-of-box):
sudo apt update
sudo apt install firmware-iwlwifi
sudo modprobe -r iwlwifi
sudo modprobe iwlwifi
Fedora
Enable RPM Fusion (for proprietary drivers):
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
For Broadcom:
sudo dnf install broadcom-wl
For Realtek:
sudo dnf install kmod-wl
Arch Linux
For Broadcom:
yay -S broadcom-wl-dkms
For Realtek:
yay -S rtl8821ce-dkms-git
For Intel:
sudo pacman -S linux-firmware
Step 4: Advanced Fixes
Restart NetworkManager
sudo systemctl restart NetworkManager
Reset Network Configuration
sudo rm -rf /etc/NetworkManager/system-connections/*
sudo systemctl restart NetworkManager
This deletes all saved WiFi passwords. You'll need to reconnect manually.
Manually Bring Up Interface
sudo ip link set wlan0 up
sudo iw dev wlan0 scan | grep SSID
Check for Kernel Module Issues
dmesg | grep -i wifi
dmesg | grep -i wireless
dmesg | grep -i firmware
Look for errors like "firmware failed to load" - indicates missing firmware files.
Common Issues & Solutions
Issue: "Device not ready (firmware missing)"
Solution: Install firmware package for your WiFi chip.
Ubuntu/Debian:
sudo apt install linux-firmware
Fedora:
sudo dnf install linux-firmware
Arch:
sudo pacman -S linux-firmware
Issue: WiFi Works But Drops Frequently
Solution: Disable power management for WiFi.
sudo iwconfig wlan0 power off
Make permanent:
echo 'options iwlwifi power_save=0' | sudo tee /etc/modprobe.d/iwlwifi.conf
Issue: Slow WiFi Speeds
Diagnosis:
iwconfig wlan0
Check "Bit Rate" - should match your router's capabilities (e.g., 300 Mbps for 802.11n).
Solution: Update drivers or force 5GHz band if supported.
Issue: Can't Connect to 5GHz Networks
Solution: Install regulatory database.
sudo apt install wireless-regdb
sudo iw reg set US # Replace US with your country code
Verification
After fixes, verify WiFi works:
# Check interface is up
ip link show wlan0
# Scan for networks
sudo iw dev wlan0 scan | grep SSID
# Check connection
ping -c 4 google.com
ip link showshows wlan0 asUPiw scanlists WiFi networks- WiFi icon appears in system tray
- Can connect to networks
- Internet works (ping succeeds)
Preventive Tips
- Keep kernel and firmware updated:
sudo apt upgrade - Check WiFi compatibility before buying new hardware
- Intel WiFi cards generally have best Linux support
- Avoid Broadcom if possible (requires proprietary drivers)
- Consider USB WiFi dongles with good Linux support (Atheros, Intel)
Still Not Working?
If WiFi still doesn't work after trying all fixes:
- Check hardware: Test WiFi adapter in Windows or another Linux device
- Try USB WiFi dongle: Temporary solution while troubleshooting
- Check BIOS settings: Ensure WiFi not disabled in BIOS/UEFI
- Update BIOS: Sometimes BIOS updates fix WiFi issues
- Contact support: Distro forums or hardware manufacturer
Works On
- Ubuntu 24.04, 22.04, 20.04
- Debian 13, 12, 11
- Fedora 40, 39, 38
- Arch Linux (rolling)
- Linux Mint 22, 21