i8kmon - temperature monitor


i8kmon [<options>]


The i8kmon is a daemon that monitors the cpu temperature, and control the fan speed on some Dell laptops. It does that by means of regularly reading the system temperature, and choosing appropriate speed of the fans.

The change in the speed depends on a table of threshold. Inside i8kmon the default table of thresholds is as below

set config(0) {{0 0} -1 60 -1 65}
set config(1) {{1 0} 50 70 55 75}
set config(2) {{1 1} 60 80 65 85}
set config(3) {{2 2} 70 128 75 128}

This table can be customized at ’/etc/i8kmon.conf’, which will be read everytime i8kmon service starts.

On Debian and derivated OSes, i8kmon starts in the background by default as a service.


i8kmon accepts the following command-line options when initiated by the user, not as a service:
, --nouserconfig

Doesn’t read ~/.i8kmon configfile, only /etc/i8kmon.conf.

-v, --verbose

Report hardware status and program actions on stdout.

-t, --timeout <seconds>

Specifies the interval at which the daemon checks the hardware status. Useful values are in the range of 1-5 seconds. Default is 2 seconds.


As said before, i8kmon has builtin default values of temperature thresholds. If users need, they can specify their own settings in configuration files /etc/i8kmon.conf and ~/.i8kmon. It is also possible to specify values to others variables that change i8kmon behavior.

The variables and values are as follows.
set config(i8kfan)

i8kfan executable path

set config(acpi) "acpi"

Filename of the apci executable. i8kmon uses acpi to query whether notebook is on-line or on battery.

set config(use_conf) 1

Set whether user configuration file must be read or not when user starting i8kmon. Default is 1.

set config(verbose) 0

Print verbose logs

set config(timeout) 2

Timeout. Default is 2.

set config(t_high) 80

Maximum high temperature. Default is 80.

The following variables set fans speeds. If these variables are set at config file, i8kmon will not probe for them. The probe moment turns on fans at max speed.
set status(leftspeed) "0 1000 2000 3000"

Speed values (rpm) of left fan at velocities 0, 1, 2, 3

set status(rightspeed) "0 1000 2000 3000"

Speed values (rpm) of right fan at velocities 0, 1, 2, 3

The daemon defines 4 states (0, 1, 2, 3) with different combinations of fan speeds ({0 0}, {1 0}, {1 1}, {2 2}) and for each state is defined the temperature thresholds which cause the fans to switch to a higher or lower state. Each state can have different thresholds for operation on ac power or on battery. For example the following configuration:

set config(0) {{0 0} -1 60 -1 65}
set config(1) {{1 0} 50 70 55 75}
set config(2) {{1 1} 60 80 65 85}
set config(3) {{2 2} 70 128 75 128}

defines state 0 with both fans off, high threshold of 60 degrees (65 on battery) and low threshold -1 degrees, which is actually never reached since 0 is the lowest temperature. When the high temperature threshold is reached the program switches to state 1 (left low, right off) which has a high threshold of 70 degrees and a low threshold of 50 degrees. If on ac power the temperature drops below 50 the program will switch back to state 0, if it rises above 70 it will enter state 2, and so on. For better operation the temperature ranges should be overlapping with an hysteresis of at least 10 degrees, i.e. 1={50 70},2={60 80} is better than 1={50 70},2={70 80}. It must be remembered that the low threshold of state 0 must be -1 degrees and the high threshold of state 3 must be 128 degrees.

If the laptop has only one fan, it is better to specify a ’-’ instead of the fan speed of the missing fan. For example:

set config(2) {{1 -} 60 80 65 85}




Vitor Augusto <vitorafsr [AT]>
Massimo Dal Zotto <dz [AT]>


i8kmon and all the i8kutils programs, scripts and other files are distributed under the GNU General Public License (GPL). On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in ’/usr/share/common-licenses/GPL’.