FreeBSD Power Management

Last edited on 2025-05-25 Tagged under  #freebsd   #bsd 

Part of the "Exploring FreeBSD on a Laptop" series.

Tested on FreeBSD 14.2

When I installed FreeBSD on my Thinkpad, I enabled powerd(8) for power management features that would be especially useful on a laptop. However, for laptops using an Intel CPU, this utility has been superseded by the hwpstate_intel(4) driver.

Since I have a relatively modern (8th Gen) CPU, I can use this driver for the Intel Speed Shift feature set that exposes the ability for the hardware to dynamically vary the core frequencies, including on a per core basis.

To determine if Speed Shift is being used:

# sysctl dev.cpufreq.0.freq_driver

The output should be similar to the following:

dev.cpufreq.0.freq_driver: hwpstate_intel0

This indicates that hwpstate_intel is in use. On such systems, dev.cpu.%d.freq_levels will show only the maximum CPU frequency, and will indicate a power consumption level of -1.

The current CPU frequency can be determined by examining:

# sysctl dev.cpu.0.freq_levels dev.cpu.0.freq
dev.cpu.0.freq_levels: 1900/-1
dev.cpu.0.freq: 798

NOTE
Since hwpstate_intel is being used I disabled powerd in rc.conf by commenting out the entry:

#powerd_enable="YES"

For more information, including on how to balance performance and energy use, and on how to disable this driver, refer to the hwpstate_intel man page, in addition to power management in general as described in the Handbook.

You can like, share, or comment on this post on the Fediverse 💬

Thanks for reading! Read other posts?

» Next: Brightness and Sound on FreeBSD

« Previous: Configure SSH on FreeBSD for Passwordless Logins to Servers