Garuda Hardware Tool
Garuda Hardware Tool (garuda-hardware-tool) is a shell script that finds the graphics cards of your system and installs the matching hardware profile packages. It replaces the older MHWD tool. The tool has no window. It runs in a terminal, and garuda-health suggests it when the NVIDIA driver is missing.
It is for anyone who installs or repairs the graphics drivers of a Garuda Linux system. The NVIDIA profiles need the --nonfree option. The tool does not install drivers for other hardware classes.
Starting it
Section titled “Starting it”The package has no menu entry. Start it from a terminal.
sudo garuda-hardware-tool --nonfreeThe tool must run as root, except with --check. Without --nonfree or --free it prints its usage and exits.
Package
Section titled “Package”| Package | Notes |
|---|---|
garuda-hardware-tool | From pkgbuilds/garuda-hardware-tool, version 1.2.1 in the PKGBUILD. Depends on pciutils, coreutils and grep. It installs /usr/bin/garuda-hardware-tool. |
garuda-hardware-profiles | From pkgbuilds/garuda-hardware-profiles, version 2.0.1 release 3. It is a split package with the five profiles described below. |
The PKGBUILD of garuda-hardware-tool replaces mhwd-garuda, mhwd-garuda-git, mhwd-amdgpu, mhwd-ati, mhwd-nvidia, mhwd-nvidia-390xx, mhwd-nvidia-470xx, mhwd-db-garuda, and mhwd-db-garuda-git. Its comment reads Replaces all of MHWD.
Options
Section titled “Options”| Option | Effect |
|---|---|
--nonfree | Install the NVIDIA profile that fits the detected card. Needed for NVIDIA drivers. |
--free | Install open source profiles only. NVIDIA cards are skipped with a message. |
--noconfirm | Pass --noconfirm to pacman. |
--check | Print the profile packages that are missing, without installing them. Runs without root. |
--sync | Run pacman -Sy before the install. |
--pacmanconfig <file> | Pass a pacman configuration file with --config. |
--help, -h | Print the usage. |
garuda-health runs garuda-hardware-tool --nonfree --check to decide whether it reports a missing profile (garuda-health, function that checks the drivers).
Detection
Section titled “Detection”The tool reads the PCI devices of class 03xx with lspci. It then applies these rules.
| Condition | Result |
|---|---|
/usr/bin/Xorg exists | Base profile garuda-hardware-profile-standard-x11. Otherwise garuda-hardware-profile-standard. |
systemd-detect-virt -q succeeds | Adds garuda-hardware-profile-vm. |
NVIDIA card with chip family GV, GP or GM | With --nonfree, adds garuda-hardware-profile-nvidia-580xx. |
NVIDIA card with any other chip family except GT, GF and GK | With --nonfree, adds garuda-hardware-profile-nvidia. |
NVIDIA card with chip family GT, GF or GK | No NVIDIA profile. The script comment says Older than Maxwell, no support. |
The packages that are not installed yet are passed to pacman --needed -S. Packages that are already installed are skipped.
Hardware profiles
Section titled “Hardware profiles”| Package | When it is selected | Main dependencies (from the PKGBUILD) |
|---|---|---|
garuda-hardware-profile-standard | Always, as the base for every profile | Mesa and Intel drivers, Vulkan and VA-API drivers, with their 32-bit versions |
garuda-hardware-profile-standard-x11 | Always on systems with Xorg | garuda-hardware-profile-standard, xf86-video-ati, xf86-video-amdgpu, xf86-video-nouveau |
garuda-hardware-profile-vm | Virtual machine | garuda-hardware-profile-standard, xf86-video-fbdev, virtualbox-guest-utils, open-vm-tools, xf86-input-vmmouse, spice-vdagent, qemu-guest-agent, gtkmm3 |
garuda-hardware-profile-nvidia | NVIDIA card, not GV, GP, GM, GT, GF or GK, with --nonfree | garuda-hardware-profile-standard, egl-wayland, nvidia-utils>=590, opencl-nvidia>=590, nvidia-open-dkms>=590, nvidia-prime and 32-bit versions |
garuda-hardware-profile-nvidia-580xx | NVIDIA card in the GV, GP or GM families, with --nonfree | garuda-hardware-profile-standard, egl-wayland, nvidia-580xx-utils, opencl-nvidia-580xx, nvidia-580xx-dkms, nvidia-prime and 32-bit versions |
The two NVIDIA profiles conflict with each other. Both provide GARUDA-HARDWARE-PROFILE-NVIDIA.
Files installed by the profiles
Section titled “Files installed by the profiles”| Path | Installed by |
|---|---|
/usr/lib/modules-load.d/garuda-nvidia.conf | NVIDIA profiles |
/usr/lib/modprobe.d/garuda-nvidia.conf | NVIDIA profiles |
/usr/lib/modprobe.d/garuda-nvidia-prime-powersaving.conf | NVIDIA profiles |
/usr/lib/udev/rules.d/90-nvidia-prime-powermanagement.rules | NVIDIA profiles |
/usr/lib/systemd/system/garuda-nvidia-live.service | NVIDIA profiles, linked into ght-live.target.wants |
/usr/lib/systemd/system/garuda-virtualmachine-guest-config.target | VM profile, enabled by its install script and linked into ght-live.target.wants |
/usr/lib/systemd/system/garuda-virtualbox-live.service | VM profile, linked into ght-live.target.wants |
The profiles load the NVIDIA modules and start the VM services automatically in a live session. The changelog entry for garuda-hardware-profiles says Load nvidia modules and virtualmachine services automatically when in live session.
Legacy to modern mapping
Section titled “Legacy to modern mapping”The modern profiles replace the MHWD packages. The replaces and provides arrays of garuda-hardware-profiles define the mapping.
| Old package | New package | Note |
|---|---|---|
garuda-video-linux-config | garuda-hardware-profile-standard-x11 | The x11 profile is the default because the installed drivers are unknown. |
garuda-virtualmachine-guest-config | garuda-hardware-profile-vm | |
garuda-nvidia-config, garuda-nvidia-prime-config, garuda-hardware-profile-nvidia-prime | garuda-hardware-profile-nvidia | |
garuda-hardware-profile-nvidia-closed, garuda-hardware-profile-nvidia-prime-closed | garuda-hardware-profile-nvidia-580xx | The closed packages map to the 580xx profile, not to the modern NVIDIA profile. |
mhwd-nvidia-470xx | None | Listed only in the replaces array of garuda-hardware-tool. No profile exists for it. |
The 470xx NVIDIA driver has no conversion. The tool does not detect cards that need it, and no profile package provides it.
Config files, data paths and logs
Section titled “Config files, data paths and logs”| What | Path | Notes |
|---|---|---|
| Tool | /usr/bin/garuda-hardware-tool | The script itself. |
| Update notice library | /usr/lib/garuda/garuda.shlib | Sourced by the install file to add an update notice (garudalib_add_update_notice). |
| Tool log | None | The tool prints to the terminal only (print_log, print_error). |
| Package manager log | /var/log/pacman.log | UNCONFIRMED for this tool. The code only calls pacman, the log path is the pacman default. |
The tool writes no configuration file of its own. The profiles write the files listed above.
Known limits
Section titled “Known limits”- Kepler, Fermi and Tesla NVIDIA cards (
GK,GF,GT) get no profile (garuda-hardware-tool, detection code). - The
--checkmode prints the packages that would be installed and installs nothing (garuda-hardware-tool,CHECK_ONLY). - The
post_upgradenotice namesgaruda-hardware-profiles-nvidia-closed. The profile package in the PKGBUILD isgaruda-hardware-profile-nvidia-closed, and it is replaced bygaruda-hardware-profile-nvidia-580xx(garuda-hardware-tool.install,garuda-hardware-profilesPKGBUILD). - The
post_upgradenotice tells users to runsudo garuda-hardware-tool --nonfreeafter they remove the closed profile. The notice is shown only for upgrades older than 1.2.0-2 (garuda-hardware-tool.install). - The MHWD packages are not shipped anymore. The changelog entry
Remove garuda-settings-manager, mhwd. Replace with garuda-hardware-tool and garuda-hardware-profiles.marks the change (changelogs/Past changelogs/260819.md).
Procedure
Section titled “Procedure”- Check which profile packages are missing. Run
garuda-hardware-tool --nonfree --check. The tool prints the missing packages and installs nothing. - Install the missing profiles as root. Run
sudo garuda-hardware-tool --nonfree. Use--freeinstead on a system where you do not want proprietary drivers. - Read the output for the detected GPU lines. Each detected card prints its PCI ID and vendor ID.
Related pages
Section titled “Related pages”- Garuda Health reports a missing NVIDIA profile and suggests this tool.
- Garuda Toolbox lists the system tools of Garuda Linux.
- Post-installation tasks covers the first steps after installing.
- The Arch Wiki pages NVIDIA, PRIME, Kernel module and Pacman explain the drivers, the PRIME setup, the module blacklisting and the package manager used by the tool.