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
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/rtl8821cecd 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 installedbuild-essential,linux-headersAnddkmsWithout 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.gitcd 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 specifiedIEEE 802.11b/g, force it to turn on802.11n/acthroughiw.
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:
- Remove the problematic module:
rmmod [driver_name]. - Restore the old version from a backup or reinstall the package.
- 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:
- Check for updates on GitHub.
- Download and compile the new version.
- Reload kernel module.
Example of a simple script:
#!/bin/bashDRIVER_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 NetworkManagerupdating 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:
- The manufacturer's official website (for example, Realtek, Mediatek).
- Repositories on GitHub (search by adapter model + "linux driver").
- Forum Ask Ubuntu or Arch Linux Forum.
- Website Linux Wireless Wiki.
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:
- Check if it is installed
dkms: - Recompile the module for the new kernel:
- Make sure the module is loaded:
sudo apt install dkms
sudo dkms install -m [driver] -v [version] -k [kernel_version]
lsmod | grep [driver]
If that doesn't help, try rolling back to the old kernel via GRUB.