Wi-Fi on Linux: How to Connect to a Network in 5 Minutes (Even If It's Down)

Connecting to Wi-Fi on Linux often becomes a headache for beginners, especially if the drivers aren't installed out of the box or the network isn't listed. Unlike Windows or macOS, where everything usually works automatically, in Linux you sometimes have to manually configure kernel modules, install proprietary drivers, or edit configuration files. But don't rush to reinstall the system: in 90% of cases, the problem is resolved within 5-10 minutes.

This article will help you understand why Wi-Fi doesn't work on Linux and how to run it—from basic checks to complex cases with missing drivers. We'll cover solutions for popular distributions (Ubuntu, Debian, Arch Linux, Fedora), as well as universal methods that work on any Linux system. If you've never used the terminal before, don't worry: all commands are explained in detail, and there are graphical alternatives for most tasks.

First, check the obvious: is the Wi-Fi adapter physically turned on (some laptops have a hardware switch or a key combination like Fn+F2). If the network indicator isn't lit, the problem may be with the power supply or antenna. Otherwise, follow the instructions below.

📊 Which Linux distribution are you using?
Ubuntu/Debian
Arch Linux/Manjaro
Fedora/RHEL
OpenSUSE
Another

1. Checking the status of a Wi-Fi adapter in Linux

Before setting up your network, make sure the system can actually see your Wi-Fi adapter. 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 the answer does not mention a wireless adapter, the problem may be:

  • 🔌 Disabled adapter (check BIOS/UEFI or hardware switch).
  • 🔧 Missing driver (more on this in the next section).
  • 💻 Equipment malfunctions (try booting from LiveUSB of another OS).

If the adapter is displayed, but in the line Kernel driver in use empty - the driver is not loaded. Proceed to the section on installing drivers. If the driver is specified (for example, iwlwifi), but Wi-Fi is not working - check the interface status:

ip a

Look for an interface with a name like wlan0, wlp3s0 or wlo1If it's not there, the adapter is disabled at the kernel level. Try enabling it with the command:

sudo ip link set wlan0 up
⚠️ Attention: On some laptops (especially Lenovo And Dell) The Wi-Fi adapter may be blocked by the function rfkillCheck this with the command rfkill listIf there is a line in the output Soft blocked: yes - unlock the adapter: sudo rfkill unblock wifi.

2. Installing Wi-Fi drivers on Linux

About 30% of Wi-Fi problems on Linux are related to missing or incorrectly working drivers. Most adapters Intel, Atheros And Realtek supported out of the box, but some models (especially new ones) require proprietary drivers or firmware.

First, update the package list and install the default firmware:

sudo apt update && sudo apt install firmware-iwlwifi firmware-realtek firmware-atheros

If your adapter does not work, determine its model using the command lspci -k | grep -A 3 -i network and find the driver in the table below:

Manufacturer/Model Driver Installation command (Debian/Ubuntu) Notes
Broadcom (BCM43xx) bcmwl-kernel-source or broadcom-sta-dkms sudo apt install broadcom-sta-dkms Requires disabling the open driver b43 (sudo modprobe -r b43)
Realtek (RTL8821CE, RTL8723DE) rtl8821ce-dkms-git (AUR) For Arch: yay -S rtl8821ce-dkms-git On Ubuntu, manual compilation may be required from GitHub
Intel (AX200, AX210) iwlwifi sudo apt install firmware-iwlwifi New chips may require firmware from the repository. backports
Mediatek (MT7921, MT7922) mt7921e Included in the kernel since version 5.12+ On older kernels, manual installation is required.

For users Arch Linux and derivatives (Manjaro, EndeavourOS) Most drivers are available in AURFor example, for adapters Realtek RTL8852AE:

yay -S rtl8852ae-dkms-git
⚠️ Attention: After installing the driver, reboot the system or manually load the kernel module: sudo modprobe driver_name (For example, sudo modprobe iwlwifiIf Wi-Fi still doesn't work after rebooting, check the kernel logs: dmesg | grep -i firmware.

Make sure the adapter is detected by the `lspci` command|Install firmware for your model (`firmware-iwlwifi`, `firmware-realtek`, etc.)|Check blocking with `rfkill list` and unblock if necessary|Reboot the system after installing the drivers|View the `dmesg | grep -i wifi` logs for diagnostics-->

3. Connecting to Wi-Fi via a graphical user interface (GUI)

If the driver is installed and the adapter is enabled, the easiest way to connect to the network is through standard desktop tools. Most distributions use NetworkManager — a service for network management.

Open the network menu in the upper right corner (📶 or ⚙️ icon) and select the desired network. If the network isn't listed:

  1. Make sure the adapter is not disabled (the icon should be active).
  2. Check that your router is broadcasting the SSID (sometimes hidden networks are not displayed).
  3. Restart NetworkManager:
    sudo systemctl restart NetworkManager

For hidden networks:

  1. Click "Connect to a hidden network" (or similar item).
  2. Enter SSID (network name), security type (WPA2-PSK etc.) and password.

If there is no graphical interface (for example on a server), use nmtui — NetworkManager text interface:

sudo nmtui

In the menu, select Activate a connection, then find your network and enter the password. This method works even without a graphical shell.

4. Connecting to Wi-Fi via the terminal (wpa_supplicant)

If NetworkManager doesn't work or you prefer manual configuration, use wpa_supplicant — the standard tool for managing Wi-Fi in Linux. This method is universal and works on any distribution.

First, check the name of your wireless interface:

iwconfig

Usually it is wlan0, wlp3s0 or something similar. Next, edit the configuration file. /etc/wpa_supplicant/wpa_supplicant.conf:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Add a block with your network settings 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

The first command starts wpa_supplicant in the background, the second one obtains an IP address via DHCP. If you need to specify a static IP, use:

sudo ip addr add 192.168.1.100/24 dev wlan0

sudo ip route add default via 192.168.1.1

⚠️ Attention: If you still can't access the internet after connecting, check your DNS. Sometimes providers block Google's default DNS (8.8.8.8). Try using Cloudflare: echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf.
How to connect to an open network without a password?

For open networks (without encryption), use the following configuration in the `wpa_supplicant.conf` file:

network={

ssid="free_wifi"

key_mgmt=NONE

}

But remember that such networks are not secure—traffic is transmitted in the clear.

5. Solving Common Wi-Fi Problems on Linux

Even if the adapter is detected and the driver is installed, common problems may arise. Here are the most common ones and their solutions:

  • 🔄 The network keeps disconnecting: Check your power saving settings. Some drivers (for example, iwlwifi) turn off Wi-Fi to save battery. Solution:
    sudo sed -i 's/wifi.powersave = 3/wifi.powersave = 2/' /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
  • 🚫 5 GHz networks are not visible: Make sure your adapter supports 5 GHz (check the specifications). If it does, but doesn't detect it, update your driver or kernel.
  • 🔒 Authentication error: Incorrect password or encryption type. Please try entering it manually. key_mgmt=WPA-PSK And proto=RSN V wpa_supplicant.conf.
  • 📡 Weak signal: Check your antennas (on some laptops, they're not securely connected). You can also increase the transmit power:
    sudo iwconfig wlan0 txpower 20

    (the maximum value depends on the adapter, usually 20–30 dBm).

If the problem persists, check the system logs:

journalctl -u NetworkManager --no-pager -n 50

Or kernel logs:

dmesg | grep -i wifi

Please pay attention to the lines with errors (failed, timeout, firmware). For example, the message firmware: failed to load iwlwifi-cc-a0-77.ucode means that the firmware file is missing. Download it from official repository and place it in /lib/firmware.

6. Setting up Wi-Fi for specific cases

Sometimes non-standard solutions are required - for example, connecting to a corporate network with 802.1X, setting up an access point or working with WPA3Let's consider several scenarios.

Connecting to a network with WPA3

Many new routers support WPA3, but old drivers don't understand it. Update wpa_supplicant up to version 2.9+ and use the configuration:

network={

ssid="your_ssid"

psk="your_password"

key_mgmt=SAE

sae_pwe=2

}

Creating an access point (hotspot)

To share Wi-Fi with Linux, install hostapd And dnsmasq:

sudo apt install hostapd dnsmasq

Edit /etc/hostapd/hostapd.conf:

interface=wlan0

driver=nl80211

ssid=MyHotspot

hw_mode=g

channel=6

wpa=2

wpa_passphrase=12345678

wpa_key_mgmt=WPA-PSK

Start the access point:

sudo systemctl start hostapd

sudo systemctl start dnsmasq

Connecting to a hidden network

If your router is not broadcasting the SSID, wpa_supplicant.conf add parameter scan_ssid=1:

network={

ssid="hidden_network"

scan_ssid=1

psk="password"

}

⚠️ Attention: Configuration details hostapd And dnsmasq may differ depending on the distribution. For example, in Arch Linux will need to be configured manually systemd-networkd for distributing IP addresses.

7. Updating the kernel to support new adapters

If your Wi-Fi adapter is less than a year old, there's a good chance it's not supported by the current kernel version. For example, chips Intel BE200 or Mediatek Filogic Requires kernel 6.2+. Check your version:

uname -r

If the version is older than 5.15, it is recommended to update. Ubuntu/Debian:

sudo apt install --install-recommends linux-generic-hwe-22.04

On Arch Linux:

sudo pacman -S linux linux-headers

After updating the kernel, reboot the system and check if the adapter is detected. If not, you may need to install additional firmware from the repository. linux-firmware-git (AUR).

Important: Updating the kernel may break proprietary drivers (e.g., NVIDIA). After upgrading, test your graphics card and reinstall the drivers if necessary.

FAQ: Frequently Asked Questions about Wi-Fi on Linux

🔍 Why doesn't Linux see my Wi-Fi network, even though the adapter is detected?

Possible reasons:

  • The network is hidden (SSID is not broadcast) - connect manually via wpa_supplicant with parameter scan_ssid=1.
  • Incompatible encryption standard (eg. WPA3 on the old driver) - try temporarily switching the router to WPA2.
  • The adapter only operates in the 2.4 GHz range, but the network broadcasts at 5 GHz - check your router settings.
  • MAC address blocking - add your adapter's MAC address to the list of allowed devices on the router.
🔧 How do I find the MAC address of my Wi-Fi adapter?

Run the command:

ip link show wlan0

Look for the line link/ether XX:XX:XX:XX:XX:XX — this is the MAC address. For other interfaces (for example, wlp3s0) replace wlan0 to the current name.

📶 Is it possible to increase Wi-Fi signal strength on Linux?

Yes, but it depends on the driver and legal restrictions in your country. Check the current power:

iwconfig wlan0 | grep Tx-Power

To increase the power (for example, up to 20 dBm):

sudo iwconfig wlan0 txpower 20

The maximum value depends on the adapter. To change it permanently, add the line to /etc/rc.local (to exit 0):

iwconfig wlan0 txpower 20

⚠️ Warning: Exceeding the permitted transmit power may violate local laws (e.g. in the EU the maximum is 20 dBm for 2.4 GHz).

🖥️ Why does Wi-Fi work in Windows but not in Linux?

Most often this is associated with:

  1. Lack of driver — Windows uses proprietary drivers, but Linux may not have them. Check the output. lspci -k and install the required driver (see section 2).
  2. Adapter lock - some laptops (for example, Lenovo) block Wi-Fi at the BIOS level for Linux. Check rfkill list.
  3. Adapter operating mode - some chips (for example, Realtek RTL8852AE) in Linux by default work in the mode monitor mode. Switch it back: sudo ifconfig wlan0 down && sudo iwconfig wlan0 mode managed && sudo ifconfig wlan0 up.
🔄 How to automatically connect to Wi-Fi on startup?

If you use NetworkManager:

  1. Open network settings via GUI.
  2. Select your network → “Edit” → check the “Connect automatically” box.
  3. For the terminal: nmcli connection modify "SSID" connection.autoconnect yes.

If you use wpa_supplicant, add in /etc/wpa_supplicant/wpa_supplicant.conf:

update_config=1

ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev

And create a service for autostart:

sudo systemctl enable wpa_supplicant@wlan0