How to Fix WiFi Not Working on Linux
Step-by-step troubleshooting guide for wireless connectivity issues on Linux — from missing drivers to firmware fixes.
Prerequisites
- A Linux distribution installed
- Ethernet or USB tethering for downloading drivers
Check if your WiFi adapter is detected
First, let's see if Linux recognizes your WiFi hardware at all. The lspci command shows PCI devices (internal cards), and lsusb shows USB devices (USB WiFi dongles).
lspci | grep -i network lsusb | grep -i wireless
Check the current network status
Use nmcli (NetworkManager CLI) to see the state of your network interfaces. Look for your wireless device — if it says 'unavailable' or is missing, the driver isn't loaded.
nmcli device status nmcli radio wifi
Make sure WiFi is not blocked
Some laptops have a hardware or software WiFi kill switch. The rfkill command shows if your wireless is blocked. If it says 'soft blocked', unblock it.
rfkill list sudo rfkill unblock wifi
Install missing firmware and drivers
The most common cause of WiFi issues is missing firmware. Install the common firmware packages, which cover most Broadcom, Intel, and Realtek adapters.
sudo apt update sudo apt install linux-firmware firmware-misc-nonfree sudo apt install bcmwl-kernel-source
You'll need an internet connection (Ethernet or USB tethering) to download these packages.
Try the additional drivers tool
Ubuntu and its derivatives have a built-in tool that detects your hardware and offers proprietary drivers. Open Software & Updates → Additional Drivers tab, or run it from the terminal.
sudo ubuntu-drivers autoinstall
Restart NetworkManager
After installing drivers, restart the network service to pick up the changes. If that doesn't work, a full reboot usually does.
sudo systemctl restart NetworkManager # If still not working: sudo reboot
Connect to your network
Once your adapter is detected, connect to your WiFi network from the terminal or the GUI.
nmcli device wifi list nmcli device wifi connect "YourNetworkName" password "YourPassword"