Larvitz Blog

FreeBSD, Linux, all things cleanly engineered

FreeBSD 15.0 on the ThinkPad T480 — Efficient, Stable, and 8 Hours on Battery



Introduction

The ThinkPad T480 has long had a reputation for being one of the most practical and robust laptops for engineers and developers. It’s built like a tank, easy to maintain, and works brilliantly with open-source operating systems.

Over the last few months, I’ve been tuning and optimizing FreeBSD on this machine with a very clear goal in mind:
reach the best possible power efficiency without sacrificing performance or usability.

After a good amount of trial and error, firmware testing, and sysctl tuning, I finally reached a sweet spot. A setup that reliably gives me 6–8 hours of real battery life under normal workloads.

This post documents that configuration for anyone in the BSD community who wants to make their ThinkPad a genuinely mobile FreeBSD workstation.

Screenshot of FreeBSD desktop


Hardware Overview

  • Model: Lenovo ThinkPad T480
  • CPU: Intel Core i7-8550U (4C/8T, Kaby Lake-R)
  • GPU: Intel UHD Graphics 620 (integrated)
  • Display: 1920×1080 (IPS, 14”)
  • Wireless: Intel AX210 (iwlwifi)
  • Storage: NVMe SSD (ZFS root)
  • Memory: 32 GiB DDR4
  • Battery: 72 Wh extended

The combination of efficient hardware and modern drivers from the FreeBSD 15 branch provides an excellent base to work with.


Drivers and Firmware

I’m using the latest driver sets available from the ports tree:

drm-latest-kmod-6.9.1500068
gpu-firmware-intel-kmod-kabylake-20230625.1500501
wifi-firmware-iwlwifi-kmod-ax210-20241017.1500501_2

These make the Intel GPU and Wi-Fi adapters fully functional with modern capabilities: RC6, PSR, FBC, and full 802.11ac/ax performance.


System Configuration

FreeBSD’s configuration model is simple and transparent, which makes power tuning straightforward once you understand the fundamentals.

/etc/rc.conf

hostname="christop-bsd"

# Wireless configuration
wlans_iwlwifi0="wlan0"
ifconfig_wlan0="WPA DHCP"
create_args_wlan0="wlanmode sta regdomain ETSI country DE mode 11na"
ifconfig_wlan0_ipv6="inet6 accept_rtadv"

# Networking bridge (for bhyve)
cloned_interfaces="bridge0"
ifconfig_bridge0="inet 192.168.87.1 netmask 255.255.255.0"

# Power management
powerd_enable="YES"
powerd_flags="-a hiadaptive -b adaptive -m 400 -M 4000"
performance_cx_lowest="Cmax"
economy_cx_lowest="Cmax"

# Driver autoloads
kld_list="i915kms"

# Services
sshd_enable="YES"
zfs_enable="YES"
seatd_enable="YES"
dbus_enable="YES"
sddm_enable="YES"
webcamd_enable="YES"
pf_enable="YES"
pflog_enable="YES"
dnsmasq_enable="YES"
pcscd_enable="YES"
gateway_enable="YES"
clear_tmp_enable="YES"

# bhyve
vm_enable="YES"
vm_dir="zfs:zroot/bhyve"

# Misc
moused_nondefault_enable="NO"
dumpdev="NO"

The key piece here is powerd, with different adaptive modes for AC and battery, letting the CPU drop down to deep C-states efficiently.
XFCE and lightweight services complete the power-slim system profile.


/boot/loader.conf

# Kernel features
kern.geom.label.disk_ident.enable="0"
kern.geom.label.gptid.enable="0"

# Essential modules
zfs_load="YES"
cryptodev_load="YES"
cuse_load="YES"
cpuctl_load="YES"
coretemp_load="YES"
nvme_load="YES"

# Graphics and power tuning
i915kms_load="YES"
drm.i915.enable_rc6=7
drm.i915.enable_fbc=1
drm.i915.lvds_downclock=1
drm.i915.enable_psr=1
compat.linuxkpi.i915_disable_power_well="0"

# NVMe and PCI power tweaks
hw.nvme.use_nvd="0"
hw.pci.do_power_nodriver=3
hw.pci.do_power_suspend=1

These settings allow the GPU and PCI devices to enter the lowest power states reliably.
Together with powerd, they make a significant difference in idle and light load power draw.


Desktop Environment

  • Desktop: XFCE 4.20
  • Window Manager: Xfwm4 (X11)
  • Theme: Greybird-Dark
  • Icons: elementary-xfce
  • Fonts: Noto Sans (11 pt)
  • Terminal font: UbuntuMono Nerd Font (11 pt)

XFCE is lightweight, fast, and power-friendly - no unnecessary daemons, no heavy compositing. It feels modern and stays responsive even under load.


Real-World Results

Scenario Power Draw Notes
Idle (Wi-Fi on, 40 % brightness) 4–5 W ultra-low power idle
Video playback (720p) 6–7 W stable playback via Intel GPU
Moderate development workload 10–12 W perfect balance
make buildkernel 18–22 W all cores fully utilized

With the 72 Wh extended battery, real-world battery time ranges from 6 to 8 hours depending on activity, brightness, and Wi-Fi intensity.

Suspend and resume are fully functional and reliable, one of the last major milestones that used to be tricky on FreeBSD laptops.


Expert Notes & Additional Tweaks

  • Enable ZFS compression (lz4) and disable atime to cut down write I/O.
  • Keep firmware packages current using pkg upgrade.
  • Consider running powerdxx if you want even finer CPU scaling — though base powerd does a great job here.

Conclusion

FreeBSD 15.0 marks a huge step forward for laptop support.
On the ThinkPad T480, everything from suspend to Wi-Fi to graphics just works, and with the right configuration, you can enjoy Linux-level power efficiency combined with FreeBSD’s rock-solid stability.

It’s a joy to use this machine daily now: clean, simple, and efficient. True to FreeBSD’s spirit.


Thanks to everyone in the BSD community pushing kernel and driver work - this level of polish on a laptop would’ve been unthinkable just a few releases ago.


Comments and feedback welcome via Mastodon: @larvitz@bsd.cafe