Hardware HOWTO: check Linux hardware support before you buy
Most PC hardware works with Linux without extra drivers, because the drivers are part of the kernel. The parts that cause trouble are a short list: some Wi-Fi chips, NVIDIA graphics, fingerprint readers, and very new hardware on older kernels. This page shows how to check a machine before you buy it, how to identify what is inside a machine you already have, and how to get missing drivers and firmware.
The old Hardware HOWTO was a long list of supported cards. No list can keep up today. Instead, you look up the exact chip and check that your kernel has a driver for it.
Before you buy
- Look for the exact model in a hardware database. linux-hardware.org collects anonymous reports from real machines. It listed 357,968 tested computers and 607,143 tested parts as of November 2026. Search by model name and look at which devices have a working driver.
- Check certification lists. The Ubuntu Certified catalog lists laptops, desktops, servers and IoT boards tested by Canonical. The Red Hat Ecosystem Catalog does the same for RHEL servers and workstations.
- Consider machines sold with Linux. Several makers sell laptops with Linux preinstalled, and some big brands offer Linux on business models. That is the safest choice.
- Find out the chips, not just the brand. A laptop model can ship with different Wi-Fi cards in different years. Ask the seller, or look up reviews that list the chipset.
- Test with a live USB. Boot a live image from a USB stick in the shop or within the return period. Check Wi-Fi, sound, suspend and resume, the touchpad, and an external screen.
Known trouble spots
| Part | Usually fine | Check first |
|---|---|---|
| Graphics | Intel (i915 and xe drivers) and AMD Radeon (amdgpu) are in the kernel and work out of the box. | NVIDIA: the in-kernel nouveau driver gives low performance on many cards. Most people install NVIDIA's driver, whose open kernel modules support Turing (GeForce 16/RTX 20) and later. |
| Wi-Fi | Intel (iwlwifi), MediaTek (mt76), Qualcomm (ath11k, ath12k) are supported kernel drivers. | Cheap USB Wi-Fi sticks and some Realtek and Broadcom chips may need out-of-tree drivers. Look up the chip before buying. |
| Fingerprint readers | Models on the libfprint supported list. | Many laptop readers have no driver. Check the libfprint list by USB ID. |
| Printers and scanners | Printers that support IPP Everywhere or AirPrint work without drivers. | Very cheap host-based ("GDI") printers. See Printing HOWTO. |
| Brand-new hardware | Anything older than about a year on a current distribution. | Brand-new chips need a recent kernel. On LTS distributions, use the newer kernel your distribution offers (see Kernel HOWTO). |
Identify what is inside
These commands list the hardware and, most importantly, which driver handles each device:
lspci -nnk # PCI devices: graphics, Wi-Fi, Ethernet, sound, NVMe
lsusb # USB devices with their vendor:product IDs
lsusb -t # USB tree, with the driver for each interface
lsblk -o NAME,MODEL,SIZE,TRAN # disks and how they are connected
A typical lspci -nnk entry looks like this:
02:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX200 [8086:2723] (rev 1a)
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
The numbers in brackets, 8086:2723, are the vendor and device IDs. They identify the chip exactly, whatever brand is on the box. "Kernel driver in use" means a driver is loaded. If that line is missing, the device has no working driver yet.
For a full inventory, these tools give more detail (install the package of the same name first):
sudo lshw -short # every device in one tree
hwinfo --short # summary by device class (openSUSE tool, packaged elsewhere)
inxi -b # one-screen summary of CPU, graphics, network, disks
Before you paste output into a forum, hide serial numbers and addresses. With inxi, add -z (for example inxi -bz). With other tools, remove them yourself.
Find out why a device does not work
- Read the kernel log. Most problems show up here:
sudo dmesg | grep -iE 'firmware|error|fail' journalctl -k -b # kernel messages from this boot - Search for the ID. Search the vendor:device ID (for example
8086:2723) on linux-hardware.org or a search engine. You will see which driver supports it and from which kernel version. - Check the driver exists.
modinfo iwlwifishows whether the module is installed.sudo modprobe iwlwifitries to load it. See Plug-and-Play HOWTO for modules and udev. - Check the kernel version.
uname -r. If support arrived in a newer kernel, upgrade the kernel through your distribution.
Firmware
Many devices (Wi-Fi, Bluetooth, graphics, some network cards) need a firmware file: a small program the driver uploads into the device at start-up. The driver is in the kernel, but the firmware is a separate file under /lib/firmware. A typical error is Direct firmware load for iwlwifi-... failed with error -2, which means the file is missing.
Firmware files come from the linux-firmware collection maintained at kernel.org, packaged by every distribution:
- Debian 13: firmware lives in the
non-free-firmwarecomponent, and the installer and live images include these packages, so a new install usually has what it needs. On upgraded systems, addnon-free-firmwareaftermainon each line of/etc/apt/sources.list(or to theComponents:line if you use/etc/apt/sources.list.d/debian.sources), then runsudo apt update. Then install the package, for examplesudo apt install firmware-misc-nonfree. Useapt-file searchwith the missing file name to find the right package. After installing, runsudo update-initramfs -u -k alland reboot. - Ubuntu:
linux-firmwareis installed by default. Runsudo ubuntu-drivers listto see proprietary drivers such as NVIDIA's. - Fedora, RHEL:
linux-firmwareis installed by default. NVIDIA drivers come from RPM Fusion on Fedora. - Arch:
sudo pacman -S linux-firmware.
Updating device firmware with fwupd
BIOS/UEFI, SSD, dock, Thunderbolt and many USB device makers publish firmware updates through the LVFS (Linux Vendor Firmware Service). The fwupd service installs them. GNOME Software and KDE Discover show these updates automatically. From a terminal:
fwupdmgr get-devices # devices fwupd can update, with current versions
fwupdmgr refresh # download the latest list of updates
fwupdmgr get-updates # show available updates
fwupdmgr update # install them (may reboot to finish)
Plug in the laptop charger before a BIOS update. Do not switch off during the update. If your device is not listed, the maker does not publish to the LVFS. Use the vendor's own method, often a file run from the firmware setup menu. fwupdmgr security shows a report of platform security settings such as Secure Boot and TPM.
Share a hardware report
If a device works, or does not, a report helps the next buyer. The hw-probe tool uploads an anonymous report to linux-hardware.org and prints a link you can post when asking for help:
sudo -E hw-probe -all -upload
It hashes MAC addresses and serial numbers instead of sending them, and leaves out user names, host names and IP addresses. Install it from your distribution or as a Flatpak or AppImage, as described on the site.
Quick checklist
- Exact model and chipset looked up on linux-hardware.org or a certification list
- Live USB test: Wi-Fi, sound, camera, suspend, external display
lspci -nnkandlsusbshow a driver for every device- No "firmware load failed" lines in
dmesg - fwupd firmware updates applied
- NVIDIA users: driver installed from the distribution's packages, not the .run file
The classic Hardware HOWTO, with its 2000s-era device lists, is kept by the Linux Documentation Project at tldp.org.
Sources
- Linux Hardware Database and how to probe your computer, linux-hardware.org
- Ubuntu Certified hardware, Canonical
- Red Hat Ecosystem Catalog: hardware
- lspci(8), lsusb(8), lshw(1), hwinfo(8), inxi(1), Debian
- Linux wireless drivers, kernel.org
- drm/amdgpu AMDgpu driver, drm/i915 and drm/xe, kernel.org
- NVIDIA open GPU kernel modules, NVIDIA
- libfprint supported devices, freedesktop.org
- linux-firmware repository, kernel.org
- Firmware, Debian Wiki
- LVFS and fwupd and fwupdmgr(1), Debian