Drivers the Arch way

arch / published / guide #78 / ≈ 4 min read

Arch deliberately doesn't ship a driver manager. The Arch philosophy is: you know what hardware is in your box, so you install exactly what it needs. This is more work up front than Mint's "click the recommended button," but it's only work the first time — and you end up understanding your own machine.

This guide is the simple, ordered walkthrough.

Step 1: identify your hardware

lspci -nnk             # PCI devices: GPU, Wi-Fi, ethernet, sound
lsusb                  # USB devices: webcam, printer, dongles
lscpu                  # CPU + features (vmx/svm etc.)
inxi -G                # a friendly summary of graphics (install inxi first)

The -k on lspci shows the currently-loaded kernel driver. If a device line says Kernel driver in use: … you're already golden. If it says nothing, you have something to install.

Step 2: kernel firmware

Almost everything wireless needs a firmware blob:

sudo pacman -S linux-firmware

This package is hundreds of MB but covers nearly every wireless chip, Bluetooth controller, and many GPUs in one go. Worth installing on day one.

Step 3: CPU microcode

Firmware that patches CPU bugs at boot. Pick the one matching your CPU:

sudo pacman -S intel-ucode          # Intel
sudo pacman -S amd-ucode            # AMD

For GRUB, run sudo grub-mkconfig -o /boot/grub/grub.cfg afterwards. For systemd-boot, add an initrd line for the microcode image to your boot entry (see systemd-boot vs GRUB on Arch).

Step 4: graphics

The "drivers" your apps actually talk to are Mesa (the OpenGL/Vulkan implementation) plus a kernel module. You always want Mesa:

sudo pacman -S mesa

Then add the userland Vulkan driver for your GPU:

sudo pacman -S vulkan-intel              # Intel iGPU
sudo pacman -S vulkan-radeon             # AMD
sudo pacman -S nvidia-utils              # NVIDIA proprietary (kernel module too — see below)

And the 32-bit equivalents if you'll play Steam games / Wine:

sudo pacman -S lib32-mesa lib32-vulkan-intel        # Intel
sudo pacman -S lib32-mesa lib32-vulkan-radeon       # AMD
sudo pacman -S lib32-nvidia-utils                   # NVIDIA

(For lib32-* you need the multilib repo enabled in /etc/pacman.conf.)

NVIDIA — pick a kernel module package

Choose one matching your kernel:

sudo pacman -S nvidia                # for the stock linux kernel
sudo pacman -S nvidia-lts            # for linux-lts kernel
sudo pacman -S nvidia-dkms           # any kernel, builds on install (slowest, most flexible)

After install, blacklist nouveau and reboot:

echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
sudo mkinitcpio -P
sudo reboot

Step 5: Wi-Fi

For most Intel/Realtek/Atheros cards, linux-firmware is all you need; the kernel's built-in driver does the rest. Connect with:

sudo pacman -S networkmanager
sudo systemctl enable --now NetworkManager
nmtui                # friendly terminal UI

For Broadcom wl driver cards (older Apple / some HP):

sudo pacman -S broadcom-wl-dkms

If after a reboot the card still doesn't show in ip link:

sudo dmesg | grep -i firmware           # what file is the kernel asking for?
sudo dmesg | grep -i wlan                # what happened during init?

The kernel will name the exact missing firmware file in its dmesg lines. Search pkgfile for it:

sudo pacman -S pkgfile
sudo pkgfile -u
pkgfile /lib/firmware/the-file-name      # which package provides it?

Step 6: Bluetooth

sudo pacman -S bluez bluez-utils
sudo systemctl enable --now bluetooth
bluetoothctl                # interactive pairing

Step 7: sound

sudo pacman -S pipewire pipewire-pulse pipewire-alsa wireplumber
systemctl --user enable --now pipewire pipewire-pulse wireplumber

Pipewire replaces PulseAudio with a more capable system that's compatible with both PulseAudio and JACK clients. It's the modern default.

Step 8: printers

sudo pacman -S cups system-config-printer
sudo systemctl enable --now cups
# then add a printer via GNOME/KDE settings, or http://localhost:631/

Step 9: Optimus / hybrid laptops

For an Intel + NVIDIA laptop where you want NVIDIA only on demand:

sudo pacman -S nvidia nvidia-prime
# then to run a single app on the dGPU:
prime-run firefox

The "what driver is actually loaded?" check

lspci -nnk | grep -A2 -iE "VGA|3D|Network|Audio"
sudo dmesg | grep -iE "firmware|failed"
journalctl -b -p err | head           # any errors since boot?

The mental model

Other distros sometimes hide this work behind a driver manager. Arch makes you do it once, but the rule of thumb is simple:

  1. Install linux-firmware and the microcode for your CPU.
  2. For graphics: mesa + the Vulkan package for your GPU brand. Add a kernel module for NVIDIA proprietary if needed.
  3. For everything else: read dmesg, find the missing firmware file, install the package that provides it.

That's the whole workflow. The arch wiki page Hardware video acceleration and the per-vendor pages (NVIDIA, AMDGPU, Intel graphics) are gold-standard references when you want to go deep.

← back to index