$linuxjunkies
>

Linux Hardware Compatibility: What Works and How to Check

Check GPU, Wi-Fi, and printer compatibility before installing Linux. Learn lspci, lsusb, firmware packages, and the best lookup resources for your hardware.

BeginnerUbuntuDebianFedoraArch8 min readUpdated June 7, 2026

Before you start

  • A live USB of your chosen distro, or an existing Linux installation
  • pciutils and usbutils packages installed (sudo apt/dnf/pacman install pciutils usbutils)
  • Internet access for downloading firmware and driver packages
  • sudo or root access

Hardware compatibility is the most common stumbling block for Linux newcomers. Before you wipe a drive or dual-boot a laptop, five minutes of checking can save hours of frustration. This guide walks you through reading your hardware list, understanding what Linux supports out of the box, hunting down firmware packages, and where to look when something still refuses to work.

Why Hardware Compatibility Matters

Linux supports an enormous range of hardware, but support quality varies. A device can fall into one of three categories:

  • Works out of the box — driver is built into the kernel, no extra steps needed.
  • Needs firmware or a proprietary driver — the kernel driver exists, but requires a non-free firmware blob or a vendor-supplied module (common with Wi-Fi chips and NVIDIA GPUs).
  • Not supported — no driver exists, or the only driver is Windows-only. This is rare for mainstream hardware but still happens with brand-new or obscure devices.

The categories that trip people up most often are Wi-Fi adapters, discrete GPUs, and occasionally printers and Bluetooth controllers. Check these first.

Reading Your Hardware Before Installing

If you are still on Windows or macOS, pull your hardware IDs before switching. On Windows, open Device Manager and note the PCI and USB IDs under each device's Properties → Details → Hardware IDs. On macOS, use Apple Menu → About This Mac → System Report.

On an existing Linux system — or from a live USB — use the tools below.

lspci — PCI Devices

lspci lists every device on your PCI/PCIe bus: GPUs, Wi-Fi cards, Ethernet controllers, NVMe controllers, and sound cards. Install it if missing (it lives in the pciutils package).

lspci -nn

The -nn flag appends the numeric vendor:device ID in brackets, which is what you need when searching compatibility databases. Example output line:

# Output varies; a typical Wi-Fi entry looks like:
# 02:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX200 [8086:2723]

To narrow down to graphics or network hardware specifically:

lspci -nn | grep -iE 'vga|3d|network|wireless'

lsusb — USB Devices

lsusb covers USB Wi-Fi dongles, webcams, printers, Bluetooth adapters, and external audio devices. It lives in usbutils.

lsusb

For the full ID string needed for compatibility lookups:

lsusb -v 2>/dev/null | grep -E 'idVendor|idProduct|iProduct'

If that floods your screen, use lsusb -d VENDOR:PRODUCT -v for a single device once you know its ID.

Checking What Kernel Driver Is Currently Bound

Once Linux is running, lspci -k shows which kernel module is loaded for each device:

lspci -k | grep -A3 'Network\|VGA\|3D'

If you see Kernel driver in use: followed by a module name, that device has a working driver. If the line is absent, the device is unsupported or the driver module is missing.

Checking GPU Compatibility

Integrated Intel and AMD GPUs work well out of the box on modern kernels — drivers are upstream. Discrete NVIDIA cards require a choice:

  • Nouveau — open-source, built into the kernel, limited 3D and power management on newer Ampere/Ada cards.
  • NVIDIA proprietary driver — full performance and Wayland support (via NVIDIA's GBM backend, driver ≥ 495), but requires installation.

Install the proprietary NVIDIA driver:

# Debian/Ubuntu
sudo apt install nvidia-driver firmware-misc-nonfree
# Fedora (RPM Fusion required)
sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda
# Arch
sudo pacman -S nvidia nvidia-utils

After installing, reboot. On Wayland sessions, confirm the driver is active with:

nvidia-smi

Checking Wi-Fi Compatibility

Wi-Fi is the most common pain point. Intel Wi-Fi chips (iwlwifi driver) and most Atheros chips work well but need non-free firmware blobs. Broadcom chips are notoriously awkward. Realtek USB dongles vary widely.

Installing Firmware Packages

On Debian/Ubuntu, the firmware is split into free and non-free repositories. Enable non-free (Debian) or multiverse (Ubuntu) then install:

# Debian (edit /etc/apt/sources.list to add non-free, then:)
sudo apt update && sudo apt install firmware-iwlwifi firmware-realtek firmware-atheros
# Ubuntu — most firmware ships in linux-firmware already
sudo apt install linux-firmware
# Fedora/RHEL — firmware is in linux-firmware
sudo dnf install linux-firmware
# Arch
sudo pacman -S linux-firmware

For Broadcom on Debian/Ubuntu:

sudo apt install broadcom-sta-dkms

After installing firmware, reload the driver without rebooting:

sudo modprobe -r iwlwifi && sudo modprobe iwlwifi

Confirming the Interface Is Up

ip link show

Look for a wlan0 or wlp* interface. If it is absent after loading firmware, check kernel messages for errors:

sudo dmesg | grep -iE 'firmware|wlan|iwl|brcm'

Checking Printer Compatibility

Most printers work through CUPS. The key lookup resource is the OpenPrinting database. Search your model there — it will tell you the recommended driver and whether the printer is perfectly, mostly, or partially supported.

# Install CUPS and common driver sets
sudo apt install cups printer-driver-all   # Debian/Ubuntu
sudo dnf install cups gutenprint           # Fedora
sudo pacman -S cups gutenprint             # Arch

Enable and start CUPS, then access the web UI at http://localhost:631:

sudo systemctl enable --now cups

HP printers have the best Linux support via the hplip package. Brother and Canon require downloading PPD files from the manufacturer's Linux support page.

Where to Look Up Compatibility

  • linux-hardware.org — community-submitted probe database; search by device ID or laptop model.
  • OpenPrinting — authoritative printer support database.
  • WikiDevi — detailed Wi-Fi chipset identification, useful for USB dongles that hide their real chip.
  • Your distro's hardware compatibility list (HCL) — Ubuntu Certified, Red Hat HCL, etc.
  • https://pci-ids.ucw.cz and https://usb-ids.gowdy.us — raw vendor/device ID lookups.

Verification Step

After installing drivers and firmware, run a full hardware probe with hw-probe. It generates a detailed report and optionally uploads it to linux-hardware.org so others can benefit:

sudo apt install hw-probe    # Debian/Ubuntu
sudo dnf install hw-probe    # Fedora
sudo pacman -S hw-probe      # Arch
sudo hw-probe -all -upload

The command prints a URL to your probe. Review it locally or share it when asking for help — it lists every device and whether a driver is loaded.

Troubleshooting

Device present in lspci but no driver loads

Check if a module exists but is blocked by a kernel parameter or a conflicting module:

sudo dmesg | grep -i 'error\|fail\|missing'
cat /proc/modules | grep YOUR_MODULE

Also check /etc/modprobe.d/ for any blacklist entries that might block the driver.

Wi-Fi firmware loads but no networks appear

Confirm the interface is not soft-blocked by rfkill:

rfkill list all
rfkill unblock wifi

NVIDIA driver installed but Wayland session falls back to X11

Verify the driver version is 495 or newer and that nvidia-drm.modeset=1 is set as a kernel parameter. On systemd-boot or GRUB, add it to your kernel command line and reboot.

tested on:Ubuntu 24.04Debian 12Fedora 40Arch rolling

Frequently asked questions

How do I check hardware compatibility before installing Linux, without a Linux system?
Boot from a live USB of your target distro — everything detected by the live environment will work on install. Alternatively, note your PCI and USB device IDs from Windows Device Manager and search them on linux-hardware.org before touching your drive.
My Wi-Fi card is listed by lspci but no wireless interface appears. What is wrong?
The most common causes are missing firmware (install linux-firmware or a chip-specific package like firmware-iwlwifi) or a soft block from rfkill. Run 'rfkill list all' and 'sudo dmesg | grep firmware' to narrow it down.
Do I need the proprietary NVIDIA driver, or is Nouveau good enough?
For desktop use, gaming, or CUDA workloads, install the proprietary driver. Nouveau works for basic display output on older cards but lacks performance and has limited power management on Ampere (RTX 30xx) and Ada (RTX 40xx) hardware.
Will my USB printer work without installing anything extra?
Plug it in and check CUPS at http://localhost:631 — many printers are auto-detected via IPP Everywhere or driverless printing. If not, search the OpenPrinting database for your model and install the recommended PPD or driver package.
What does it mean when lspci shows a device but lspci -k shows no driver?
The kernel recognises the hardware ID but has no module loaded for it. Either the driver module is missing from your kernel build, the required firmware blob is absent, or the module is blacklisted in /etc/modprobe.d/. Check dmesg for error messages pointing to the specific cause.

Related guides