Ubuntu WiFi not working is one of the most disorienting problems a Linux user can encounter — especially on a fresh install with no wired fallback. The system boots up, the network icon is missing or grayed out, and suddenly every solution requires an internet connection you do not have. The good news is that WiFi failures in Ubuntu follow predictable patterns, and most of them have reliable fixes once you know where to look.
This guide walks through the problem systematically: from hardware detection to driver installation to network configuration — so you can identify exactly where the failure is and resolve it.
Step 1: Identify Whether Linux Detects the WiFi Hardware
Before anything else, confirm whether your system recognizes the wireless card at the hardware level. Open a terminal and run:
lspci | grep -i wireless
For USB WiFi adapters, use lsusb instead:
lsusb
If your adapter appears in the output, Linux can see the hardware — the problem is likely a missing or broken driver. If nothing appears, the issue may be a hardware switch, a BIOS setting, or an unsupported chipset.
Check the Hardware Switch and BIOS
Many laptops have a physical WiFi switch or a function key combination (often Fn+F2 or similar) that disables the wireless adapter at the hardware level. Check for a hardware switch before spending time on software fixes.
If the adapter is not detected even with the switch confirmed on, enter BIOS/UEFI during startup and verify that the wireless adapter is enabled. Some motherboards disable integrated wireless adapters by default.
Step 2: Check Whether a Driver Is Loaded
If the hardware is visible, check whether a kernel driver is handling it:
lspci -k | grep -A3 -i wireless
Look for a “Kernel driver in use:” line. If this line is missing, no driver is loaded. If a driver is listed, note its name — this tells you what module is running and helps diagnose conflicts.
The rfkill tool shows whether the adapter is blocked at the software level:
rfkill list
If you see “Soft blocked: yes” next to your wireless adapter, unblock it with:
sudo rfkill unblock wifi
Hardware blocked status cannot be resolved by rfkill — it requires the physical switch or a BIOS setting to be changed.
Step 3: Install Missing WiFi Drivers in Linux
Broadcom chips are the most common source of Linux WiFi driver headaches. The proprietary Broadcom STA driver (wl module) or the open-source b43 driver is needed depending on the exact chip. The ubuntu-drivers tool handles this automatically when you have a wired connection:
sudo ubuntu-drivers autoinstall
sudo reboot
For Broadcom BCM4311, BCM4312, BCM4313, and similar chips, the driver package is:
sudo apt install bcmwl-kernel-source
After installation, load the module:
sudo modprobe wl
Installing Drivers Without an Internet Connection
The most frustrating scenario is needing WiFi drivers when WiFi is the only network option. Solve this by downloading the .deb package on another machine and transferring it via USB:
- Find the exact chip model: lspci -k | grep -i wireless
- Look up the driver package at packages.ubuntu.com
- Download the .deb file and its dependencies
- Transfer via USB, then install: sudo dpkg -i package.deb
For Realtek adapters, the driver source is sometimes only available from GitHub and requires compiling from source using make and dkms. The process is more involved but well-documented for specific chipsets like RTL8821CE and RTL8723DE.
A properly configured network is foundational for many server operations. The LEMP stack installation guide assumes a stable network connection as a starting point for production server setup.
Step 4: Connect to WiFi from the Linux Terminal
If the driver is loaded but the desktop network manager is not working, connecting via the command line removes the GUI as a variable. The nmcli tool (NetworkManager command-line interface) is available on all Ubuntu systems:
List available networks:
nmcli device wifi list
Connect to a network:
nmcli device wifi connect "NetworkName" password "YourPassword"
Verify the connection:
nmcli connection show --active
If nmcli reports that the device is unmanaged, NetworkManager is not controlling the interface. Check /etc/NetworkManager/NetworkManager.conf and ensure the managed=false line under [ifupdown] is set to true if you want NetworkManager to take control.
Using wpa_supplicant as an Alternative
On minimal Ubuntu server installations without NetworkManager, wpa_supplicant handles WPA2 connections directly:
sudo wpa_passphrase "NetworkName" "YourPassword" | sudo tee /etc/wpa_supplicant.conf
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
sudo dhclient wlan0
Replace wlan0 with your actual interface name, found via ip link show.
Step 5: Diagnose Persistent Linux Network Troubleshooting Issues
If the adapter connects but drops frequently, the problem is usually power management or driver instability rather than a missing driver. Linux WiFi drivers often enable aggressive power saving by default, which causes the adapter to disconnect during idle periods.
Disable power management for the wireless interface:
sudo iwconfig wlan0 power off
Make this persistent by creating a NetworkManager configuration file:
sudo nano /etc/NetworkManager/conf.d/wifi-power-management.conf
Add:
[connection]
wifi.powersave = 2
Restart NetworkManager:
sudo systemctl restart NetworkManager
Checking dmesg for Driver Errors
The kernel ring buffer contains detailed information about driver loading and errors:
dmesg | grep -i wifi
dmesg | grep -i wlan
dmesg | grep -i firmware
Firmware errors are a common cause of silent WiFi failures. Many drivers require separate firmware blobs that are not included in the driver package. The linux-firmware package contains most of these:
sudo apt install linux-firmware
If dmesg shows a specific firmware file missing (for example, “failed to load rtw89/rtw8852b_fw.bin”), search for that exact filename in the package repository to identify the correct firmware package.
For users who need root access to complete driver installation or configuration changes, the guide on how to get root privileges in Linux covers sudo configuration and temporary root access safely.
Step 6: Update or Roll Back the Kernel
WiFi drivers are part of the kernel tree, and a kernel update can both fix and break wireless functionality. If WiFi stopped working after a system update, rolling back to the previous kernel is a quick way to confirm the cause.
During GRUB boot, hold Shift to access the boot menu and select “Advanced options for Ubuntu.” Boot the previous kernel and test WiFi. If it works, the issue is with the newer kernel’s driver version.
To install a specific older kernel version:
sudo apt install linux-image-5.15.0-91-generic
Report the regression on the Ubuntu bug tracker or the kernel’s bug tracker with the output of dmesg and your hardware details. In most cases, a fixed driver lands in a subsequent kernel update within a few weeks.
When Hardware Replacement Is the Right Answer
Some WiFi chipsets — particularly older Broadcom and some Realtek models — have never had reliable Linux support and are unlikely to improve. If you have spent significant time troubleshooting with no progress, a USB WiFi adapter with known Linux compatibility is often the fastest solution.
Chipsets from Intel (iwlwifi driver), Atheros/Qualcomm (ath9k, ath10k, ath11k), and MediaTek MT7612U have excellent Linux driver support. Adapter prices start around $15–20 USD, making them a practical solution when the built-in adapter is not cooperating.
WiFi troubleshooting in Linux follows a clear sequence: detect hardware, load driver, configure connection, diagnose stability. Working through each step methodically is faster than trying random fixes — and it builds understanding that applies to every Linux network problem you encounter afterward.



