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.
2. Diagnostics via terminal: basic commands
Open Terminal (Ctrl + Alt + T) and run the following commands for diagnostics:
- Checking the presence of the adapter in the system:
lspci | grep -i networklsusb | grep -i networkIf the output is empty, the system doesn't recognize the adapter. This could indicate a driver issue or hardware malfunction.
- RFKill Block Status:
rfkill listLook for lines with
Soft blocked: yesorHard blocked: yesThe first is removed by software, the second - only by hardware. - Checking loaded kernel modules:
lsmod | grep -i wifiThe 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 devicessudo 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) serviceNetworkManagermay be disabled by default. Enable it with the commandsudo 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.gitcd 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-Fiand turn on the switch. If networks are not visible, click the network icon in the taskbar and selectTurn on Wi-Fi. - 🐧 KDE Plasma: Go to
System Preferences → Network Connectionsand activate the wireless adapter. - 🔧 XFCE/LXDE: Use the utility
nm-applet(may require installation viasudo 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-->
6. Advanced Methods: iwconfig, ip link And dmesg
If standard methods do not help, use low-level diagnostic utilities:
- Checking the interface status:
ip link showiwconfigLook for the name of your adapter (eg.
wlan0orwlp3s0). If it is not there, the driver is not loaded. - Kernel logs:
dmesg | grep -i wifidmesg | grep -i firmwareErrors of the form
firmware missingorfailed to loadindicate the absence of firmware files. - Manual interface lift:
sudo ip link set wlan0 upsudo 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. Checkrfkilland 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
usbXto your ID fromlsusb -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 tetheringin 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:
- Check the logs:
dmesg | grep -i firmware. - Install the firmware package:
sudo apt install linux-firmware(Ubuntu/Debian) orsudo pacman -S linux-firmware(Arch). - 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 nmtuior
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:
- Reinstall the driver for the new kernel:
sudo dkms install -m [module] -v [version]. - Rollback kernel: In GRUB, select the previous version when booting.
- Use a repository with up-to-date drivers (e.g.
ppa:canonical-hwe-teamfor 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-utilssudo 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:
- View your current connection speed:
iw dev wlan0 link(look for the linetx bitrate). - Test real speed:
sudo apt install iperf3iperf3 -c server_for_test(For example,
iperf3 -c speedtest.net).