| 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. |