Installing Wi-Fi Drivers on Ubuntu: A Step-by-Step Guide

Installing a Linux operating system is often the first step to improving your computer's performance and security, but users often encounter a broken wireless connection immediately after installation. This is common because proprietary drivers for some network adapters are not included in the standard kernel distribution due to licensing restrictions. Unlike Windows, where drivers are often built into the installer or loaded automatically by the system, Linux sometimes requires manual intervention to activate the network card.

The situation may seem impossible: downloading the necessary software requires internet access, and there's no internet connection precisely because the driver is missing. However, there are several proven methods for resolving this issue without using a wired Ethernet connection, which not everyone has. We'll cover ways to identify your hardware, offline installation methods, and terminal configuration, allowing you to quickly get back online.

It's important to understand that the process depends on the specific chipset model installed in your laptop or USB adapter. There's no universal "turn on Wi-Fi" button, but knowing the exact device model allows you to find the right solution in a few minutes. In this article, we'll outline a workflow suitable for both beginners and experienced users looking to systematize their knowledge.

Network adapter identification

The first and most critical step is accurately identifying your network controller model. Without this information, any attempt to install drivers will be a guesswork, as laptop manufacturers may use different components even in the same device model. Linux provides powerful hardware diagnostic tools that are accessible even without a graphical interface.

To list all connected PCI devices, including internal Wi-Fi modules, use the lspci utility. Enter the command in the terminal to display detailed information about the vendor and device. If you have an external USB adapter, use the lsusb command to display peripherals connected via the USB bus.

lspci -nnk | grep -i net -A2

In the output of this command, you're interested in the line containing the words "Network controller" or "Wireless." Note the identifiers in square brackets, for example [8086:3165], where the first number is the vendor ID (Intel) and the second is the device ID. This information is key to finding a specific driver package in the repositories.

Decoding device codes

Manufacturer codes are often repeated: 8086 — Intel, 10ec — Realtek, 14e4 — Broadcom. Knowing the manufacturer allows you to quickly narrow down the search for the necessary packages.

Once you receive the ID, it's recommended to write it down or take a screenshot if you can transfer the data to another device with network access. We'll use these codes to search for the corresponding package in the Ubuntu driver database.

📊 What type of Wi-Fi adapter do you have?
Built into the laptop (PCI-E)
External USB whistle
Built into the PC motherboard
I don't know, I need to determine

Using additional Ubuntu drivers

The easiest and safest way to resolve the issue with no Wi-Fi is to use the built-in driver management tool called "Additional Drivers." This tool automatically scans your hardware and offers to install proprietary modules if they are available in the official Ubuntu repositories.

To access this tool, open the application menu and find "Software & Updates." Go to the "Additional Drivers" tab. The system will search for a suitable solution for your device. Wireless Adapter, will prompt you to activate it. All you have to do is select "Use this driver" and click "Apply changes."

  • 📡 The system will automatically determine whether Broadcom or Dell Wireless drivers need to be installed.
  • 🔒 Compatibility with the current kernel version and stable operation are guaranteed.
  • ⚙️ No manual compilation or source code manipulation required.

However, this method only works if the base driver is already present in the system or if you have an alternative internet connection (for example, via USB tethering from your phone). If nothing is found in the list, then the driver for your device is not available in the standard repositories and requires manual installation.

⚠️ Note: If you're using a laptop with hybrid graphics or a specific Secure Boot feature, activating proprietary drivers may require creating a MOK password upon boot. Carefully follow the instructions on the blue boot screen.

Manual installation via repositories

If the automatic search fails, you'll have to resort to manual package installation. For most popular chipsets (Realtek, Intel, Atheros), Ubuntu repositories already contain ready-made binary packages. The main difficulty here is the lack of internet access on the computer itself. There are two solutions: use your smartphone as a USB modem (RNDIS) or download the .deb packages from another PC.

Connecting an Android smartphone via USB often allows immediate network access without installing Linux drivers. Enable "USB tethering" in your phone's settings, and Ubuntu should detect the new network connection. Once internet access is established, installing drivers becomes a trivial task.

sudo apt update

sudo apt install firmware-linux-nonfree

Broadcom devices often require a package bcmwl-kernel-source, and for some Realtek - rtl8812au-dkmsInstallation via the apt package manager is preferred, as it will automatically rebuild the kernel module when it's updated. If you download the .deb files manually, make sure the package version matches your system architecture (usually amd64) and the distribution version.

☑️ Manual installation checklist

Completed: 0 / 5

After installing the packages, be sure to reboot or reload the kernel module using the modprobe command. This will activate the changes without requiring a full system restart, although a reboot is a more reliable way to ensure that all network services have started correctly.

Compiling drivers from source code

In cases where ready-made packages are unavailable or don't work with the new kernel, the only option is to compile the driver from source code. This method requires the GCC compiler and kernel header files. It's a more complex approach that requires careful attention, but it allows you to run even the most exotic Chinese USB adapters.

First, you need to install the basic build toolset. Compilation is impossible without the build-essential, linux-headers, and git packages. If you already have internet access (via a USB modem), install the dependencies with a single command.

sudo apt install build-essential linux-headers-$(uname -r) git

Next, you need to find the driver repository. Developers often post the code on GitHub. After downloading the archive or cloning the repository, navigate to the folder containing the files. Inside, you'll usually find a README or INSTALL file containing specific instructions. The standard installation process consists of a series of make and make install commands.

Team Description of action Necessary rights
make Compiling source code into a kernel module User
sudo make install Copying the module to system directories Root (sudo)
sudo modprobe module_name Loading the driver into memory Root (sudo)

It's important to note that when updating the system kernel, you'll have to repeat the compilation process again, as the binary module is tied to a specific kernel version. To automate this process, DKMS (Dynamic Kernel Module Support) technology automatically rebuilds the driver when updating the system.

Solving problems with Broadcom and Realtek

Broadcom and Realtek chipsets are the most common sources of compatibility issues in Linux. For Broadcom, installing a package often resolves the issue. bcmwl-kernel-source, but sometimes you need to disable the built-in driver b43, which conflicts with the proprietary one. This is done by creating a module blacklist.

Create a configuration file in the modprobe.d directory to prevent the conflicting driver from loading.

sudo nano /etc/modprobe.d/blacklist-b43.conf

You need to add the following line to this file blacklist b43, save the changes, and update the initramfs configuration. After this, upon reboot, the system will no longer attempt to use the open source driver, instead using the proprietary wl module.

With Realtek devices, especially newer models with Wi-Fi 6 support, the situation can be more complicated. Cloning the GitHub repository is often necessary, as Realtek's official drivers are poorly supported.

kernel. Users often encounter the "module verify failed" error if Secure Boot is enabled, as signing a self-compiled module can be difficult.

Keep in mind that interfaces and package names may vary slightly between distribution versions. Always check the official documentation or support forums for your distribution for up-to-date information, especially if you're using an LTS version or, conversely, a recent release.

Diagnostics and common mistakes

Even after successfully installing the driver, Wi-Fi may not work immediately. A common cause is a wireless module block at the rfkill level. This is a software or hardware switch that can be accidentally activated. You can check the blocking status with the command rfkill list all.

If you see the status "Soft blocked: yes", you can unblock the adapter with the command rfkill unblock wifiIf the status is "Hard blocked: yes," the switch is physically disabled on the laptop case or in the BIOS. In this case, software solutions won't help until you change the switch's position.

  • 🚫 Check if Airplane Mode is enabled in the network interface.
  • 🔌 Make sure the USB adapter is getting enough power (try a different port).
  • 📜 Analyze kernel logs with dmesg | grep wifi to find boot errors.

It's also worth paying attention to power management. Sometimes the driver disables the card to save power, causing it to become unresponsive. Disabling this feature in the NetworkManager settings often resolves the issue of an unstable connection.

⚠️ Warning: Changes to NetworkManager or wpa_supplicant configuration files may result in connection failure. Always back up these files before editing them.

Frequently Asked Questions (FAQ)

How to install a Wi-Fi driver without internet access?

Use a smartphone with USB modem enabled (RNDIS mode). Connect your phone to your computer using a cable and select "USB modem" in your phone's settings. Ubuntu will automatically detect the new wired connection, and you can download the necessary packages via apt.

Why did Wi-Fi disappear after updating Ubuntu?

When updating the system kernel, previously manually installed drivers (especially those compiled from source) may stop working because they are tied to the older kernel version. You will need to recompile the module or reinstall the dkms package.

Is it safe to use drivers from GitHub?

Using drivers from trusted repositories with a high star rating and an active community is generally safe. However, there are always risks. It's recommended to first review the code or reviews from other users with similar hardware.

What is DKMS and why is it needed?

DKMS (Dynamic Kernel Module Support) is a framework that automatically rebuilds third-party kernel modules (drivers) whenever you update the Linux kernel. This eliminates the need to manually reinstall the Wi-Fi driver after every major system update.