Linux: Dell Laptop Fan Control And Get CPU Temperature

by on May 16, 2013 · 27 comments· LAST UPDATED May 16, 2013

in , ,

I have installed Debian or Ubuntu Linux on Dell Inspiron / Latitude / Precision / Vostro laptop. How do I see the current CPU temperature? How do I control and see fan status on Dell laptop?

Tutorial details
DifficultyIntermediate (rss)
Root privilegesYes
Requirementsi8k driver
Estimated completion timeN/A
You need to use the i8kfan and sensors commands to get the following information on Dell laptop powered by Linux operating systems:

  1. Cpu temperature
  2. Left or right fan status
  3. Left or right fan speed
  4. Ac power status
  5. Fn buttons status

Say hello to i8k driver

You need to load a driver called i8k. It is used for accessing SMM BIOS on Dell laptops. It is well supported on business class Dell laptop modules such as Latitude, Inspiron, Vostro and so on. This module is included with Linux kernel version 3.0 or above.

How do I load the driver?

Type the following modprobe command to load the i8k driver:
$ sudo modprobe -v i8k
OR
# modprobe -v i8k
Sample outputs:

insmod /lib/modules/3.5.0-30-generic/kernel/drivers/char/i8k.ko

Install i8kutils package on Debian / Ubuntu

Open a terminal and type the following command:
$ sudo apt-get install i8kutils
Sample outputs:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  i8kutils
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/35.4 kB of archives.
After this operation, 184 kB of additional disk space will be used.
Selecting previously unselected package i8kutils.
(Reading database ... 256376 files and directories currently installed.)
Unpacking i8kutils (from .../i8kutils_1.33_amd64.deb) ...
Processing triggers for man-db ...
Processing triggers for ureadahead ...
Setting up i8kutils (1.33) ...
 * Not starting. Disabled via /etc/default/i8kmon.
 * Not starting. Disabled via /etc/default/i8kbuttons.

Edit the file /etc/default/i8kbuttons and /etc/default/i8kmon and set ENABLED to 1:

ENABLED=1

Alternatively, use the sed command to do all your dirty work:

 
sed -i.bak 's/ENABLED=0/ENABLED=1/' /etc/default/{i8kmon,i8kbuttons}
 

Start the service (this is equivalent of running the modprobe -v i8k command):
# /etc/init.d/i8kmon start
Sample outputs:

 * Starting Dell Inspiron fan/cpu-temperature monitor i8kmon             [ OK ] 

How do I see the current status?

Type the following command
$ i8kctl
Sample outputs:

1.0 (null) XYZABC123 43 1 1 77130 78120 0 -1

Where,

  1. 1.0 i8k format version
  2. (null) bios version
  3. XYZABC123 machine id (Dell serial number)
  4. 43 cpu temperature
  5. 1 left fan status
  6. 1 right fan status
  7. 7713 left fan speed
  8. 7812 right fan speed
  9. 0 ac power status
  10. -1 : fn buttons status

Just print the CPU temp, enter:
$ i8kctl temp
Sample outputs:

52

Controlling fan speed on Dell laptop

First, just print the fan status info:
$ i8kctl fan
Sample outputs:

1 1

The fan command can accept two optional parameters which specify the new fan state for left and right fans. The state parameter can be:
Where,

  1. 0 : turn the fan off (not recommended)
  2. 1 : set low speed
  3. 2 : set high speed
  4. - : don't change the state of this fan

For example, the following command sets the left fan (usually used by CPU) to high speed and leaves the right unchanged:
$ i8kctl fan 2 -
In this example, sets the left fan (usually used by CPU) to high speed and leaves the left unchanged:
$ i8kctl fan - 2
The following will set both fans to low speed:
$ i8kctl fan 1 1
This is equivalent of running the following commands:

 ## the syntax is ##
i8kfan leftFan rightFan
 
# Set left fan on high and leaves the right unchanged
i8kfan 2 -
 
# Set right fan on high and leaves the left unchanged
i8kfan - 2
 
# Set both fans to low 
i8kfan 1 1
 

Please note that the service /etc/init.d/i8kmon starts i8kmon in daemon mode. So setting the speed with i8kfan is pointless since the daemon will override the speed with its own value on fly as per system temperature.

Using sensors command

First, install and configure lm_sensors package as described here and type the following command to see information about your FAN and cpu core temperature:
$ sensors
Sample outputs:

Fig.01: sensors command in action -  show the current readings of all sensor chips on Dell laptop

Fig.01: sensors command in action - show the current readings of all sensor chips on Dell laptop

I also suggest that you use the acpi -V command to see the current battery status and thermal temperature under Linux operating systems.

See also
TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 27 comments… read them below or add one }

1 Lee May 16, 2013 at 9:34 am

How this would work for Dell XPS variants?

Reply

2 nixCraft May 16, 2013 at 11:43 am

It should work as Ubuntu 12.04 LTS is official supported on many XPS variants. Why not try it out the commands and let us know the result?

HTH.

Reply

3 M. Minhazul Haque May 16, 2013 at 9:54 am

Great article indeed. Would you please correct the following line?

Start the service (this is equivalent of running the modprobe -v i8k command):
# /etc/init.d/i8kmon start

The start argument was missing.

Reply

4 nixCraft May 16, 2013 at 11:44 am

The faq has been updated. I appreciate your post.

Reply

5 SuilAmhain May 16, 2013 at 12:34 pm

Great Article. FYI, I always had stress with this on my Dell Studio 1735. systems locks etc…

Reply

6 PDK May 17, 2013 at 3:23 pm

Is there any module for ASUS Laptops ??

Reply

7 nixCraft May 17, 2013 at 5:12 pm

Please check the following wiki page and search for Asus:

http://www.lm-sensors.org/wiki/Devices

Try installing lm_sensors package.

HTH

Reply

8 alex June 13, 2013 at 4:16 pm

I use fedora and I got a dell laptop yesterday. Not using the dedicated graphics seems to do the trick, but the simple fact of the matter is that i cannot spend all of my time checking the temperature and changing the fan speeds all the time. Seriously, didn’t anyone at Dell think about these scenarios? or did they even bother to test it a bit, at least with the most common distros (hint: ubuntu/debian/suse/fedora)?

Reply

9 Mohamed July 25, 2013 at 4:03 am

It’s great thanks , but I had a question .. the first parameter of the fan option is always “-1 ” what does that mean ?

there is the out put of “i8kctl fan” it is “-1 1″

and thanks a lot :)

Reply

10 Piotrek September 17, 2013 at 8:48 am

> there is the out put of “i8kctl fan” it is “-1 1″

obviously your system does not have a left fan . . . ; -)

Reply

11 cybericius November 12, 2013 at 8:33 pm

Hi,

I would like to have some auto control for my Dell M4600 fans in Ubuntu since they are much louder in that than with Windows.
Any suggestion?

Thx!

Reply

12 Vitor November 23, 2013 at 11:26 pm

Hi,

I use ‘i8kmon’ from ‘i8kutils’ for fan auto control on my Dell, and that is running very nice.

Reply

13 Shannon December 8, 2013 at 10:06 pm

How do you use this command to auto control the fan?

Reply

14 Vitor March 8, 2014 at 2:25 pm

The command issued at init is

tclsh /usr/bin/i8kmon --daemon --nouserconfig --auto

Reply

15 Shannon December 8, 2013 at 11:45 am

Tried editing the files in the etc/default folder but I keep getting file permission erros, any work around to that?

Reply

16 Nix Craft December 8, 2013 at 4:44 pm
17 Shannon December 8, 2013 at 8:17 pm

Thanks that worked for me :)

Reply

18 paul January 6, 2014 at 4:16 pm

thanks for this. i have an old D620 with lubuntu on it which was getting mega hot because the fan wouldn’t come on. problem solved now.

Reply

19 Matti March 8, 2014 at 2:06 am

Why enable i8kbuttons?

Reply

20 Vitor March 8, 2014 at 2:29 pm

It seems it was used the old days. The manpage of i8kbuttons says
‘Monitor the status of Fn-buttons on Dell Inspiron laptops.’.
But now, perhaps it is not necessary. I can say that for me it is not!

Reply

21 fredguy March 9, 2014 at 12:53 pm

One question, why don’t the good people of i8kmon put the ENABLED standard on 1?
I was struggling with permission hence the question. :-)

I love linux but the temperature was so high, I hesitated, then found this site.
It was a bit fiddly, but I love it. It just switched of automatically and now it started on speed 1 again. It is on 30 celsius now.

Thank you

Reply

22 jasray April 17, 2014 at 6:49 pm

A bit lost here; the fan configuration for 1 and 1 as well as changing the etc file to enabled 1 works fine; how do I make the settings default? When I reboot the laptop, the fan speeds revert to normal which shows 1 and 3.

Thanks!

Reply

23 riadh September 26, 2014 at 10:11 pm

sed: impossible de lire /etc/default/i8kmon: No such file or directory exist
sed: impossible de lire /etc/default/i8kbuttons: No such file or directory exist

Reply

24 Farasath Ahamed October 3, 2014 at 5:48 pm

Followed this and worked fine…
But after a while the fan seemed to stop working all together…
Please help me to get this sorted out

Reply

25 oldcity October 18, 2014 at 7:23 pm

Dell Latitude D810. Ubuntu 14.04.1 fully up to date.
Did install latest i8kutils.

Had following problems.

$ sudo modprobe -v i8k
gave no output for insmod

# sed -i.bak ‘s/ENABLED=0/ENABLED=1/’ /etc/default/{i8kmon,i8kbuttons}

sed: can’t read /etc/default/{18kmon,: No such file or directory
sed: can’t read i8kbuttons}: No such file or directory

# /etc/init.d/i8kmon start
* Starting Dell fan/cpu-temperature monitor i8kmon [fail]

Explain/help needed.
tia

Reply

26 oldcity October 19, 2014 at 11:47 am

The sed -1.bak command gives:
sed: can’t read /etc/default/i8kmon: No such file or directory exist
sed: can’t read /etc/default/i8kbuttons: No such file or directory exist
How to fix?
The command /etc/init.d/i8kmon start
shows [fail]
What did I miss
tia

Reply

27 oldcity October 23, 2014 at 11:35 pm

Do not know what I did right or incorrectly but what I did above stands.
Before beginning the install process the temp was at 54c.
However yesterday when I powered up and left it on for a while and checked
the temp it was down to 36c I maaged to check the right side vent and found
the fan was in fact working.. I powered up again today and after 1 hour the
temp was 36c and after 2 hours was 37c. The room temp was 26c.
It would be nice if someone could resolve issues in my earlier post.
Thanks for the program.

Reply

Leave a Comment

Tagged as: , , , , , , , ,

Previous Faq:

Next Faq: