One of Linux's advantages is its very broad hardware support. Most devices work straight out of the box without needing to install additional drivers, because the drivers are already built into the kernel. However, there are times when you need to check which devices are attached or install proprietary drivers. This chapter covers hardware support on Linux, how to check hardware information, install proprietary drivers (NVIDIA, AMD, Wi‑Fi), and update firmware and CPU microcode.
Hardware Support on Linux
Unlike Windows, which often requires driver installation from the manufacturer's website, most drivers on Linux are already available in the kernel. Ubuntu 26.04 LTS uses Linux kernel 7.0, while Fedora Workstation 44 also uses a newer kernel series; the newer the kernel, the broader the coverage of modern hardware (graphics cards, Wi‑Fi, and the latest Bluetooth chips) that is automatically recognised from day one.
Why Is Some Hardware Not Supported?
Some devices do not work on Linux because their manufacturer does not release specifications or open‑source drivers. As a result, kernel developers have to reverse‑engineer them, which takes time and does not always succeed. The devices that most often cause issues are certain Wi‑Fi cards, printers, and discrete graphics cards (especially NVIDIA).
Open‑Source Drivers vs Proprietary Drivers
- Open‑source drivers have open code and are usually already included in the kernel. These drivers are installed automatically and are well‑maintained. Examples are
amdgpufor AMD graphics cards andnouveaufor NVIDIA (open‑source version, with limited performance). - Proprietary drivers are closed‑source drivers from the manufacturer. These are sometimes needed for full performance or features, for example the official NVIDIA driver. In recent years, NVIDIA has also released open kernel modules (packages ending with
-open) for Turing‑series GPUs and later; the kernel module is open source, but it still depends on proprietary firmware and userspace libraries.
In general, use the open‑source driver if it already meets your needs, and switch to the proprietary driver only when necessary (gaming, GPU rendering, CUDA, or high‑performance multi‑monitor setups).
Checking Hardware Information
To find out which devices are installed, Linux provides several commands.
lspci: List PCI Devices
lspci shows all devices connected via the PCI bus, such as graphics cards, network cards, and disk controllers.
lspciAdd the -k option to see the kernel driver currently in use for each device, which is useful to verify whether your graphics card is using the nvidia/amdgpu driver or still using a generic open‑source driver.
lspci -klsusb: List USB Devices
lsusb displays devices connected via USB.
lsusblshw: Full Hardware Information
lshw displays comprehensive hardware information, from CPU, memory, to storage devices.
sudo lshwOn Ubuntu, lshw is generally installed by default. On Fedora Workstation, this package is not included in the default installation, so it needs to be installed first:
sudo dnf install lshwinxi: System Hardware Summary
inxi displays a summary of hardware and system information in a human‑readable format. If not already available, install it with sudo apt install inxi or sudo dnf install inxi.
inxi -FFor a concise diagnosis of the graphics card and active driver, use:
inxi -Guname -r: Kernel Version
To check the currently running kernel version, use uname -r.
uname -rThe kernel version is important because it determines the available hardware support.
Installing Proprietary Drivers
Proprietary drivers are generally needed for NVIDIA graphics cards and some Wi‑Fi devices.
NVIDIA Driver on Ubuntu
On Ubuntu 26.04 LTS, the most reliable way to install the NVIDIA driver is through the command‑line tool ubuntu-drivers. First, check the recommended driver for your graphics card:
ubuntu-drivers devicesThen install the automatically recommended driver:
sudo ubuntu-drivers installUbuntu usually recommends the open kernel module variant for modern GPUs (for example the package nvidia-driver-xxx-open). After installation finishes, reboot the system, then verify that the driver is active with:
nvidia-smiAn alternative is the Software & Updates application on the Additional Drivers tab, which detects the graphics card and offers drivers graphically (select the recommended driver, click Apply Changes, then reboot). However, this GUI method has been reported not to display NVIDIA driver options correctly in some early Ubuntu 26.04 releases, so the command‑line approach above is recommended if the driver list does not appear in the GUI.
NVIDIA Driver on Fedora
On Fedora, the NVIDIA driver is available through the RPM Fusion repository (see how to enable it in Chapter 9). Once RPM Fusion is active, install the driver with:
sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cudaThe akmod process builds the NVIDIA kernel module in the background, so wait a few minutes before rebooting. You can check the build status with:
modinfo -F version nvidiaAttention Secure Boot: if UEFI Secure Boot is active (the default on most Fedora installations), the akmod-nvidia module needs to be enrolled as a Machine Owner Key (MOK) so that the bootloader allows it to load. Run:
sudo dnf install akmods mokutil openssl
sudo kmodgenca -a
sudo mokutil --import /etc/pki/akmods/certs/public_key.derThe last command will ask you to create a temporary password. When the system reboots, the blue MOK Manager screen will appear; select Enroll MOK, enter the password you set, and confirm. Without this step, the NVIDIA driver will fail to load silently and the system will automatically fall back to the nouveau driver. As an alternative, Secure Boot can also be disabled from the UEFI/BIOS settings, but enrolling a MOK is recommended so that Secure Boot remains active.
AMD and Intel Drivers
For AMD and Intel graphics cards, no additional driver installation is generally required. The open‑source drivers amdgpu (AMD) and i915/xe (Intel) are already built into the kernel and are active automatically, including Vulkan support and basic video acceleration. If you need maximum gaming performance or additional video codec packages, the latest Mesa packages can be installed from the standard repositories (mesa-vulkan-drivers on Ubuntu, or equivalent mesa packages on Fedora).
Proprietary Wi‑Fi Drivers
Some Wi‑Fi cards, especially from Broadcom, require proprietary drivers (for example the bcmwl-kernel-source package on Ubuntu). On Ubuntu, this driver can be installed through Additional Drivers or ubuntu-drivers install. On Fedora, Broadcom drivers are available through RPM Fusion, for example the broadcom-wl or akmod-wl packages depending on the chipset.
Firmware and Microcode
Besides drivers, hardware also needs firmware, which is low‑level software embedded on the device, and microcode, which is an internal update for the CPU itself.
fwupd: Update Firmware via the Linux Vendor Firmware Service (LVFS)
fwupd is a tool for updating firmware on devices such as motherboards, SSDs, and other peripherals through the Linux Vendor Firmware Service (LVFS). This tool is installed by default on Ubuntu and Fedora.
sudo fwupdmgr refreshsudo fwupdmgr get-devicessudo fwupdmgr get-updatessudo fwupdmgr updateThe refresh command updates metadata, get-devices lists devices that can have their firmware updated via LVFS, get-updates checks for available firmware, and update installs firmware updates. Firmware updates can also be done via the GUI, for example through the Firmware tab in the GNOME Software / App Center. Updating firmware is important for stability, security, and fixing device bugs.
CPU Microcode
Microcode is a low‑level update for the processor (Intel or AMD) that fixes internal CPU bugs and patches security vulnerabilities such as the Spectre/Meltdown class of issues. On Ubuntu, the microcode packages (intel-microcode for Intel CPUs or amd64-microcode for AMD CPUs) are generally installed by default and updated automatically via sudo apt upgrade. On Fedora, Intel microcode updates are delivered through the microcode_ctl package, which is also updated via sudo dnf upgrade together with kernel updates. On both distributions, a full system reboot is required for the new microcode to take effect.
Understanding hardware and drivers makes you more self‑sufficient in handling devices on Linux. Through commands such as lspci, lsusb, and inxi, you can discover which devices are installed, then install the appropriate driver if needed. In the next chapter, you will learn common troubleshooting to address various problems you may encounter.

