How to Enable a Wi-Fi Adapter in Linux: A Complete Guide from Diagnostics to Configuration

A Wi-Fi adapter in Linux can fail for dozens of reasons, from a simple disabled module to missing proprietary drivers. Unlike Windows, where network management often boils down to a couple of clicks, in Linux the process requires an understanding of the system, drivers, and utilities. This article will help you figure out why your adapter isn't visible in the system or is disabled, and how to properly activate it—from checking the hardware switch to installing proprietary drivers from Broadcom, Intel or Realtek.

We'll cover universal methods for all distributions (Ubuntu/Debian, Arch, Fedora), as well as specific solutions for popular adapters. We'll pay special attention to diagnostics—without them, any adjustments to settings may be useless. If you're a beginner, don't be intimidated by the terminal: all commands are explained in detail, and critical steps are highlighted with warnings. For experienced users, advanced methods are provided, including manual driver compilation and configuration. rfkill.

1. Checking the adapter hardware status

Before digging into settings, make sure the problem isn't a physical disconnect. Many laptops have hardware Wi-Fi switches or key combinations (e.g. Fn + F2), which block the adapter at the BIOS level. Also check:

  • 🔌 Physical switch on the laptop case (often found on models Lenovo, HP or Dell).
  • 💡 Wi-Fi indicator - if it is not lit or blinking red, the adapter is disabled by hardware.
  • 🔧 BIOS/UEFI: on some motherboards (ASUS, Gigabyte) Wi-Fi can be disabled in the settings Advanced → Onboard Devices.

If there are no hardware issues, but the adapter still doesn't work, proceed to software diagnostics. Please note: some cheap USB adapters (for example, those with chips) Realtek RTL8188EU) may require additional power - try connecting them via a USB hub with external power.

📊 What type of Wi-Fi adapter are you using?
Built into the laptop
USB adapter
PCIe card
Don't know

2. Diagnostics via terminal: basic commands

Open Terminal (Ctrl + Alt + T) and run the following commands for diagnostics:

  1. Checking the presence of the adapter in the system:
    lspci | grep -i network
    

    lsusb | grep -i network

    If the output is empty, the system doesn't recognize the adapter. This could indicate a driver issue or hardware malfunction.

  2. RFKill Block Status:
    rfkill list

    Look for lines with Soft blocked: yes or Hard blocked: yesThe first is removed by software, the second - only by hardware.

  3. Checking loaded kernel modules:
    lsmod | grep -i wifi

    The absence of pins may indicate that the driver is not loaded.

If the adapter is visible in lspci/lsusb, but it doesn't work, the problem is most likely with the drivers. If it's not listed, check the physical connection (especially for PCIe and USB adapters).

3. Turn on the adapter via rfkill And nmcli

If the adapter is blocked by software, you can unblock it without rebooting. Use the following commands:

# Unlock all devices

sudo rfkill unblock all

Check status (must be "no" in the Soft column)

rfkill list

Enabling Wi-Fi via NetworkManager

sudo nmcli radio wifi on

After running the commands, check if the available networks appear in the graphical interface (for example, in nmtui (or network applet). If not, proceed to checking the drivers.

⚠️ Attention: On some distributions (for example, Arch Linux) service NetworkManager may be disabled by default. Enable it with the command sudo systemctl enable --now NetworkManager.

4. Installing and updating drivers

Linux supports most Wi-Fi adapters out of the box, but some chips (especially from Broadcom And Realtek) require proprietary drivers. Below are instructions for popular chips:

Chip/Manufacturer Required driver Installation command (Ubuntu/Debian) Installation command (Arch)
Broadcom (BCM43xx) broadcom-sta-dkms or firmware-b43-installer sudo apt install broadcom-sta-dkms sudo pacman -S broadcom-wl-dkms
Realtek RTL8821CE rtl8821ce-dkms sudo apt install rtl8821ce-dkms yay -S rtl8821ce-dkms-git
Intel AX200/AX210 firmware-iwlwifi sudo apt install firmware-iwlwifi sudo pacman -S linux-firmware

Manual driver installation (for example, for new chips not yet added to the repositories) may require compiling from source. Instructions are usually available on the manufacturer's website or in the GitHub repository. Example: Realtek RTL88x2BU:

git clone https://github.com/cilynx/rtl88x2bu.git

cd rtl88x2bu

make

sudo make install

sudo modprobe 88x2bu

⚠️ Attention: After manually compiling the drivers, they will have to be reinstalled after each kernel update. This can be automated via dkms.

5. Configuration via graphical interface (GUI)

If you prefer not to use the terminal, most distributions offer graphical utilities for managing Wi-Fi:

  • 🖥️ Ubuntu/GNOME: Open Settings → Wi-Fi and turn on the switch. If networks are not visible, click the network icon in the taskbar and select Turn on Wi-Fi.
  • 🐧 KDE Plasma: Go to System Preferences → Network Connections and activate the wireless adapter.
  • 🔧 XFCE/LXDE: Use the utility nm-applet (may require installation via sudo apt install network-manager-gnome).

In some cases, the GUI may not display the adapter even if it's enabled. This is often due to a lack of user privileges. Solution:

sudo usermod -aG netdev $USER

sudo systemctl restart NetworkManager

The adapter is visible in lspci or lsusb|No blocking in rfkill list|The driver is installed and loaded (lsmod)|Tried rebooting the system-->

If standard methods do not help, use low-level diagnostic utilities:

  1. Checking the interface status:
    ip link show
    

    iwconfig

    Look for the name of your adapter (eg. wlan0 or wlp3s0). If it is not there, the driver is not loaded.

  2. Kernel logs:
    dmesg | grep -i wifi
    

    dmesg | grep -i firmware

    Errors of the form firmware missing or failed to load indicate the absence of firmware files.

  3. Manual interface lift:
    sudo ip link set wlan0 up
    

    sudo iwconfig wlan0 txpower on

Critical information: If in the logs (dmesg) you see an error "Direct firmware load for [file_name] failed", this means the kernel is missing a firmware file. Download it manually from the repository. linux-firmware and place it in /lib/firmware/.

7. Common mistakes and their solutions

Let's look at typical problems and how to solve them:

  • 🚫 "Device not ready" in nmcli: Usually related to a disabled adapter. Check rfkill and physical switches.
  • 🔄 The adapter sometimes works, sometimes not: This may be caused by power saving. Disable it with the command:
    sudo iwconfig wlan0 power off
  • 🔌 USB adapter is not detected: Try turning it off USB autosuspend:
    echo 'on' | sudo tee /sys/bus/usb/devices/usbX/power/control

    (replace usbX to your ID from lsusb -t).

If the problem persists, check the compatibility of your adapter with the current kernel version. For example, chips Realtek RTL8723DE They don't work well on kernels older than 5.4 - in this case, only a system update or kernel rollback will help.

How to find out the kernel version?

Run the command uname -rFor example, the conclusion 5.15.0-76-generic means kernel version 5.15. To update the kernel in Ubuntu, use sudo apt install linux-generic-hwe-22.04 (for 22.04 LTS).

8. Alternative connection methods

If you are unable to turn on your Wi-Fi adapter, consider the following temporary solutions:

  • 🌐 USB tethering: Share the Internet from your smartphone via USB (turn on USB tethering in the phone settings).
  • 🔗 Ethernet: Connect to the router via cable and update the system/drivers.
  • 📶 External adapter: Buy a supported USB adapter (e.g. on a chip) Ralink RT5370 or Atheros AR9271, which work "out of the box").

To use an external adapter permanently, choose a model with open drivers (for example, TP-Link TL-WN722N on a chip Atheros AR9271). Avoid adapters on Realtek RTL8188xx - they often require manual compilation of drivers.

FAQ: Frequently Asked Questions about Wi-Fi in Linux

My adapter is visible in lspci, but it doesn't work. What should I do?

Most likely, a driver or firmware is missing. Try this:

  1. Check the logs: dmesg | grep -i firmware.
  2. Install the firmware package: sudo apt install linux-firmware (Ubuntu/Debian) or sudo pacman -S linux-firmware (Arch).
  3. For proprietary chips (eg. Broadcom) install the appropriate package (see table in section 4).
How to enable Wi-Fi in Linux without GUI (server version)?

Use nmtui (NetworkManager text interface) or configure the connection manually:

sudo nmtui

or

sudo ip link set wlan0 up

sudo iw dev wlan0 scan | grep SSID

sudo iw dev wlan0 connect "NetworkName" key 0:password

To automatically connect on boot, edit /etc/network/interfaces or use wpa_supplicant.

Wi-Fi stopped working after a kernel update. How do I fix it?

This is a typical problem when installing drivers manually (for example, via dkms). Solutions:

  1. Reinstall the driver for the new kernel: sudo dkms install -m [module] -v [version].
  2. Rollback kernel: In GRUB, select the previous version when booting.
  3. Use a repository with up-to-date drivers (e.g. ppa:canonical-hwe-team for Ubuntu).
Is it possible to use a Windows driver for a Wi-Fi adapter in Linux?

Technically yes, with the help of ndiswrapper, but this is not recommended. This method is outdated and often leads to instability and security issues. It's better to find a native driver or update the kernel.

If there is no other way out:

sudo apt install ndiswrapper-common ndiswrapper-utils

sudo ndiswrapper -i path/to/driver.inf

sudo ndiswrapper -m

sudo modprobe ndiswrapper

How to check Wi-Fi speed in Linux?

Use utilities iw And iperf3:

  1. View your current connection speed: iw dev wlan0 link (look for the line tx bitrate).
  2. Test real speed:
    sudo apt install iperf3
    

    iperf3 -c server_for_test

    (For example, iperf3 -c speedtest.net).