Power optimizations in a Laptop running FreeBSD

An annoying problem that I always had while running FreeBSD on my Dell Inspiron 15 5510 is the high temperature and fan speed. Doesn’t matter if it’s a live medium or post-installation — the average CPU temp is over 60 degrees Celsius.

With FreeBSD 15.0 (released December 2025) and the FreeBSD Foundation’s laptop project, things have improved significantly. Here’s what works.

Checking CPU Temperature

First, load the Intel Core temperature sensor driver:

kldload -v coretemp

Then check the temperature with:

sysctl dev.cpu | grep temperature

To load this automatically at boot, add to /boot/loader.conf:

coretemp_load="YES"

Power Management with powerd

FreeBSD ships with powerd, a daemon that dynamically adjusts CPU frequency based on load. Enable it in /etc/rc.conf:

powerd_enable="YES"
powerd_flags="-a hiadaptive -b adaptive"

This sets the CPU to hiadaptive mode on AC power (favors performance but still scales) and adaptive on battery (favors power saving).

C-States and Power Saving

Enable deeper CPU sleep states by adding to /etc/sysctl.conf:

hw.acpi.cpu.cx_lowest=Cmax

New in FreeBSD 15: Modern Sleep States

FreeBSD 15 brings new power management features from the Foundation’s laptop initiative:

  • s2idle (suspend-to-idle) support for modern standby
  • New SPMC (System Power Management Controller) driver for s0ix sleep states
  • Work-in-progress CPPC (Collaborative Processor Performance Control) for AMD processors — enabling finer-grained performance/efficiency control

Suspend and Resume

For laptops, suspend/resume support can be tested with:

acpiconf -s 3

If it works, you can bind it to your laptop lid by adding to /etc/sysctl.conf:

hw.acpi.lid_switch_state=S3

Results

After applying these changes, my Dell Inspiron dropped from a constant 60+ degrees down to around 40-45 degrees at idle, and the fan became much quieter. The combination of powerd with proper C-state configuration makes a noticeable difference on FreeBSD laptops.

More details: coretemp(4), powerd(8), FreeBSD Wiki: Tuning Power Consumption

,

Leave a comment

Discover more from /root

Subscribe now to keep reading and get access to the full archive.

Continue reading