How to Install a Wi-Fi Driver on Linux: A Complete Guide

Lack of wireless connectivity immediately after installing a distribution is a common problem faced by many users who decide to switch to Linux. Often, the operating system doesn't include proprietary modules by default due to licensing restrictions or the lack of kernel support for the latest hardware. This isn't a bug, but a feature of free software distribution policy that requires manual intervention to activate the network adapter.

Process integration of network modules This can range from simply enabling a switch in the settings to complex source code compilation. It all depends on your chipset vendor and the kernel version installed on your system. In some cases, simply connecting an Ethernet cable is enough for the system to automatically pull the necessary files from the repositories.

In this guide, we will analyze the algorithm of actions from initial diagnostics to forced installation of drivers for popular chipsets. Broadcom, Realtek And IntelYou will learn how to determine the exact device model, search for compatible software versions, and avoid kernel version conflicts that can lead to module inoperability after a system update.

⚠️ Warning: Before making changes to system files or compiling modules, make sure you have a backup of important data or the ability to roll back to a restore point, as kernel configuration errors can lead to system instability.

Primary diagnostics and device identification

The first step is always to accurately identify the network adapter model. Without understanding the exact hardware installed in your laptop or PC, finding a solution becomes a guesswork. Linux provides powerful hardware identification tools that work even without an active connection.

Use the utility lspci For devices connected via the PCI bus, which is typical for internal cards in laptops and desktops. For USB dongles or external adapters, the command lsusbThese tools will list all connected devices with their Vendor ID and Device ID, which is key to finding the correct driver.

lspci -nnk | grep -iA3 net

In the command output you will see lines containing the manufacturer's name, for example, Network controller: Realtek Semiconductor Co., Ltd.. Note the identifier in square brackets, for example [10ec:8168]These numbers will help you find the driver you need online if the automatic search fails.

  • 🔍 Use lspci -v to get detailed information about interrupts and memory addresses.
  • 🔍 Team nmcli device status will show whether NetworkManager sees the device itself, even if the driver is not loaded.
  • 🔍 Check the output dmesg | grep firmware for microcode loading errors.

If the device is detected but the driver is not loaded, the output will show lspci the line will be missing Kernel driver in useThis indicates that the module is either missing from the system or blocked. It's also worth checking whether the adapter is hardware-disabled using the command rfkill list, as sometimes the problem is solved by simply switching the flight mode.

📊 What chipset does your Wi-Fi adapter have?
Intel
Realtek
Broadcom
Atheros/MediaTek
Don't know

Using repositories and proprietary drivers

The safest and easiest way to solve this problem is to use your distribution's built-in package management mechanisms. Most modern distributions, such as Ubuntu, Linux Mint, or Fedora, have access to repositories with additional drivers. This eliminates the need for manual compilation and ensures automatic module updates along with the kernel.

In Debian/Ubuntu based distributions there is a utility ubuntu-drivers, which scans your hardware and suggests available software options. Run the command sudo ubuntu-drivers autoinstall can automatically install the recommended driver for your device. For graphical interfaces, the application menu often has an option called "Additional Drivers" or "Software & Updates."

⚠️ Note: Settings interfaces and package names may differ between distribution versions. Always consult the official documentation for your specific OS release, as the repository structure may change.

For Red Hat family distributions (CentOS, Fedora, RHEL), the process may require connecting repositories RPM Fusion, where proprietary modules are stored. After connecting the repository, installation often comes down to the command dnf install with the package name corresponding to your chipset.

Distribution Package manager Search team Driver repository
Ubuntu / Mint apt apt search firmware multiverse / restricted
Fedora dnf dnf search linux-firmware RPM Fusion
Arch Linux pacman pacman -Ss firmware multilib / AUR
OpenSUSE zypper zypper search firmware Packman

After installing packages from the repository, be sure to reboot or rebuild the initramfs for the changes to take effect. In some cases, the system will prompt you to run the command update-initramfs -u Manually. This is a critical step, without which new modules may not load at startup.

☑️ Checking driver installation

Completed: 0 / 5

Troubleshooting Broadcom adapters

Chipsets Broadcom Historically, they have been among the most problematic in the Linux world due to their closed specifications. Many models (43xx series) require a proprietary driver to operate. broadcom-sta (module wl). Open drivers b43 or brcm80211 Not all devices support this and often require manual firmware download.

If automatic installation doesn't help, you'll have to take manual action. First, you need to remove any conflicting open source drivers that might be loaded by default. This is done using blacklist files in the directory /etc/modprobe.d/A module conflict is a common reason why Wi-Fi doesn't work even after installing the correct software.

sudo modprobe -r b43 ssb brcmsbc bcma

sudo modprobe wl

After manually loading the module, check the interface status. If the command ip link shows a new network interface (usually wlan0 or wlp2s0), then the driver has been successfully activated. For permanent use, you need to add the module name. wl to file /etc/modules.

  • 🛠 Older BCM43xx series cards may require a package firmware-b43-installer.
  • 🛠 Make sure the kernel headers are installed (linux-headers), corresponding to your kernel version.
  • 🛠 Check if SecureBoot is blocking the loading of third-party kernel modules.
Problem with SecureBoot-->
-->