Why Wi-Fi Isn't Working on Linux: A Complete Guide

A situation when after installing the operating system distribution Linux A user discovering a lack of wireless connection is one of the most common and frustrating problems. Often, this isn't due to hardware failure, but rather to a lack of proprietary drivers in the open source repository or a conflict between kernel versions and the network card software. Unlike Windows, where hardware manufacturers often provide out-of-the-box installers, in the open source world, support sometimes requires manual intervention.

The first thing a newbie needs to understand is that the absence of a Wi-Fi icon or a complete failure of the module is solvable in 95% of cases. NetworkManager — a standard network management tool — may simply not be running or blocked by another service. In other cases, the system detects the adapter but doesn't know how to communicate with it, requiring the installation of specific firmware binaries.

This article will help you perform a thorough diagnosis and troubleshoot the cause of the failure. We'll cover methods for identifying the device, checking driver status, and forcibly activating kernel modules. It's important to proceed consistently, as haphazardly installing packages can lead to additional dependency conflicts.

⚠️ Attention: Before making changes to system files or installing drivers from third-party sources (PPA), be sure to create a system restore point or backup important data. Kernel errors can prevent the OS from booting.

Hardware diagnostics and adapter visibility check

The first step in resolving the issue of "why Wi-Fi isn't working on Linux" should always be checking the physical presence of the device for the system. Even if the laptop's lights aren't lit, the controller may simply be software-disabled. For complete information about all network interfaces, use the utility lspci for internal cards or lsusb for external USB adapters.

Run the command in the terminal lspci -nnk | grep -iA2 net, which will filter the output and show only network devices along with the kernel drivers they use. If you see the line Kernel driver in use, then the basic driver is loaded, and the problem is most likely related to the settings or a lock. If this line is missing and the device is identified (Vendor and Device ID are indicated), then the driver is for your model. Realtek, Broadcom or Intel not installed.

It is also worth checking whether the wireless module is in the "Hard Block" or "Soft Block" state. The command rfkill list all will show the radio interface lock status. Sometimes laptop manufacturers implement physical switches or key combinations (for example, F2 or F12), which hardware-based power supply to the Wi-Fi module is turned off, and it is impossible to remove such a blocking programmatically before turning on the switch.

  • 🔍 Use lspci for internal cards and lsusb for external whistles.
  • 🚫 Check the blocking status via rfkill (Soft/Hard block).
  • 💻 Look for the line "Kernel driver in use" to confirm that the driver is working.
  • 📡 Make sure the module is not disabled in BIOS/UEFI.
📊 What is your driver status in lspci?
Driver specified (Kernel driver in use)
Driver not specified (empty string)
The device was not found at all
I don't know, I'm afraid of the terminal.

Problems with drivers and proprietary software

The most common reason why Wi-Fi doesn't work on Linux is the lack of proprietary firmware. Many manufacturers, such as Broadcom and some rulers Realtek, don't open source their drivers, providing only binary packages. Distributions like Ubuntu or Mint often have a mechanism for installing them, but it requires an active wired connection (Ethernet) or a connection via a smartphone's USB modem.

For Debian/Ubuntu based distributions there is a utility ubuntu-drivers, which automatically scans your hardware and offers to install missing proprietary drivers. Run the command sudo ubuntu-drivers autoinstall This can instantly solve the problem by downloading the necessary packages from the repositories. However, if the cable internet connection isn't working either, you'll have to get creative: download the .deb packages on another computer and transfer them via a flash drive.

Particular attention should be paid to new laptop models that have recently been released. The Linux kernel (Kernel) in stable distributions may be older than the release date of your network card. In this case, even having the driver in the repository won't help, since the old kernel doesn't support the new hardware. Installing a more recent kernel via mainline or using rolling-release distributions such as Arch Linux or Fedora.

⚠️ Attention: Driver manager interfaces and package names may vary depending on your distribution version (Ubuntu 22.04, 24.04, Mint 21, etc.). Always consult the official documentation for your specific OS before installing system components.

What to do if the Broadcom driver is not found?

If the standard repositories don't contain a driver for your Broadcom card (often the 43xx series), try the bcmwl-kernel-source package. In some cases, you may need to disable Secure Boot in the BIOS, as proprietary modules may not be digitally signed, preventing them from loading into the kernel.

Kernel module and blacklist conflicts

Sometimes multiple drivers for the same device are installed on the system, which leads to a conflict. For example, an open driver nouveau (for video) or b43 (for Wi-Fi) may conflict with the proprietary version. In such cases, the kernel attempts to load the "open" driver by default, the device initializes incorrectly, and Wi-Fi stops working. The solution lies in managing kernel modules.

To forcefully disable a conflicting module, a "blacklist" mechanism is used. You need to create a configuration file in the directory /etc/modprobe.d/, For example, blacklist.conf, and add a line there blacklist module_nameAfter this, you need to update the initramfs with the command sudo update-initramfs -u and reboot. This will prevent the kernel from loading the specified module at system startup.

You can check which modules are currently loaded with the command lsmodIf you see that a module is loaded that should be disabled, you can unload it on the fly with the command sudo modprobe -r module_nameto check if Wi-Fi works without rebooting. However, keep in mind that after restarting the computer, the module will load again unless you blacklist it.

  • 🛑 Open-source and closed-source drivers often conflict.
  • 📝 Use blacklist V /etc/modprobe.d/ to turn off.
  • 🔄 Team modprobe -r Unloads the module without rebooting.
  • ⚙️ Don't forget to update initramfs after the changes.

☑️ Check for driver conflicts

Completed: 0 / 5

Configuring NetworkManager and system services

Even with working hardware and drivers, the user interface may not work due to a failure in the network management service. In most modern distributions, this is the responsibility of NetworkManagerIf it freezes or fails to start, the connection icon will disappear. You can check the service status via systemctl status NetworkManagerIf the service is inactive or has failed, it must be restarted.

A common mistake is to have multiple network managers running at the same time, for example, network-manager And wicd or connmanThey try to monopolize control of the interface by blocking each other. As a result, neither can establish a connection. It's necessary to choose one primary tool and uninstall the others or completely disable their services.

It's also worth paying attention to power saving settings. Some Wi-Fi drivers enable power saving mode by default, which can cause the adapter to periodically disconnect or prevent the router from connecting. This can be disabled by adding a corresponding directive to the NetworkManager configuration file or by creating a udev rule, which is especially relevant for laptops with batteries.

sudo systemctl restart NetworkManager

This command restarts the network management service. If the problem persists after running it, you should check the system logs (journalctl -u NetworkManager) for authorization errors or DHCP problems.

Specifics of USB Wi-Fi adapters and external cards

Using external USB adapters is often a way to "revive" Wi-Fi on Linux if the built-in card isn't supported. However, there's a catch: many cheap chip-based adapters Realtek (e.g., RTL8812BU, RTL8821CU) require manual compilation of drivers from source code, as they are not included in the main Linux kernel. This can be intimidating for a beginner, but the process is generally standardized.

Installing such drivers often requires a compiler. build-essential and kernel header files (linux-headers). Without them, the system won't be able to build the module. The process involves cloning the GitHub repository, running the installation script, and rebooting. It's important to download the driver specifically for your chip revision, as the manufacturer may change the internals even within the same adapter model.

Another issue with USB adapters is power. USB 2.0 ports may not provide enough current for powerful dual-band antennas. As a result, the adapter may constantly reconnect or operate erratically. It is recommended to use USB 3.0 ports (blue) or a powered USB hub with external power.

Chipset Driver type Difficulty of installation Stability
Intel AX200/210 In the core (iwlwifi) Low (works out of the box) High
Realtek RTL8812AU DKMS / GitHub Medium (requires compilation) Average
Broadcom BCM43xx Proprietary (wl) Low (via additional drivers) High
MediaTek MT7921 In the core (mt7921e) Low (requires fresh kernel) High

Impact of Secure Boot and kernel version

Modern computers come with this feature enabled. Secure Boot in UEFI/BIOS. This security technology prevents the loading of device drivers that are not digitally signed. Since many Wi-Fi drivers for Linux (especially proprietary ones or those manually compiled via DKMS) are not signed with Microsoft or distribution keys, the system simply blocks them from loading, and Wi-Fi does not appear.

A possible solution is to disable Secure Boot in the BIOS settings. This is the simplest, though not the most secure, approach. An alternative is to create your own Machine Owner Keys (MOKs) and sign kernel modules manually. This process requires executing the following commands: mokutil and entering a password upon boot, which can be difficult for novice users.

The kernel version is also critical. If you installed Linux on a laptop manufactured in 2026-2026, and the distribution is based on kernel 5.15, support for new hardware may be physically absent. The old kernel code simply doesn't contain the instructions for working with the new card. Updating the kernel to the latest version (LTS or Mainline) is often the only way to get the latest hardware working.

⚠️ Attention: Disabling Secure Boot reduces your system's protection against bootkits and low-level malware. Only do this if you are confident in the physical security of your computer or if you cannot configure module subscriptions.

How to check the kernel version?

Enter the command uname -r in the terminal. The first digits (e.g., 5.15 or 6.5) indicate the version. For new hardware, kernel version 6.0 or higher is recommended.

Frequently Asked Questions (FAQ)

Why did Wi-Fi work yesterday and disappear today after an update?

A system update may have replaced the Linux kernel with a new version that changed the ABI (binary compatibility) for driver modules. As a result, the previously installed driver (especially DKMS) no longer loads. Solution: Reinstall the kernel header packages (linux-headers) and rebuild the driver modules, or roll back to the previous kernel version via the GRUB menu during boot.

Can I use my Android smartphone as a Wi-Fi adapter for Linux?

Yes, this is a great temporary way to get internet access while installing drivers. Enable USB Tethering on your phone in the network settings. Linux will usually immediately recognize it as a wired Ethernet connection, without requiring additional drivers.

What to do if the lspci command does not see the Wi-Fi card?

If the device is not visible even in lspci, check if it's disabled in the BIOS/UEFI. It's also possible that the hardware is disabling it using the key combination (Fn + antenna) or the module is physically faulty. Try resetting the BIOS settings to default (Load Defaults).

How can I find out the exact model of my Wi-Fi adapter without internet access?

Use the command lspci -nn or lsusbYou're interested in the codes in square brackets, such as [8086:2723]. Using these codes (Vendor ID and Device ID), you can find the exact device name in the PCI ID database by searching on Google from another device.

Will installing Windows drivers via Wine help?

No, Wine is designed to run user applications, not kernel drivers. Windows drivers (.inf, .sys) cannot run directly on Linux. Native Linux drivers or virtualization with USB device passthrough are required.