WiFi Not Working
Wireless not showing up, can't connect, or adapter not detected? This is a common issue, especially with Broadcom and some Realtek chips.
Symptoms
- No WiFi option in your network settings at all
- WiFi adapter not detected - it's like the hardware doesn't exist
- Can see networks but can't connect - authentication or driver issue
- WiFi keeps dropping out - connects briefly, then disconnects
- Very slow WiFi speeds compared to other devices on the same network
Quick Fix
Step 1: Find out what WiFi chip you have. You need to be plugged into Ethernet or use another device to download drivers.
# See your wireless hardware
lspci | grep -i network
# Or for USB WiFi adapters
lsusb | grep -i wireless
# Check if Linux sees a wireless interface at all
ip link show
# Look for something like wlan0, wlp2s0, or wlx...
Step 2: Check if the driver is loaded but the interface is just down:
# Bring the interface up
sudo ip link set wlan0 up
# Check if it was blocked by a hardware or software switch
rfkill list
# If it shows "Soft blocked: yes" or "Hard blocked: yes":
sudo rfkill unblock wifi
Fixes by Chipset
Intel WiFi (usually works out of the box)
Intel WiFi chips have excellent Linux support. If yours isn't working, you probably just need the firmware package:
Ubuntu / Debian / Mint
# Install Intel wireless firmware
sudo apt install firmware-iwlwifi # Debian
sudo apt install linux-firmware # Ubuntu/Mint (usually pre-installed)
sudo modprobe iwlwifi
sudo reboot
Fedora
# Fedora includes Intel firmware by default
# If it's missing:
sudo dnf install linux-firmware
sudo reboot
Arch
# Install firmware (may already be installed)
sudo pacman -S linux-firmware
sudo reboot
If your Intel WiFi is working but slow or drops out, try disabling power saving:
# Check current power saving setting
cat /proc/sys/net/ipv4/conf/all/accept_redirects
# Disable power saving for iwlwifi
echo 'options iwlwifi power_save=0' | sudo tee /etc/modprobe.d/iwlwifi.conf
sudo modprobe -r iwlwifi && sudo modprobe iwlwifi
Broadcom WiFi (needs extra firmware)
Broadcom is the most common problem chipset on Linux. They don't provide open-source drivers for most of their cards. You need the proprietary broadcom-wl or b43 firmware.
First, find your exact chip:
lspci | grep -i broadcom
# Look for something like: BCM4360, BCM43142, BCM4352, etc.
Ubuntu / Mint
# Option 1: Use the Additional Drivers tool
# Open "Software & Updates" > "Additional Drivers" tab
# Select the Broadcom driver and click Apply
# Option 2: Command line
sudo apt update
sudo apt install bcmwl-kernel-source
sudo modprobe wl
# If that doesn't work, try:
sudo apt install firmware-b43-installer
sudo reboot
Fedora
# Enable RPM Fusion first
sudo dnf install -y \
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
# Install the Broadcom driver
sudo dnf install broadcom-wl
sudo modprobe wl
sudo reboot
Arch / Manjaro
# For BCM4360, BCM4352, and similar:
sudo pacman -S broadcom-wl-dkms
# For older Broadcom chips:
sudo pacman -S b43-firmware # or from AUR: yay -S b43-firmware
# Load the module
sudo modprobe wl
sudo reboot
Debian
# Add the non-free repository to your sources
# Edit /etc/apt/sources.list and add "non-free" to your existing lines
# Example: deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
sudo apt update
sudo apt install broadcom-sta-dkms
sudo modprobe wl
sudo reboot
sudo dpkg -i package.deb (Debian/Ubuntu) or sudo pacman -U package.pkg.tar.zst (Arch).
Realtek WiFi (may need manual driver install)
Realtek chips vary widely in Linux support. Some work out of the box, others need manual driver compilation. Common problem chips: RTL8821CE, RTL8822BE, RTL8852AE.
# Find your exact chip
lspci | grep -i realtek
# or for USB:
lsusb | grep -i realtek
Ubuntu / Debian / Mint
# Try the DKMS driver package first
sudo apt install realtek-rtl88xxau-dkms # For USB adapters
# For RTL8821CE (very common in budget laptops):
sudo apt install build-essential dkms git
git clone https://github.com/tomaspinho/rtl8821ce.git
cd rtl8821ce
sudo ./dkms-install.sh
sudo reboot
Fedora
# Install build tools
sudo dnf install kernel-devel kernel-headers dkms git
# Clone the driver for your chip (example: RTL8821CE)
git clone https://github.com/tomaspinho/rtl8821ce.git
cd rtl8821ce
sudo ./dkms-install.sh
sudo reboot
Arch / Manjaro
# Check the AUR - most Realtek drivers are available there
yay -S rtl8821ce-dkms-git # For RTL8821CE
yay -S rtl8822bu-dkms-git # For RTL8822BU (USB)
# Search for your specific chip:
yay -Ss rtl88
sudo reboot
USB WiFi Adapters
If your built-in WiFi card is hopeless on Linux, a USB WiFi adapter is a cheap workaround. Look for adapters with chipsets that have good Linux support:
| Chipset | Linux Support | Notes |
|---|---|---|
| Atheros (ath9k, ath10k) | Excellent | Fully open-source drivers, works out of the box |
| MediaTek (mt76) | Very Good | Good open-source support, WiFi 6 capable |
| Intel (iwlwifi) | Very Good | Not commonly available as USB, but PCI cards work great |
| Ralink (rt2800usb) | Good | Older but well-supported, cheap adapters available |
| Realtek (rtl8xxxu) | Varies | Some work, some don't. Check your specific model |
| Broadcom | Poor | Avoid for USB adapters |
General Debugging
Useful diagnostic commands
# See all network interfaces
ip link show
# Check WiFi details
iw dev
# Scan for available networks
sudo iw dev wlan0 scan | grep SSID
# Check NetworkManager status
nmcli general status
nmcli device wifi list
# Connect to a network via terminal
nmcli device wifi connect "YourNetworkName" password "YourPassword"
# Check the system log for WiFi errors
journalctl -b | grep -i -E 'wifi|wlan|wireless|firmware'
dmesg | grep -i -E 'wifi|wlan|wireless|firmware'
# Check if the correct kernel module is loaded
lsmod | grep -E 'iwl|ath|rtl|brcm|wl'