You've installed Linux, but the system stubbornly refuses to detect available Wi-Fi networks, even though everything works on Windows or your smartphone? This problem is familiar to many users, especially beginners. The cause can lie in both software settings and the hardware of your device. Unlike Windows, where drivers for Wi-Fi adapters are usually installed automatically, in Linux this process often requires manual intervention.
In this article we will look at 10 main reasonsThere are many reasons why Linux might not detect Wi-Fi networks, ranging from a simple disabled adapter to issues with proprietary drivers. You'll learn how to diagnose the problem using the terminal, where to look for missing drivers, and which commands can help restore the connection. We'll focus on popular distributions: Ubuntu, Debian, Arch Linux And Fedora, as solutions may differ.
If you're unsure, don't worry: we'll provide step-by-step instructions with commands to copy and screenshots of key points. For experienced users, we'll also include advanced diagnostic methods, including kernel log analysis and manual driver compilation. We'll start with the simplest and gradually move on to more complex cases.
1. Check basic settings: is the Wi-Fi adapter enabled?
Before digging deeper, make sure the problem isn't something trivial. In Linux, the Wi-Fi adapter can be disabled at the system level, in the BIOS, or even physically (for example, by pressing a button on a laptop). Let's start by checking the adapter's status in the system.
Open the terminal and run the command:
ip a
Look for an interface with the name in the output wlan0, wlp3s0 or something similar (depending on the adapter model). If it is not there, the adapter is either disabled or not recognized by the system. If the interface is present, but marked as DOWN, enable it with the command:
sudo ip link set wlan0 up
Replace wlan0 to your interface.
- 🔍 Check the physical button Wi-Fi on a laptop (often near the keys)
F1-F12or a separate switch). On some models Lenovo, HP And Dell It can block the adapter at the hardware level. - 🖥️ Look in BIOS/UEFI: on some motherboards (especially from ASUS And Gigabyte) The Wi-Fi adapter may be disabled in the settings. Look for options like
Wireless LANorOnboard Wi-Fi. - 🔄 Reload the kernel module, responsible for Wi-Fi. This often helps with temporary outages:
sudo modprobe -r iwlwifi && sudo modprobe iwlwifiFor adapters Broadcom replace
iwlwifionb43orwl.
⚠️ Attention: On some laptops (eg. Lenovo ThinkPad series T480 and newer) Wi-Fi may be blocked due to a conflict withrfkill— radio frequency device control system. Check the lock with the commandrfkill listand unlock the adapter usingrfkill unblock wifi.
2. Lack of drivers: the most common problem
Over 60% of cases where Linux doesn't detect Wi-Fi are due to missing or incorrectly installed drivers. Unlike Windows, where manufacturers provide ready-made packages, Linux drivers for Wi-Fi adapters often require manual installation, especially if your device is new or uses proprietary chips.
To find out the model of your Wi-Fi adapter, follow these steps:
lspci -knn | grep -iA3 net
Look for lines mentioning Network controllerFor example, the output may contain:
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
Here Intel Corporation Wi-Fi 6 AX200 — adapter model, and iwlwifi — the driver used.
| Chip manufacturer | Typical adapter models | Driver in Linux | Does it require proprietary software? |
|---|---|---|---|
| Intel | AX200, AX210, 8265, 7265 | iwlwifi |
No (open) |
| Broadcom | BCM4313, BCM4360, BCM4352 | b43, wl, brcmsmac |
Yes (often) |
| Qualcomm Atheros | QCA6174, QCA9377, AR9485 | ath10k_pci, ath9k |
No |
| Realtek | RTL8821CE, RTL8188EE, RTL8723DE | rtl8xxxu, rtl8188ee |
Yes (often) |
| Mediatek (Ralink) | MT7921, RT3290 | mt7921e, rt2800pci |
Sometimes |
If your adapter requires a proprietary driver (for example, many chips Broadcom or Realtek), it must be installed manually. For Ubuntu/Debian it's done like this:
sudo apt updatesudo apt install firmware-b43-installer # For Broadcom
OR
sudo apt install rtl8821ce-dkms # For Realtek RTL8821CE
For Arch Linux use yaourt or yay:
yay -S rtl8821ce-dkms-git
⚠️ Attention: Drivers for new chips (eg. Intel AX211 or Mediatek MT7922) may not be available in the standard repositories. In this case, you'll need to compile them from the source code on the manufacturer's website or use a newer version of the Linux kernel (5.15+).
☑️ Checking Wi-Fi drivers in Linux
3. Kernel module conflicts: when there are too many drivers
Sometimes the problem isn't a lack of drivers, but an excess of them. Linux may try to use the wrong kernel module for your adapter, leading to conflicts. For example, for chips Broadcom can be loaded simultaneously b43 And wl, which disrupts Wi-Fi.
Check loaded modules with the command:
lsmod | grep -i wifi
If you see multiple modules for one adapter (for example, b43 And wl), you need to disable unnecessary ones. First, find out which module your device actually needs (see the table in the previous section), then add the rest to the blacklist.
Open the configuration file:
sudo nano /etc/modprobe.d/blacklist.conf
And add lines to block unnecessary modules. For example, for Broadcom BCM4313 you may need:
blacklist b43blacklist ssb
blacklist bcma
Save the file (Ctrl+O → Enter → Ctrl+X), then update the module initialization:
sudo update-initramfs -u
And reboot the system.
- 🔧 For Realtek adapters It is often necessary to disable the built-in module
rtl8xxxuand usertl8821ceFrom DKMS. Add to blacklist:blacklist rtl8xxxu - 🌐 If after the changes Wi-Fi stops working completely, go back to
blacklist.confand comment out the added lines with the symbol#. - 📡 For Mediatek chips (For example, MT7921) You may need kernel version 5.12+. Check your version with the command
uname -r.
How do I know which kernel module is being used?
Run the command dmesg | grep -i firmwareIn the output, look for lines mentioning your adapter (for example, iwlwifi for Intel). If there are errors of the type firmware: failed to load, this means that the driver is loaded, but the firmware is missing.
4. Lack of firmware: when the driver is present, but the firmware is missing
The driver can be installed, but an additional firmware file is required for the adapter to work (firmware). This is especially true for new chips, where the firmware isn't included in the standard distribution packages. Symptoms: the adapter is detected by the system, but doesn't find any networks or returns errors in the logs.
Check kernel logs for firmware errors:
dmesg | grep -i firmware
If you see messages like:
iwlwifi 0000:03:00.0: firmware: failed to load iwlwifi-cc-a0-66.ucode (-2)
This means the system can't find the firmware file for your adapter. The solution is to install the firmware package.
For Debian/Ubuntu:
sudo apt install firmware-iwlwifi # For Intelsudo apt install firmware-realtek # For Realtek
sudo apt install firmware-misc-nonfree # Common package
For Arch Linux:
sudo pacman -S linux-firmware
If the firmware is missing even after installing the packages, you can download it manually from the manufacturer's official website. For example, for Intel AX200:
- Download the latest
.ucode-file with official wiki. - Place it in the directory
/lib/firmware: - Update initialization:
sudo cp iwlwifi-cc-a0-66.ucode /lib/firmware/
sudo update-initramfs -u
⚠️ Attention: For adapters Realtek RTL88x2ce (For example, RTL8822CE) you may need to manually compile the driver from the GitHub repository. Instructions are usually included in README project. Be careful: incorrect compilation can lead to a system crash!
5. NetworkManager issues: when the network is present but not displayed
Sometimes the Wi-Fi adapter works, networks are scanned, but are not displayed in the graphical interface (for example, in GNOME or KDE Plasma). The reason for this may be NetworkManager — a network management service that is used by default in most distributions.
First, check if NetworkManager is running:
systemctl status NetworkManager
If the service is not active, start it:
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
If NetworkManager is running but networks are not showing, try:
- 🔄 Restart the service:
sudo systemctl restart NetworkManager - 📡 Manually scan networks:
nmcli device wifi rescanThen check the list of available networks:
nmcli device wifi list - 🔧 Reset NetworkManager settings (if the configuration is corrupted):
Attention: This will delete all saved connections!sudo rm /etc/NetworkManager/system-connections/*sudo systemctl restart NetworkManager - 🛠️ Try an alternative —
wpa_supplicant+dhcpcdThis is a more complex method, but it sometimes helps with problems with NetworkManager.
If the networks are visible in nmcli, but not in the graphical interface, the problem may be in applet-e (network indicator). For GNOME try restarting it:
killall nm-applet
nm-applet &
6. Hardware problems: when the hardware is to blame
If you've tried all software methods but Wi-Fi still isn't working, there may be a problem with the adapter itself or the antennas. This is especially true for older laptops or devices that have been dropped or repaired.
How to diagnose hardware problems:
- 🔧 Check the antenna connections: On laptops, the Wi-Fi adapter is usually located under a cover on the back panel. Make sure the antenna cables (thin black wires) are securely connected to the ports.
MAINAndAUX. - 🌡️ Overheat: some adapters (eg Intel 7260) turn off when overheated. Check the temperature with the command:
sudo lm-sensorsIf the adapter heats up above 70°C, it may need to be cleaned of dust or the thermal paste replaced.
- 🔄 Testing on another device: If possible, connect the adapter to another PC or laptop (for example, via USB Wi-Fi dongle). If the problem persists, the adapter is faulty.
- 📡 Conflict with USB 3.0: some Wi-Fi adapters (especially those with chips) Realtek RTL8812AU) conflict with USB 3.0 ports. Try connecting the dongle to a USB 2.0 port (usually black).
If the adapter is built-in (for example, in a laptop) and you suspect it's faulty, you can temporarily use an external USB adapter. Models with the following chips have proven effective:
- TP-Link TL-WN725N (chip
RTL8188EU, supported out of the box in most distributions). - Edimax EW-7811Un (chip
RTL8188CUS, works with the driverrtl8192cu). - Intel AX200NGW (for M.2 slot, requires core 5.4+).
⚠️ Attention: On some laptops (eg. Dell XPS 13 or Lenovo YogaThe integrated Wi-Fi adapter may be disabled at the BIOS level due to manufacturer policy. In this case, the only solution is to flash a modified BIOS or use an external adapter.
7. Regulatory domain issues
Linux adheres to regulatory restrictions in various countries, which can lead to Wi-Fi power limitations or even the complete shutdown of certain channels. If your adapter is working but doesn't detect networks on channels above 11 (for example, in the 5 GHz band), the problem may be due to incorrect settings. regulatory domain.
Check your current settings:
iw reg get
If the output contains:
country 00: DFS-UNSET
This means the region isn't set, and the adapter is operating in limited mode. This can be fixed as follows:
sudo iw reg set RU # For Russia
sudo systemctl restart NetworkManager
Replace RU to your country code (for example, US, EU). The full list of codes can be found in the file /usr/lib/crda/regulatory.db.
If your Wi-Fi still can't see 5 GHz networks after changing your region, check if your adapter supports the band. Some older models (e.g., Intel Centrino Wireless-N 1000) operate only in the 2.4 GHz range.
8. Conflicts with other programs (VPN, firewalls, antiviruses)
Sometimes Wi-Fi doesn't work due to conflicts with other software. Common culprits include:
- 🔒 Firewalls:
ufw,firewalldoriptablesmay block network connections. Check the rules:sudo ufw statusIf the firewall is active, temporarily disable it for testing:
sudo ufw disable - 🌐 VPN clients: some VPNs (eg OpenVPN or WireGuard) may change routes or block connections. Disable your VPN and check your Wi-Fi.
- 🛡️ Antiviruses: ClamAV or Sophos In rare cases, they can interfere with network connections. Try temporarily disabling your antivirus service.
- 📡 Other network managers: if you installed
wicd,connmanornetctlnext to NetworkManager, they may conflict. Remove unnecessary packages:sudo apt remove wicd # For Debian/Ubuntu
If you suspect the problem is with a specific program, check the system logs:
journalctl -xe | grep -i wifi
Look for network related errors or blockages.
Particular attention should be paid to DNS settingsIf Wi-Fi connects but pages don't open, there may be a DNS issue. Check:
ping 8.8.8.8
If you can ping but can't access websites, try changing your DNS:
sudo nano /etc/resolv.conf
Add the following lines:
nameserver 8.8.8.8
nameserver 1.1.1.1
FAQ: Frequently Asked Questions about Wi-Fi in Linux
My Wi-Fi adapter is detected, but it can't find any networks. What's wrong?
This is typical in cases where:
- Firmware is missing (
firmware). Check the kernel logs with the commanddmesg | grep -i firmware. - The adapter is disabled by software. Check.
rfkill listand unlock it. - Incorrectly configured
regulatory domainSet the correct region with the commandsudo iw reg set RU.
Also make sure that there are active Wi-Fi networks nearby (check on your smartphone).
After updating the kernel, Wi-Fi stopped working. What should I do?
Updating the kernel may break compatibility with proprietary drivers. Solutions:
- Reinstall the driver for your kernel version. For example, for Realtek RTL8821CE:
sudo dkms remove rtl8821ce/version --allsudo dkms install rtl8821ce/version - Roll back to the previous kernel version (if the new one is unstable).
- Installing a newer driver from the manufacturer's repository.
Check your adapter's compatibility with the current kernel on the website wireless.wiki.kernel.org.
Is it possible to use Windows Wi-Fi driver on Linux?
Yes, but with reservations. Project ndiswrapper Allows you to load Windows drivers (.inf and .sys files) on Linux, but:
- This is an unstable solution that may lead to system crashes.
- Not all drivers are supported (especially for Windows 10/11).
- Performance and stability will be worse than with native drivers.
Install ndiswrapper you can do it like this:
sudo apt install ndiswrapper-common ndiswrapper-utils-1.9 # Debian/Ubuntu
sudo pacman -S ndiswrapper # Arch Linux
However, we recommend looking for native solutions or purchasing a compatible adapter.
My Wi-Fi is working, but it keeps disconnecting. How do I fix it?
Reasons for unstable connection:
- Energy Saving: disable it for the Wi-Fi adapter:
sudo iw dev wlan0 set power_save offTo make this permanent, add the line to
/etc/rc.local(toexit 0). - Weak signal: check the signal level with the command
iwconfig wlan0. IfSignal levelbelow -70 dBm, try moving closer to the router or changing the channel on the router (in the router settings, select a channel with less interference). - Conflicts with Bluetooth: On some laptops, Wi-Fi and Bluetooth use the same antenna. Disable Bluetooth to test.
Also check the logs for errors:
dmesg | grep -i wifi
Which Wi-Fi adapter is best for Linux?
Recommended adapters with good Linux support:
| Type | Model | chip | Ranges | Notes |
|---|---|---|---|---|
| USB | TP-Link TL-WN725N v3 | RTL8188EU | 2.4 GHz | Works out of the box in most distributions. |
| USB | Edimax EW-7811Un | RTL8188CUS | 2.4 GHz | Good for Raspberry Pi. |
| PCIe | Intel AX200 | AX200 | 2.4 + 5 GHz | Requires kernel 5.4+. Supports Wi-Fi 6. |
| M.2 | Intel 9260NGW | 9260 | 2.4 + 5 GHz | A good alternative to built-in adapters in laptops. |
Avoid chip-based adapters Realtek RTL8192EU And RTL8811AU - they often require manual compilation of drivers.