Connecting to Wi-Fi in Linux can seem like a daunting task, especially if you're new to Windows or macOS. Unlike proprietary systems, where drivers and network settings often work out of the box, Linux sometimes requires manual configuration. This article will help you understand how to enable Wi-Fi in popular distributions (Ubuntu, Debian, Linux Mint, Fedora and others), even if the network is not detected or an error is displayed.
We will look at two main ways: through the graphical interface (GUI) and using commands in terminalWe will pay special attention to typical problems - missing drivers, blocked adapter or conflicts with NetworkManagerIf you encounter the message "No Wi-Fi Adapter Found" or "Device not ready", here you will find solutions.
Note: The instructions are valid for most modern kernel-based distributions. Linux 5.4+If you are using a rare or outdated version (for example, Linux Mint 17), some commands may differ.
1. Checking Wi-Fi hardware support in Linux
Before setting up your network, make sure your Wi-Fi adapter is recognized by the system. To do this, run the following command in the terminal:
lspci -knn | grep -iA3 net
In the output, look for lines mentioning Network controller or Wireless. For example:
03:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX200 [8086:2723] (rev 1a)Subsystem: Intel Corporation Wi-Fi 6 AX200NGW [8086:0024]
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
If there is no mention of Wi-Fi in the response, the problem may be:
- 🔌 Disabled adapter (a physical button or key combination on a laptop, for example
Fn+F2). - 🚫 No driver (especially relevant for adapters Broadcom, Realtek RTL8821CE).
- 🔧 Locked device through
rfkill(checked by the commandrfkill list).
⚠️ Attention: On some laptops (eg. Lenovo ThinkPad or Dell XPS) Wi-Fi may be disabled in the BIOS/UEFI. Check the settings.Wireless LAN SupportorWi-Fi Radio Control.
2. Enabling Wi-Fi via the graphical interface (GUI)
If your distribution uses NetworkManager (by default in Ubuntu, Mint, Fedora), you can turn on Wi-Fi via the taskbar:
- Click on the network icon in the upper right corner (or in the system tray).
- If the icon is grey or has a strikethrough, click on it and select "Turn on Wi-Fi" (or "Enable Wi-Fi»).
- From the list of available networks, select yours and enter the password.
IN KDE Plasma (for example, in Kubuntu) the path will be like this: System settings → Network connections → Add new connection → Wi-Fi.
If there is no network icon at all, check:
- 🖥️ Is it running?
NetworkManager:systemctl status NetworkManagerIf not, run it:
sudo systemctl start NetworkManager - 🔄 Is the package installed?
network-manager-gnome(for GUI):sudo apt install network-manager-gnome # For Debian/Ubuntusudo dnf install NetworkManager-wifi # For Fedora
The adapter is physically turned on (button/keys)
The driver is loaded (checked via `lspci -k`)
NetworkManager service is active
The NetworkManager GUI package is installed.
-->
3. Enabling Wi-Fi via the terminal (command line)
If the graphical interface is not available or you prefer the terminal, use the commands nmcli (For NetworkManager) or iwconfig (obsolete method).
Method 1: Via nmcli (recommended)
View the list of available networks:
nmcli device wifi list
Enable Wi-Fi on the adapter (replace wlan0 to your interface from the command ip a):
nmcli radio wifi on
Connect to the network (replace SSID And password):
nmcli device wifi connect "SSID" password "password"
Method 2: Via iwconfig (for older systems)
Activate the adapter:
sudo ifconfig wlan0 up
Scan networks:
sudo iwlist wlan0 scan | grep ESSID
⚠️ Attention: Teamiwconfigis considered obsolete and may not work on distributions newer than 2020. For modern systems, useiw:sudo iw dev wlan0 scan | grep SSID
sudo systemd-resolve --status
If errors occur, add Google DNS manually:
sudo nmcli connection modify "SSID" ipv4.dns "8.8.8.8,8.8.4.4"
-->
4. Troubleshooting Wi-Fi drivers
About 30% of Wi-Fi problems in Linux are related to missing or incorrectly functioning drivers. This is especially true for adapters. Broadcom, Realtek RTL8188EU/RTL8821CE and some models Intel.
How to install the driver manually
Find out the adapter model:
lspci -knn | grep -iA3 net
For adapters Broadcom (For example, BCM43142) install the proprietary driver:
sudo apt install firmware-b43-installer # For Debian/Ubuntu
sudo dnf install broadcom-wl # For Fedora
For Realtek RTL8821CE (popular in USB adapters) download the driver from GitHub:
git clone https://github.com/tomaspinho/rtl8821cecd rtl8821ce
make
sudo make install
sudo modprobe 8821ce
| Adapter manufacturer | Typical models | Recommended driver | Installation command |
|---|---|---|---|
| Intel | AX200, AX210, 7260, 8265 | iwlwifi (built into the kernel) | sudo apt install firmware-iwlwifi |
| Broadcom | BCM4313, BCM4322, BCM4360 | wl or b43 | sudo apt install firmware-b43-installer |
| Realtek | RTL8188EU, RTL8821CE, RTL8723DE | rtl8xxxu (GitHub) | sudo dkms install rtl8821ce/5.5.2 |
| Qualcomm Atheros | AR9285, QCA9377 | ath9k/ath10k (built-in) | sudo apt install firmware-atheros |
After installing the driver, reload the kernel module:
sudo modprobe -r [module_name] && sudo modprobe [module_name]
What to do if the driver does not compile?
If you see errors like " when compiling the drivermake: gcc: Command not found", install dependencies:
sudo apt install build-essential dkms linux-headers-$(uname -r)
For Fedora:
sudo dnf groupinstall "Development Tools"
5. Unlock Wi-Fi via rfkill
If the adapter is detected but does not turn on, check if it is blocked software-wise. rfkill:
rfkill list
In the output, look for lines with Wireless LAN and status Soft blocked: yes or Hard blocked: yes:
0: hci0: BluetoothSoft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: yes # ← The problem is here
Hard blocked: no
To unlock:
sudo rfkill unblock wifi
If blocking hardware (Hard blocked: yes), check:
- 🔑 Physical Wi-Fi switch on the laptop case.
- 💻 Keyboard shortcut (eg.
Fn+F2orFn+F12— depends on the model). - 🔧 BIOS/UEFI settings (section
Advanced → Wireless Devices).
sudo modprobe -r cfg80211 && sudo modprobe cfg80211
-->
6. Manual Wi-Fi setup via wpa_supplicant
If NetworkManager doesn't work or you are using a minimal Linux installation (for example, on a server), connect to Wi-Fi via wpa_supplicant.
Create a configuration file:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Add to it (replace SSID And password):
network={ssid="SSID"
psk="password"
key_mgmt=WPA-PSK
}
Connect to the network:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
sudo dhclient wlan0
To keep the connection after reboot, add in /etc/network/interfaces:
auto wlan0iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
⚠️ Attention: Password inwpa_supplicant.confStored in plain text. For security, please restrict access rights:sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
7. Diagnosing Wi-Fi Problems in Linux
If Wi-Fi still doesn't work, run diagnostics:
- Check the adapter status:
ip a show wlan0Look for the line
state UP. Ifstate DOWN, turn on the adapter:sudo ip link set wlan0 up - View kernel logs:
dmesg | grep -i wifiErrors of the form
firmware: failed to loadindicate problems with the drivers. - Test your connection to a hidden network:
nmcli device wifi connect "SSID" password "password" hidden yes
Typical errors and their meanings:
- 🔴
Device not ready→ The adapter is disabled or there is no driver. - 🔴
Authentication timeout→ Incorrect password or security type (check if your router is using WPA2 or WPA3). - 🔴
No route to host→ There is a connection, but there is no internet access (check DNS or gateway).
sudo iw dev wlan0 set type managed
-->
FAQ: Frequently Asked Questions about Wi-Fi in Linux
Why doesn't Linux see Wi-Fi, but Windows does?
This is a typical driver issue. In Windows, manufacturers often supply proprietary drivers, but in Linux, they may be missing. Solution:
- Install the driver manually (see section 4).
- Check if the adapter is disabled in BIOS.
- Use a Live distribution (for example, Ubuntu Live USB) to check if Wi-Fi works in it.
How to connect to Wi-Fi without a password (open network)?
For open networks use the command:
nmcli device wifi connect "SSID" --ask
When prompted for a password, simply click Enter. IN wpa_supplicant please specify:
network={ssid="SSID"
key_mgmt=NONE
}
Can you use Wi-Fi 6 (802.11ax) on Linux?
Yes, but with some reservations:
- Adapters Intel AX200/AX210 supported by the kernel Linux 5.4+.
- For Realtek RTL8852AE Manual driver installation may be required.
- Some Wi-Fi 6 features (such as
OFDMA) may not work at the driver level.
Check your current connection speed:
iw dev wlan0 link
How to reset network settings in Linux?
To reset all network settings to factory defaults:
- Remove all connections:
nmcli connection delete id "SSID" - Restart
NetworkManager:sudo systemctl restart NetworkManager - For a complete reset, delete the configs:
sudo rm /etc/NetworkManager/system-connections/*
Why is Wi-Fi working but there is no internet?
Reasons and solutions:
- 🔹 No IP address: Launch
sudo dhclient wlan0. - 🔹 DNS issues: Register DNS Google:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf - 🔹 Firewall blocking: Check it out
ufworiptables. - 🔹 Problems on the router side: Reboot it.