WolOS
Reference contents

Reference · Desktop and system

Hardware and drivers

One catalogue decides the driver, firmware and options for each device.

On this page

What it is

A single table inside WolOS maps each device (by bus, vendor and id) to its Linux driver, kernel modules, firmware packages and options. Boot, Settings and the wol hw command all read that same table.

Why

Driver choice spread over shell scripts drifts and breaks quietly. One tested table means a device behaves the same at install, at every boot and when a disk moves to another computer.

How

  1. Open Settings > Hardware to see every device with its state. A device that needs something has a Fix button; Fix installs what is missing and nothing else.
  2. Or list your devices in Terminal: wol hw. You see each device with its driver and a state: ready, needs-driver, needs-firmware or unsupported.
  3. See only the problems: wol hw status. You see the devices that need something, each with the fix.
  4. Apply the fix: wol hw fix loads missing drivers (administrator password); wol hw fix --yes also installs the missing packages.
  5. NVIDIA cards: the drivers are installed online at first boot, so connect to a network for the first start. When the driver is in, a notification asks you to restart.

    A notification from WolOS: Graphics driver installed. Restart to finish setting up your graphics card. With a Restart button.

If something goes wrong

What you seeWhat to do
A device is needs-driverThe module is not loaded or its package is missing: wol hw fix loads it (administrator); wol hw fix --yes also installs packages.
A device is needs-firmwareThe firmware package is missing: wol hw fix --yes.
A device is unsupportedThe module is not in this kernel or the row is marked unsupported; the one-line note says why.
NVIDIA graphics missing after installThe drivers are installed online at first boot. Connect to a network and restart, or run wol hw fix --yes.
No graphics device for a gamewol hw status lists problems only and the fix.

Games · Optional modules (Local AI) · Recovery

Reference

Decision record: ADR 0016 (Arch base; firmware from Arch packages).

One catalogue (crates/core/src/hardware/catalog.rs) decides, per device, the Linux driver, kernel modules, Arch firmware/driver packages and modprobe options. Boot, wol hw and helpers read the same table; no shell scripts pick drivers.

Detection (wol_core::hardware::read, Host trait, 2 s per command, never a shell)

SourceGives
/sys/bus/pci/devices/*/{vendor,device,class}, driver linkPCI ids, class, bound driver
lspci -mm (optional)PCI device names
/sys/bus/usb/devices/* (idVendor, idProduct, bDevice*, interfaces bInterface* + driver)USB ids, interface classes, drivers (readable without root)
/sys/bus/acpi/devices/*/modaliasACPI _HID/_CID (I2C HID PNP0C50, AMD I2C)
/sys/class/backlightbacklights
/proc/modules, /usr/lib/modules/<release>/modules.{dep,builtin}loaded and available modules (built-ins count as loaded)
pacman -Qqinstalled packages
/proc/cpuinfo, cpu0/cpufreq/scaling_driverCPU vendor and model, cpufreq driver

Matching: bus, vendor, device range, class prefix. Narrowest matching range wins, then a named vendor over any vendor, then the longest class prefix; ties go to the earlier row. Module names compare with - and _ alike.

States (shared::hardware, snapshot file)

StateWhenHint
readydriver bound, firmware and packages present-
needs-drivermodule not loaded, or its package missingwol hw fix / wol hw fix --yes
needs-firmwarefirmware package missingwol hw fix --yes
unsupportedmodule not in this kernel, or row markedone-line note

CLI

CommandDoes
wol hw, wol hw list [--json]every device: kind, name, driver, state (table on a tty, JSON otherwise)
wol hw status [--json]problems only and the fix
wol hw fix [--yes]modprobe via wol-admind hw-load (catalogue modules only); packages via pkg-install only with --yes
wol hw boot [--online]boot service only (root); --online on first boot: pacman -S --needed --noconfirm the missing catalogue packages first
wol sys hwsame devices as wol hw list --json (System API topic, cached 30 s)

Boot (wolos-hw.service, every boot: a disk moves between machines)

udev autoloads most drivers before; its loads count as loaded.

StepAction
packages--online only: install what the catalogue lists as missing (NVIDIA), then re-read the hardware
options/etc/modprobe.d/wolos-hw.conf: options lines (nvidia_drm modeset=1 fbdev=1), written before any load
boot list/etc/modules-load.d/wolos-hw.conf: catalogue modules of the supported devices present
modulesmodprobe each missing catalogue module now
snapshotwritten for wol hw and Settings

Written files start with a WolOS header. Unchanged files are not rewritten. Always exits 0. Microcode (intel-ucode/amd-ucode) loads from the initramfs.

NVIDIA

GPU (PCI device)DriverPackages
Turing and newer (0x1e00+)nvidia open modules (nvidia, nvidia_modeset, nvidia_drm, nvidia_uvm)nvidia-open, nvidia-utils (installed online at first boot if missing)
oldernouveaulinux-firmware-nvidia

Session environment (GBM, GLX vendor, VA-API, PRIME offload): crates/realtime/src/gpu_env.rs.

Tests: crates/core/src/hardware/tests.rs, crates/controller/tests/hw.rs.

From the developer documentation, wonderlandos/wolos docs/modules/hardware.md.