How to Enable Wi-Fi in Linux: A Beginner's Guide and Troubleshooting Guide

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 command rfkill 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 Support or Wi-Fi Radio Control.
📊 Which Linux distribution are you using?
Ubuntu/Debian
Fedora/RHEL
Arch Linux
Linux Mint
Another

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:

  1. Click on the network icon in the upper right corner (or in the system tray).
  2. If the icon is grey or has a strikethrough, click on it and select "Turn on Wi-Fi" (or "Enable Wi-Fi»).
  3. 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 NetworkManager

    If not, run it:

    sudo systemctl start NetworkManager
  • 🔄 Is the package installed? network-manager-gnome (for GUI):
    sudo apt install network-manager-gnome # For Debian/Ubuntu
    

    sudo 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: Team iwconfig is considered obsolete and may not work on distributions newer than 2020. For modern systems, use iw:
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/rtl8821ce

cd 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: Bluetooth

Soft 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+F2 or Fn+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 wlan0

iface wlan0 inet dhcp

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

⚠️ Attention: Password in wpa_supplicant.conf Stored 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:

  1. Check the adapter status:
    ip a show wlan0

    Look for the line state UP. If state DOWN, turn on the adapter:

    sudo ip link set wlan0 up
  2. View kernel logs:
    dmesg | grep -i wifi

    Errors of the form firmware: failed to load indicate problems with the drivers.

  3. 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:

  1. Install the driver manually (see section 4).
  2. Check if the adapter is disabled in BIOS.
  3. 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:

  1. Remove all connections:
    nmcli connection delete id "SSID"
  2. Restart NetworkManager:
    sudo systemctl restart NetworkManager
  3. 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 ufw or iptables.
  • 🔹 Problems on the router side: Reboot it.