Fixing constantly running fans on Dell laptops running Ubuntu 16.04

If you are reading this then you surely be experiencing a loud fan noise when running Ubuntu on your Dell laptop. This is more common in 3rd or older generation of Dell laptops. I am having a Dell Inspiron 3521 with a 3rd generation processor running Ubuntu 16.04 and here is how I solved the issue.

To download and install i8kutils open terminal and run

$sudo apt-get install i8kutil

Next you need to add i8k to your modules, for that open the module file with your favorite text editor (here I have used nano)

$sudo nano /etc/modules

and add “dell-smm-hwmon” ( without quotes) to the file and save it.
 (Note that earlier Linux kernels used “i8k” as the i8k kernel module but from Ubuntu 16.04 the kernel module is been changed to “dell-smm-hwmon”)

Next to make Linux always load the module with the parameters, create the file “/etc/modprobe.d/dell-smm-hwmon.conf” by using

$sudo nano /etc/modprobe.d/dell-smm-hwmon.conf

add the content below and save the file.

options dell-smm-hwmon restricted=0

Now restart your computer or run the following to make dell-smm-hwmon run

$sudo modprobe dell-smm-hwmon restricted=0

Next we need to create a i8kmon.conf file which tells the i8kmon utility how to behave, for that create the file from below command

$sudo nano /etc/i8kmon.conf

and paste the following configuration file and save it.

# Sample i8kmon configuration file (/etc/i8kmon.conf, ~/.i8kmon).
# External program to control the fans
set config(i8kfan) /usr/bin/i8kfan
# Run as daemon, override with --daemon option
set config(daemon) 0
# Automatic fan control, override with --auto option
set config(auto) 1
set config(nouserconfig) 1
# Applet geometry, override with --geometry option
set config(geometry) {48x48}
# Report status on stdout, override with --verbose option
set config(verbose) 1
# Status check timeout (seconds), override with --timeout option
set config(timeout) 5
# Temperature display unit (C/F), override with --unit option
set config(unit) C
# Temperature threshold at which the temperature is displayed in red
set config(t_high) 80
# Temperature thresholds: {fan_speeds low_ac high_ac low_batt high_batt}
# These were tested on the I8000. If you have a different Dell laptop model
# you should check the BIOS temperature monitoring and set the appropriate
# thresholds here. In doubt start with low values and gradually rise them
# until the fans are not always on when the cpu is idle.
set config(0) {{-1 0} -1 60 -1 65}
set config(1) {{-1 1} 50 70 55 75}
set config(2) {{-1 1} 60 80 65 85}
set config(3) {{-1 2} 70 128 75 128}
# end of file

Note that this is the configuration I am using for my lap (Dell inspiron 3521) which is having only a right fan. If your laptop contains two fans, then change the fan speed as below

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

For more information read the i8kutils man page

Now you will be able to run i8kmon from terminal as below and your fans will get start to work according to the above configuration file.

i8kmon

If you need it to run at system startup, add the command “i8kmon” (without quotes) in “Startup Applications”.