The headline number in Christian Hofstede-Kuhn’s account is an idle CPU-package reading of about 3 W in powermon — on an eight-year-old, four-core ThinkPad running FreeBSD 15.1-RELEASE-p4 with Xfce 4.20. His framing is that the machine has become uninteresting: Xfce session, 5 GHz Wi-Fi, video in Firefox or Chromium, a Zoom call, Bluetooth audio, a Git signature from an OpenPGP card, “crazily stable”. Boring is the goal of this kind of setup, and the post’s value is in the specific places where boring had to be earned.

Graphics and boot policy

The desktop runs on the Intel UHD 620 via i915kms with the drm-latest-kmod package and matching Kaby Lake firmware; the discrete MX150 sits on the PCI bus unused. The rc.conf line loads i915kms, coretemp, cpuctl, cuse and nullfs, and enables dbus, sddm and seatd (a Wayland session is kept available; the Xfce session itself is X11 with the modesetting driver, glamor, DRI 3). His loader.conf retains compat.linuxkpi.i915_disable_power_well=0, which he found necessary for reliable display and suspend on this laptop, plus the fairly aggressive hw.pci.do_power_nodriver=3 and hw.pci.do_power_suspend=1 for unclaimed devices. The warning he attaches is the right one: these are his machine’s settings, not T480 defaults — change one at a time and keep a boot environment.

An open laptop with a blank screen has exposed mechanical components in its base, including two large wheels, shafts, wiring, and a motor.

Wi-Fi: trust the negotiated line, not the box

The card is an Intel AX210, firmware from wifi-firmware-iwlwifi-kmod-ax210, configured for regdomain ETSI, country DE. When he checked, ifconfig showed an association on channel 36 at 5180 MHz, VHT/80, 802.11ac. That is a working 5 GHz connection — and, he stresses, nothing more. A card marketed as Wi-Fi 6E does not imply 6 GHz or even Wi-Fi 6 operation; the negotiated channel and media line is the measurement, the product name is not. He has also declined speculative iwlwifi power-save knobs, preferring to check the link, route, CPU idle state and processes first.

Video: supported is not used

The libva-intel-media-driver exposes H.264, HEVC and VP9 decoding through VA-API on this GPU — not AV1. vainfo against /dev/dri/renderD128 tells you what the driver can decode; it says nothing about what a browser did decode. Chromium demonstrated the gap: chrome://gpu looked healthy while an H.264 test clip still ran through FFmpegVideoDecoder in software. The fix was launching with --render-node-override=/dev/dri/renderD128 (placed in a per-user desktop-file override), after a full quit and relaunch; chrome://media-internals then reported VaapiVideoDecoder and kIsPlatformVideoDecoder: true for a controlled 720p H.264 clip. Sending a URL to an already-running process would have proven nothing.

Filmstrips wind through hand-cranked reels and a large computer chip, with miniature figures beside a lever and the chip.

Firefox needed its own preferences: VA-API enabled, AV1 disabled, hardware decoding and WebRender forced. The proof again came from a disposable profile playing the same local clip while the decoder log reported successful VA-API initialization and decoded frames. The practical caveat: a site that serves AV1 forces software decoding on this GPU regardless of browser settings. The codec, not the browser, decides the outcome.

Bluetooth audio, the long way

Getting a Creative MUVO 2c speaker into Xfce’s volume control takes a chain: Bluetooth controller → paired speaker → FreeBSD Bluetooth audio → virtual_oss on /dev/dsp9 (48,000 Hz, 16-bit, 2-channel, 16 ms buffer) → a PulseAudio OSS sink → applications. virtual_oss is in the base system on 15.1; a package adds only the Bluetooth backend, and nothing starts at boot. His connect script loads module-oss for dsp9, stacks a module-remap-sink on top so the speaker gets its own volume (set to 70 percent) that Xfce’s slider actually controls, and makes that the default; the stop path returns the default to dsp0. Streams already playing on the laptop speakers stay put — a running video needs a restart or a manual move in pavucontrol.

The rest of the setup — ZFS, pf, a private VM network, chezmoi-managed dotfiles, the Rust OpenPGP card stack living under ~/.cargo/bin for SSH and Git, coding agents — is listed in his notes for other T480 owners, with one recurring instruction that applies beyond this laptop: verify the decoder’s log, the negotiated channel, the idle watts. The claim “it works” is cheap; his version comes with the command that checks it.