Title: OpenBSD 7.1: fan noise and high temperature solution | |
Author: Solène | |
Date: 21 April 2022 | |
Tags: openbsd obsdfreqd openbsd71 | |
Description: Here is a fix if your OpenBSD 7.1 system is drawing too | |
much power, has its fan always on or the CPU temperature is too high | |
# Introduction | |
OpenBSD 7.1 has been released with a change that will set the CPU to | |
max speed when plugged to the wall. This brings better performance and | |
entirely let the CPU and mainboard do the frequency throttling. | |
However, it may doesn't throttle well for some users, resulting in huge | |
power usage even when idle, heat from the CPU and also fan noise. | |
As the usual "automatic" frequency scheduling mode is no longer | |
available when connected to powergrid, I wrote a simple utility to | |
manage the frequency when the system is plugged to the wall, I took the | |
opportunity to improve it, giving better performance than the previous | |
automatic mode, but also giving more battery life when using on a | |
laptop on battery. | |
obsdfreqd project page | |
# Installation | |
Since OpenBSD 7.2 obsdfreqd is available as a packge. An extra | |
important step is to remove the automatic mode in apmd which would kill | |
obsdfreqd, you can keep apmd for its ability to run commands on | |
resume/suspend etc... | |
```shell | |
pkg_add obsdfreqd | |
rcctl ls on | grep ^apmd && rcctl set apmd flags -L && rcctl restart apmd | |
rcctl enable obsdfreqd | |
rcctl start obsdfreqd | |
``` | |
# Configuration | |
No configuration are required, it works out of the box with a battery | |
saving profile when on battery and a performance profile when connected | |
to power. | |
If you feel adventurous, obsdfreqd man page will give you information | |
about all the parameters available if you want to tailor yourself a | |
specific profile. | |
Note that obsdfreqd can target a specific temperature limit using -T | |
parameter, see the man page for explanations. | |
# FAQ | |
Using hw.perfpolicy="auto" sysctl won't help, the kernel code entirely | |
bypass the frequency management if the system is not running on | |
battery. | |
sched_bsd.c line shipped in OpenBSD 7.1 | |
Using apmd -A doesn't solve the issue because apmd was simply setting | |
the sysctl hw.perfpolicy to auto, which as explained above set the | |
frequency to full speed when not on battery. |