i8kmon(1)

NAME
i8kmon - a monitor for fan control on Dell laptops based on cpu temperature

SYNOPSIS
i8kmon [<options>]

DESCRIPTION
The i8kmon is a daemon to monitor the cpu temperature and control the fan status on Dell laptops. It does that by means of regularly reading the system temperature, and choosing apropriate state (speed) of the fan biased on a table.

Inside i8kmon there is a default table of thresholds with the values 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.

In fact, the monitor will run in background as a daemon if the option --daemon is given. The i8kmon is just started in the background by default it is invoked as a service in Debian and derivated OSes.

If no option is given, the program just monitors the cpu temperature. The automatic control can be enabled manually with the --auto option.

i8kutils was not designed to discover the type of fan a Dell system has.

You can discover which fans exist using 'i8kfan'. Issue

    $ i8kfan 0 0

to turn the fans off. Then issue

    $ i8kfan 2 -

to try to turn on the left fan. If you hear some sound, then the left fan exist. Repeat the steps with '$ i8kfan 0 0; i8kfan - 2' to discover if the right fan exist.

OPTIONS

The program accepts the following command-line options:

-a, --auto
    Monitor cpu temperature and fan status and control automatically the fans.

-na, --noauto
    Monitor cpu temperature and fan status but don't control automatically the fans. This is the default setting.

-d, --daemon
    Run the program in daemon mode, i.e. without the user interface.

-nd, --nodaemon
    Don't run the program in daemon mode, i.e. open the user interface. This is the default setting.

-nc, --nouserconfig
    Don't attempt to source the ~/.i8kmon configfile, only /etc/i8kmon.conf.

-v, --verbose
    Report hardware status and program actions on stdout.

-g, --geometry <geometry>
    Specifies the geometry of the applet window. Geometry should be 24x24, 36x36 or 48x48 to fit the size of the gnome panel.

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

-u, --unit C|F
    Specifies the temperature display unit. Default is C (Celsius). This option affects only the value shown in the applet. All other temperature values are always in Celsius.

CONFIGURATION

The program has builtin defaults to temperature thresholds but users can specify their own settings in configuration files /etc/i8kmon.conf and ~/.i8kmon. It is also possible to specify values to others internal variables that change the behavior of i8kmon.

The variables and values are as follows.

set config(sysconfig)   /etc/i8kmon.conf
    System configuration file

set config(userconfig)  ~/.i8kmon
    User configuration file

set config(i8kfan)  /usr/bin/i8kfan
    i8kfan executable path

set config(acpi)    "acpi"
    Filename of the apci executable

set config(geometry)    {}
    Geometry of applet

set config(use_conf)    1
    Set whether user configuration file must be read or not

set config(auto)    1
    Set i8kmon behavior to auto

set config(daemon)  1
    Load i8kmon as a daemon

set config(verbose) 0
    Print verbose logs

set config(timeout) 5
    Timeout

set config(unit)    C
    Unit of measure

set config(t_high)  80
    Maximum high temperature

set config(min_speed)   2000
    Minimum speed

The following variables and values do not exist with default values, they are probed at every startup of i8kmon service. If these variables are set at config file, i8kmon will not probe for them. These variable avoid i8kmon turn on fans at max speed at every startup which, for some users, is a annoying behavior.

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 with different fan speeds ({0 0}, {1 0}, {1 1}, {2 2}) and for each state are defined the temperature thresholds which cause the switching to a higher or lower state. Furthermore each state can have different thresholds for operation on ac power or 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, which is actually never reached since 0 is the lowest state. When the high 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 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 and the high threshold of state 3 must be 128.

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}

If you want to use it as a daemon you must create the config file yourself. In this case, the --nouserconfig option can sometimes also help by limiting it to sourcing /etc/i8kmon.conf (and not ~/.i8kmon).

FILES

/proc/i8k
/etc/i8kmon.conf
/$HOME/.i8kmon

AUTHORS

Vitor Augusto <vitorafsr@gmail.com>
Massimo Dal Zotto <dz@debian.org>

COPYRIGHT

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

SEE ALSO

i8kctl(1)