Updating Wi-Fi Drivers in Linux: A Complete Guide for Beginners and Advanced Users

If your Linux Wi-Fi is unstable, frequently drops the connection, or doesn't detect networks at all, the problem may be due to outdated drivers. Unlike Windows, where driver updates often happen automatically via device ManagerIn Linux, this process requires manual intervention. There's no universal solution—the method depends on the adapter type, distribution, and even the kernel version.

In this article, we'll cover all the current methods for updating Wi-Fi drivers: from simple terminal commands to compiling proprietary modules from source code. You'll learn how to identify your adapter model, check the current driver, and install updates using package managers or directly from the manufacturer's website. You'll also learn what to do if your Wi-Fi stops working completely after an update.

Why is it important to update Wi-Fi drivers on Linux?

Wi-Fi drivers in Linux are updated less frequently than in Windows, but that doesn't mean they don't require attention. Outdated versions can cause:

  • 🔌 Connection problems — the adapter sees networks, but cannot connect to them or constantly disconnects.
  • 🐢 Low speed — even with a good signal, the data transfer speed is several times lower than expected.
  • 🔍 Lack of support for new standards - For example, Wi-Fi 6 or WPA3.
  • 🔄 Conflicts with the core — After updating the system, Wi-Fi stops working.

The update is especially relevant for laptops with adapters Intel, Realtek or Broadcom, where manufacturers regularly release patches to fix bugs. For example, drivers iwlwifi For Intel AX200 receive updates almost every month, and Realtek RTL8821CE often requires manual installation due to lack of availability in standard repositories.

⚠️ Warning: If you use LTS version of the kernel (e.g. 5.15 or 6.1), some new drivers may not be supported. In this case, you'll need to either update the kernel or look for alternative solutions.

Step 1: Determine the Wi-Fi adapter model and current driver

Before updating the driver, you need to find out what hardware is installed on your device. To do this, use the command:

lspci -knn | grep -iA3 net

In the output, look for lines mentioning Network controller. For example:

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

Kernel modules: iwlwifi

Here:

  • Intel Corporation Wi-Fi 6 AX200 — adapter model.
  • iwlwifi — current driver.
  • 8086:2723 - identifiers Vendor:Device ID, which will be useful for searching for drivers.

If you have USB adapter (For example, TP-Link TL-WN725N), use the command:

lsusb

Or for more detailed information:

dmesg | grep -i wifi
📊 What type of Wi-Fi adapter do you have?
Built into the laptop
USB dongle
PCIe card
Don't know

Step 2: Check for available updates using the package manager

The easiest way to update drivers is to use your distribution's standard repositories. In most cases, this will work for adapters. Intel and some models Realtek/Broadcom.

For Debian/Ubuntu and derivatives:

sudo apt update

sudo apt upgrade

For Arch Linux:

sudo pacman -Syu

For Fedora:

sudo dnf upgrade

If Wi-Fi doesn't work better after updating the packages, it means there's no updated driver available in the repositories. In this case, you'll have to install it manually.

Step 3: Installing proprietary drivers (for Broadcom, Realtek, etc.)

Some adapters (especially Broadcom and individual models Realtek) require proprietary drivers that are not included in the Linux kernel. Let's look at two ways to install them.

Method 1: Via additional repositories (Ubuntu/Debian)

For Broadcom:

sudo apt install --install-recommends linux-firmware-nonfree

For Realtek RTL88x2BU (for example, adapters TP-Link Archer T4U):

sudo apt install rtl88x2bu-dkms

Method 2: Manual compilation from source

If your adapter is not in the repositories, you will have to download the driver from the manufacturer's website or from GitHubFor example, for Realtek RTL8821CE:

git clone https://github.com/tomaspinho/rtl8821ce

cd rtl8821ce

make

sudo make install

sudo modprobe 8821ce

After installation, reboot the system. If Wi-Fi isn't working, check the logs:

dmesg | grep -i 8821ce
⚠️ Note: When compiling drivers manually, make sure you have installed build-essential, linux-headers And dkmsWithout them, the build will fail.

Install packages for compilation (build-essential, linux-headers)|

Download the driver source code from the official website or GitHub|

Create a backup of the current driver (modinfo [module_name])|

Disable conflicting modules (sudo modprobe -r [module])

-->

Step 4: Update Intel Wi-Fi (iwlwifi) drivers

Adapters Intel (For example, AX200, AX210, 9260) use an open source driver iwlwifi, but it requires firmware filesThey can be updated separately from the kernel.

Download the latest firmware from the official repository:

git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

cd linux-firmware

sudo cp iwlwifi-* /lib/firmware/

sudo modprobe -r iwlwifi && sudo modprobe iwlwifi

If after the update errors like iwlwifi 0000:03:00.0: firmware: failed to load iwlwifi-cc-a0-XX.ucode, then you downloaded the wrong firmware version. Check the supported files for your adapter model at official wiki.

Adapter model Required firmware file Wi-Fi 6 support
Intel AX200 iwlwifi-cc-a0-XX.ucode Yes
Intel 9260 iwlwifi-9000-pu-b0-jf-b0-XX.ucode No
Intel 8265 iwlwifi-8000C-XX.ucode No
Intel 7260 iwlwifi-7260-XX.ucode No

Step 5: Troubleshooting Post-Update Issues

Sometimes, after updating a driver, Wi-Fi stops working completely. Here are the most common issues and their solutions:

  • 🔌 The adapter is not detected — check if the kernel module is loaded: lsmod | grep [driver_name]If not, download it manually: sudo modprobe [driver_name].
  • 🔄 Constant connection breaks - try disabling power saving: sudo iwconfig wlan0 power off.
  • 🚫 "Operation not permitted" error - perhaps the driver is in conflict with NetworkManager. Restart the service: sudo systemctl restart NetworkManager.
  • 🐢 Low speed — check the adapter operating mode: iwconfig wlan0. If specified IEEE 802.11b/g, force it to turn on 802.11n/ac through iw.

If nothing helps, try rolling back to an older driver version:

sudo modprobe -r [driver_name]

sudo dkms remove [driver]/[version] --all

sudo apt install [driver]=[old_version]

What should I do if the system won't boot after updating the driver?

If after installing the new driver Linux does not start or hangs at the Wi-Fi initialization stage, boot into recovery mode (via GRUB) and run:

  1. Remove the problematic module: rmmod [driver_name].
  2. Restore the old version from a backup or reinstall the package.
  3. Update initialization files: update-initramfs -u (for Debian/Ubuntu).

If that doesn't help, boot from LiveUSB and remove the driver manually from /lib/modules/.

Step 6: Automate updates (relevant for servers)

If you are administering a server or want drivers to be updated automatically, configure cron-task. For example, to check for firmware updates weekly:

0 0   1 sudo apt update && sudo apt upgrade -y linux-firmware

For adapters that require manual compilation (e.g. Realtek RTL88x2BU), you can write a script that will:

  1. Check for updates on GitHub.
  2. Download and compile the new version.
  3. Reload kernel module.

Example of a simple script:

#!/bin/bash

DRIVER_DIR="/usr/src/rtl88x2bu"

cd $DRIVER_DIR

git pull

make clean

make

sudo make install

sudo modprobe -r 88x2bu && sudo modprobe 88x2bu

⚠️ Warning: Automatic driver updates on a production machine can cause unexpected failures. Test new versions in a test environment before deployment.

FAQ: Frequently Asked Questions about Updating Wi-Fi Drivers on Linux

My adapter isn't detected even after updating the driver. What should I do?

If the team ip a or iwconfig If your Wi-Fi adapter isn't showing up, the problem could be:

  • Missing firmware files (check /lib/firmware/).
  • Conflict with other modules (run sudo lshw -C network).
  • Hardware failure (try the adapter on another device).

For diagnostics use:

dmesg | grep -i wifi

journalctl -xe | grep -i network

How do I know which driver version is installed?

Run the command:

modinfo [module_name] | grep version

For example, for iwlwifi:

modinfo iwlwifi | grep version

You can also view loaded modules:

lsmod | grep [driver_name]
Is it possible to update the driver without rebooting?

Yes, in most cases it is enough to reload the kernel module:

sudo modprobe -r [driver_name]

sudo modprobe [driver_name]

If the driver is used by network services (for example, NetworkManager), stop them first:

sudo systemctl stop NetworkManager

updating the driver

sudo systemctl start NetworkManager

Where can I find a driver for a rare Wi-Fi adapter?

If your adapter is not in the standard repositories, try the following sources:

Please pay attention to the license - some drivers are distributed only in binary form and may conflict with open source software.

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

This is a typical issue when updating the kernel—old drivers (especially DKMS modules) may not build for the new version. Solution:

  1. Check if it is installed dkms:
  2. sudo apt install dkms
  3. Recompile the module for the new kernel:
  4. sudo dkms install -m [driver] -v [version] -k [kernel_version]
  5. Make sure the module is loaded:
  6. lsmod | grep [driver]

If that doesn't help, try rolling back to the old kernel via GRUB.