Enabling Wi-Fi in Linux can seem like a daunting task for beginners, especially if you're used to automatic settings in Windows or macOS. However, after reading this article, you'll see that the process is actually logical and predictable—the key is knowing where to look for the necessary settings and which commands to use.
Wi-Fi problems in Linux typically arise for three reasons: a disabled adapter (either software or hardware), missing drivers, or incorrect network settings. In this article, we'll cover all possible scenarios—from basic GUI steps to manual configuration via the terminal and installing proprietary drivers. We'll pay special attention to Ubuntu/Debian, Arch Linux And Fedora, as these distributions are the most popular among users.
If you're experiencing a grayed-out Wi-Fi icon, no networks are showing up, or the connection keeps dropping, don't rush to reinstall the system. In 90% of cases, the problem can be resolved in 5-10 minutes using the commands we'll describe below.
1. Checking the Wi-Fi hardware switch
Before messing around with the settings, make sure the problem isn't a physical disconnection of the adapter. Many laptops (especially models Lenovo, HP And Dell) have:
- 🔄 Hardware switch on the body (usually on the side or front).
- ⌨️ Hotkeys - For example,
Fn + F2orFn + F12(depending on the model). - 🔋 Position in BIOS/UEFI — sometimes Wi-Fi is disabled at the firmware level.
On ThinkPad check the slider on the front panel, and on MacBook (if you have Linux installed) - a combination Shift + Option + Wi-Fi BrightnessIf the indicator on the case is not lit or is blinking red, the adapter is physically disconnected.
⚠️ Note: On some laptops ASUS And Acer The hardware switch blocks not only Wi-Fi but also Bluetooth. If the Bluetooth icon is also grayed out, the problem is definitely with the mechanical switch.
If the switch is in the "On" position, but Wi-Fi still doesn't work, move on to software methods.
2. Enabling Wi-Fi via the graphical interface (GUI)
The easiest way is to use your distribution's standard tools. Let's look at the process using popular desktop environments as examples:
| Environment | Path to settings | Action |
|---|---|---|
| GNOME (Ubuntu, Fedora) | Top right panel → Network icon → Wi-Fi |
Switch the slider to the "On" position and select a network. |
| KDE Plasma (Kubuntu, KDE Neon) | Bottom right panel → Network icon → Manage connections |
Click "Turn on Wi-Fi" and refresh the list of networks. |
| XFCE (Xubuntu, Linux Mint XFCE) | Right panel → Network icon → Enable Wi-Fi |
If there is no option, install the package network-manager. |
IN Linux Mint with the environment Cinnamon the path will be like this: Menu → Settings → Network Connections → Wi-FiHere you can not only enable the adapter, but also configure network priority.
If the network icon is missing altogether, it means that the service NetworkManager is not running. Enter in the terminal:
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
3. Enabling Wi-Fi via the terminal (commands)
If the graphical interface is unavailable or you prefer to work in the console, use the following commands. First, check whether the Wi-Fi adapter is detected by the system:
lspci | grep -i network
iwconfig
In the output, look for lines with wlan0, wlp3s0 or similar names. If the adapter is present but disabled, enable it:
sudo ip link set wlan0 up # replace wlan0 with your interface
sudo ifconfig wlan0 up # alternative option
To scan for available networks and connect:
sudo iwlist wlan0 scan | grep ESSID # list of networks
sudo nmcli dev wifi connect "network_name" password "password"
⚠️ Attention: If after the commandiwconfigyou see the statusunassociated, this means the adapter is turned on but not connected to the network. If there is no status at all, the adapter is disabled by software or the driver is missing.
To temporarily disable Wi-Fi power saving (relevant for laptops):
sudo iw dev wlan0 set power_save off
Make sure the adapter is detected (lspci or lsusb)
Enable interface (ip link set wlan0 up)
Scan networks (iwlist wlan0 scan)
Connect to the network (nmcli or wpa_supplicant)
-->
4. Installing drivers for the Wi-Fi adapter
If the commands from the previous section didn't work, the system most likely lacks the driver for your Wi-Fi module. The most problematic chips are: Broadcom, Realtek RTL88xx and some models IntelThe solution depends on the driver type:
- 🔧 Open Source Drivers (included in the Linux kernel) - usually installed automatically.
- 🔒 Proprietary drivers — require manual installation (for example, for Broadcom BCM43xx).
- 📦 Drivers from repositories — installed via the package manager.
First, update the package list and install the standard drivers:
# For Debian/Ubuntusudo apt update
sudo apt install firmware-linux firmware-linux-nonfree
For Arch Linux
sudo pacman -S linux-firmware
For Fedora
sudo dnf install linux-firmware
If your adapter is on a chip Broadcom, use:
sudo apt install --reinstall bcmwl-kernel-source # for Ubuntu
sudo dnf install broadcom-wl # for Fedora
For Realtek RTL8821CE (popular in laptops HP And Lenovo):
git clone https://github.com/tomaspinho/rtl8821cecd rtl8821ce
make
sudo make install
sudo modprobe 8821ce
⚠️ Attention: After installing the drivers Be sure to reboot the system. Some modules (for example, bcmwl-kernel-source) are not activated without a reboot.
How to find out the model of a Wi-Fi adapter?
Open the terminal and enter the command lspci -knn | grep -iA3 networkThe output will contain a line with the manufacturer (Vendor) and model (Device). For example:
03:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX200 [8086:2723]
Here Intel AX200 — adapter model, and 8086:2723 — its identifiers in the system.
5. Setting up Wi-Fi via wpa_supplicant (for advanced)
If NetworkManager does not work or you are using a minimalistic distribution (for example, Arch Linux without a GUI), you can set up Wi-Fi manually via wpa_supplicantThis method is universal and works even without a graphical interface.
First, create a configuration file:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Add the following to it (replace your_ssid And your_password):
network={ssid="your_ssid"
psk="your_password"
key_mgmt=WPA-PSK
}
Save the file (Ctrl+O, then Ctrl+X) and connect to the network:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
sudo dhclient wlan0
To make the connection automatically at boot, add to /etc/rc.local (before the line exit 0):
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
dhclient wlan0
6. Diagnosing Wi-Fi problems
If Wi-Fi still does not work, run the diagnostics using the following algorithm:
- Check the kernel log for errors:
dmesg | grep -i wifidmesg | grep -i firmwareLook for lines with
failed,errorortimeout. - Make sure the adapter is not blocked.:
rfkill listIf the output contains
Soft blocked: yes, unlock:sudo rfkill unblock wifi - Check for conflicts with other modules:
lsmod | grep -i wifilsmod | grep -i bcm # for BroadcomIf there are several modules, try disabling the unnecessary ones:
sudo modprobe -r module_name
Common mistakes and their solutions:
| Error | Possible cause | Solution |
|---|---|---|
Device not ready |
The adapter is disabled physically or software-wise. | Check it out rfkill and a hardware switch |
Firmware missing |
The firmware file is missing | Install the package linux-firmware |
Authentication timeout |
Incorrect password or encryption type | Check the settings in wpa_supplicant.conf |
If in the output dmesg you see a message iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-9000-pu-b0-jf-b0-XX.ucode failed, this means that the Linux kernel cannot find the firmware file for your adapter. IntelThe solution is to manually download the firmware from the Intel website and put it in /lib/firmware.
7. Alternative ways to connect to Wi-Fi
If standard methods don't work, try alternative options:
- 🌐 USB Wi-Fi adapter — a low-cost solution for laptops with a broken integrated module. Supports chip-based models. Ralink RT5370 or Atheros AR9271 (works out of the box).
- 🔌 Ethernet over USB — If Wi-Fi is critical but not working, use a USB-Ethernet adapter for a temporary connection.
- 📶 Access point mode — share the Internet from your smartphone via USB (
USB tethering) and set up Wi-Fi already connected to the network.
For USB adapters, check Linux support:
lsusb
If the output contains lines with Realtek, Ralink or Atheros, the adapter will most likely work without additional drivers.
⚠️ Attention: Some USB adapters are chip-based Realtek RTL8188EU or RTL8812AU require manual installation of drivers. Look for repositories markeddkms(For example,rtl8812au-dkms).
FAQ: Frequently Asked Questions about Wi-Fi in Linux
Why does Wi-Fi work in Windows but not in Linux?
This is a typical situation for laptops with proprietary Wi-Fi modules (for example, Broadcom or some Realtek). In Windows, drivers are installed automatically, but in Linux they need to be installed manually. Check the adapter model (lspci -knn | grep -iA3 network) and install the corresponding package (bcmwl-kernel-source, rtl8821ce-dkms etc.).
How to enable Wi-Fi in Linux without a password (open network)?
To connect to an open network in the terminal, use:
sudo nmcli dev wifi connect "network_name"
If you need to connect via wpa_supplicant, specify in the config:
network={ssid="network_name"
key_mgmt=NONE
}
The Wi-Fi connects, but the internet isn't working. What should I do?
Check:
- Have you received an IP address:
ip a show wlan0(there should be a lineinet 192.168.x.x). - Is DNS available:
ping 8.8.8.8(If there is ping, but websites do not open, enter DNS manually). - Routing settings:
ip route(there should be a line withdefault via 192.168.x.1).
If there is no IP, request it manually:
sudo dhclient -r wlan0 # reset current IP
sudo dhclient wlan0 # get new
How to reset network settings in Linux?
To reset all network settings to factory defaults:
sudo rm /etc/NetworkManager/system-connections/*
sudo systemctl restart NetworkManager
For a complete reset (including wpa_supplicant):
sudo rm /etc/wpa_supplicant/wpa_supplicant.conf
sudo systemctl restart wpa_supplicant
After this, all saved networks will be deleted and you will have to connect again.
Can you use Wi-Fi 6 (802.11ax) on Linux?
Yes, but with some reservations:
- Adapters Intel AX200/AX210 supported by the Linux kernel starting from version
5.4+. - For Qualcomm FastConnect 6800 (found in Samsung Galaxy Book) may require a kernel
5.10+. - Some Wi-Fi 6 features (such as
OFDMA) may not work due to lack of drivers.
Check your current kernel version:
uname -r
If the version is lower 5.4, update your kernel or install a newer distribution (eg. Ubuntu 22.04+).