I collect many informations how to control the fans under ubuntu now. Here is what works for me at the moment.
Problems:
1st Problem: Without additional fan-control tool my Dell Latitude E7440 runs quiet until a special temeperature and then speeds up the fan to full speed forever.
2nd Problem:With i8kmon installed and the service started, the fan-control lasts only a few seconds and is then controled again from BIOS.
3rd Problem: With fan-control tool i8kmon installed with default settings my Latitude runs very quiet the whole time. But because dell has a CPU-Throttling-Policy which you are not able to control, the Latitude runs until a special temperature and then the BIOS scales down the CPU to the minimum frequency. The result is a freezing Desktop until the temperature cools down to a ridiculously low point at about 45°C.
Solutions:
1st: Install i8kutils and lm-sensors
sudo apt-get install i8kutils lm-sensors
2nd: Disable BIOS-Fan-Control (Without Warranty)
sudo apt-get install gcc-4.6-multilib
(on 16.04 I need to change the above line to „sudo apt-get install gcc-multilib„)
cd ~
mkdir .bin
cd .bin
sudo apt-get source i8kutils
sudo apt-get build-dep i8kutils
tar xf i8kutils_1.41.tar.xz
cd i8kutils-1.41
gcc -g -O2 -Wall -I. -o smm -m32 smm.c
sudo ./smm 30a3
sudo cp smm /usr/sbin/
In the next step, we setup i8kmon to stop the bios-fan-control automatically
sudo nano /etc/init.d/i8kmon
Find the following:
case „$1“ in
start)
log_daemon_msg „Starting $DESC“ „$NAME“
And change it into:
case „$1“ in
start)
/usr/sbin/smm 30a3
log_daemon_msg „Starting $DESC“ „$NAME“
In the same file find the following:
stop)
log_daemon_msg „Stopping $DESC“ „$NAME“
And change it into:
stop)
/usr/sbin/smm 31a3
log_daemon_msg „Stopping $DESC“ „$NAME“
This will disable Bios-Fan-Control directly while starting i8kmon. And enable it while shutting down the service i8kmon.
3rd: To prevent scaling down the CPU edit the configuration of i8kmon
find the example-file i8kmon.conf
sudo find / -name ‚i8kmon.conf‘
In my case i find the file in my user-home: /home/rod/.bin/i8kutils-1.41/i8kmon.conf
Now copy the file to /etc/i8kmon.conf. Change your directoryname!
cp /home/rod/.bin/i8kutils-1.41/i8kmon.conf /etc/
Modify the file with nano:
sudo nano /etc/i8kmon.conf
Change to the following:
# Automatic fan control, override with –auto option
set config(auto) 1
# Automatic fan control, override with –auto option
set config(auto) 1
set config(0) {{-1 0} -1 30 -1 30}
set config(1) {{-1 0} 30 50 30 50}
set config(2) {{-1 1} 45 60 45 60}
set config(3) {{-1 2} 55 128 55 128}
# end of file
The last block in this file controls the fan-speed based on temperatures. Here is how to read the block:
{{ -1 0} -1 30 -1 30}
{{ first_fan_speed second_fan_speed} low_temp_on_ac high_temp_on_ac low_temp_on_bat high_temp_on_bat}
Because the Dell Latitude has no first fan, we can setup the first fan always to „-1“
The temperatures are the first test now. I will Update this post after gathering some experience.