How to Enable Wi-Fi in Linux: 5 Methods for Different Distributions

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

📊 What desktop environment do you use?
GNOME
KDE Plasma
XFCE
Cinnamon
Other

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 command iwconfig you see the status unassociated, 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/Ubuntu

sudo 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/rtl8821ce

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

  1. Check the kernel log for errors:
    dmesg | grep -i wifi
    

    dmesg | grep -i firmware

    Look for lines with failed, error or timeout.

  2. Make sure the adapter is not blocked.:
    rfkill list

    If the output contains Soft blocked: yes, unlock:

    sudo rfkill unblock wifi
  3. Check for conflicts with other modules:
    lsmod | grep -i wifi
    

    lsmod | grep -i bcm # for Broadcom

    If 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 marked dkms (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:

  1. Have you received an IP address: ip a show wlan0 (there should be a line inet 192.168.x.x).
  2. Is DNS available: ping 8.8.8.8 (If there is ping, but websites do not open, enter DNS manually).
  3. Routing settings: ip route (there should be a line with default 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+).