The website has moved

Note: the website moved to www.keenformatics.com. You're being redirected.

Saturday, June 15, 2013

How to solve Dell laptops fan issues in Ubuntu

When I finally bought my new Dell Inspiron laptop, I decided to take a look at the brand new Windows 8 OEM installation which I (forcedly) paid for. About 20 seconds later, I was installing the latest Ubuntu distribution. I didn't knew what I would have found, but I was happy as well.
How to solve Dell laptops fan issues in Ubuntu
Sarah Klockars-Clauser for openphoto.net


One of the main problems I faced has been that of the incredibly loud fan noise which came from my new laptop, so I began my online quest until I found i8kutils, a (partial) solution to my problem. I'm saying "partial" because we shouldn't confuse the cause and the effect: i8kutils won't solve your overheating issues, but it will help you to configure your fans in order to overwrite their exasperated and irritating default behaviour. But be warned: if your fans are running it's probably because they're trying to manage your overheating problems for you, so don't set i8kutils just to make your fans definitively shut up (unless you know what you're doing).


The steps!

1) First of all, let's download and install i8kutils. Open your terminal and write:
sudo apt-get install i8kutils
2) Now you've got to add i8k to your modules. Open the modules file:
sudo gedit /etc/modules
and add the string "i8k" (without quotes) to the file. Save and exit.

3) Create an i8k.conf file
sudo vim /etc/modprobe.d/i8k.conf
and fill it with this code:
options i8k force=1

Note: Some older guides will tell you to create a /modprobe.d/options file. The "options" file isn't used anymore on Ubuntu. What does matter is that you create a file with a .conf extension (the filename isn't important, but I decided to name it i8k.conf for clarity). So beware of older i8kmon configuration guides.

4) Now restart your computer, or run this code to make i8k run:
sudo modprobe i8k force=1
5) We will now create a i8kmon.conf file which will tell the i8kmon utility how to behave.
sudo gedit /etc/i8kmon.conf
Paste the following code in it:
# Run as daemon, override with --daemon option
set config(daemon)      0

# Automatic fan control, override with --auto option
set config(auto)        1

# Report status on stdout, override with --verbose option
set config(verbose) 1

# Status check timeout (seconds), override with --timeout option
set config(timeout) 20

# Temperature thresholds: {fan_speeds low_ac high_ac low_batt high_batt}
set config(0)   {{-1 0}  -1  40  -1  40}
set config(1)   {{-1 1}  30  60  30  60}
set config(2)   {{-1 2}  53  128  53  128}

# For computer with 2 fans, use a variant of this instead:
# Temperature thresholds: {fan_speeds low_ac high_ac low_batt high_batt}
# set config(0) {{-1 0}  -1  52  -1  65}
# set config(1) {{-1 1}  41  66  55  75}
# set config(2) {{-1 1}  55  80  65  85}
# set config(3) {{-1 2}  70 128  75 128}

# end of file

This has been edited to match my Dell Inspiron 15r 5521 fan configuration (and I hope I did it well). If you want more informations take a look at the documentation on Ubuntu Manuals: http://manpages.ubuntu.com/manpages/gutsy/man1/i8kmon.1.html

6) Now you should be able to run i8kmon from your terminal and see if (and how) it's working. Simply run:
i8kmon

Finished!

But wait...what if you want i8kmon to automatically start at boot? I'll simply copy-paste what's been written in the official documentation:
Under Debian GNU/Linux it is possible to start the daemon automatically by creating an /etc/default/i8kmon configfile containing the line "set config(daemon) 1". Note the the /etc/default/i8kmon configfile is not installed by the i8kutils package because the program is designed to be run by normal users. If you want to use it as 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 (and not ~/.i8kmon).
Doubts: I wonder why I don't have the ~/.i8kmon file on my system, while the docs refer to it.
If you take a look in your /usr/bin/i8k you'll find that ~/.i8kmon is considered as a user configuration, while /etc/i8kmon.conf (the file we edited before) is treated as a system configuration.
If something in your configuration goes wrong (e.g. if you can't make your temperature limits work) it would be worthwhile checking if you've got this ~/.i8kmon file on your system and try to edit it, because it could be perfidiously overwriting your system configuration. If you discover something about it, please let me know.

I hope this article has been useful to you. If so, please click here and there on social buttons to make it more visible. If not, I'm waiting for your constructive comments ;)

31 comments:

  1. Hello. I post this comment just to say that i8kutils is being updated in the site below.

    https://launchpad.net/i8kutils

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete
  3. Hello

    I have the same model of Dell, I will set and see if it work.

    Thanks,

    PS: Sorry my English isnt good

    ReplyDelete
  4. Thanks! Been really helpful. Now my laptop is quiet again >:D

    ReplyDelete
  5. Thanks man, it works on Dell inspiron 5520 :)

    ReplyDelete
    Replies
    1. Can you please tell me the normal temperature that it's supposed to be appeared ?

      Delete
  6. Thanks a lot!!! Wonderfull article, However, I got a little bit confused at the end. How we can make i8kmon run every time we turn on our computer?

    ReplyDelete
  7. Is this "/etc/default/i8kmon" or "/etc/default/i8kmon.conf"? Can you please clarify this.

    ReplyDelete
  8. I've followed your manual, but the fact, that the fan start spinning for approximately 3sec at high speed every 20sec is a little disturbing. Is it supposed to do that? (I'm really a beginner and I admit I have just a little idea about what I have done by following your instructions. But thanks anyway)

    ReplyDelete
  9. Hi,

    something wrong is happened during i was trying to install the package:

    seb@seb:~$ sudo apt-get install i8kutils
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following extra packages will be installed:
    acpi tclx8.4
    Suggested packages:
    tclx8.4-doc
    The following NEW packages will be installed:
    acpi i8kutils tclx8.4
    0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
    Need to get 134 kB of archives.
    After this operation, 440 kB of additional disk space will be used.
    Do you want to continue? [Y/n] y
    Get:1 http://de.archive.ubuntu.com/ubuntu/ trusty/universe acpi amd64 1.7-1 [13,8 kB]
    Get:2 http://de.archive.ubuntu.com/ubuntu/ trusty/universe tclx8.4 amd64 8.4.0-3.1 [94,2 kB]
    Get:3 http://de.archive.ubuntu.com/ubuntu/ trusty/universe i8kutils amd64 1.41 [25,9 kB]
    Fetched 134 kB in 0s (326 kB/s)
    Selecting previously unselected package acpi.
    (Reading database ... 200540 files and directories currently installed.)
    Preparing to unpack .../archives/acpi_1.7-1_amd64.deb ...
    Unpacking acpi (1.7-1) ...
    Selecting previously unselected package tclx8.4.
    Preparing to unpack .../tclx8.4_8.4.0-3.1_amd64.deb ...
    Unpacking tclx8.4 (8.4.0-3.1) ...
    Selecting previously unselected package i8kutils.
    Preparing to unpack .../i8kutils_1.41_amd64.deb ...
    Unpacking i8kutils (1.41) ...
    Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
    Processing triggers for ureadahead (0.100.0-16) ...
    Setting up acpi (1.7-1) ...
    Setting up tclx8.4 (8.4.0-3.1) ...
    Setting up i8kutils (1.41) ...
    * Starting Dell fan/cpu-temperature monitor i8kmon [fail]
    invoke-rc.d: initscript i8kmon, action "start" failed.
    dpkg: error processing package i8kutils (--configure):
    subprocess installed post-installation script returned error exit status 1
    Processing triggers for libc-bin (2.19-0ubuntu6.3) ...
    Processing triggers for ureadahead (0.100.0-16) ...
    Errors were encountered while processing:
    i8kutils
    E: Sub-process /usr/bin/dpkg returned an error code (1)


    could anyone help me?

    Before that installation I started sudo sensors-detect and added to /etc/modules the following lines

    #----cut here----
    # Chip drivers
    coretemp


    Thanks in advance for your support!

    Sebastian

    ReplyDelete
  10. Hi all! Sebastian, I had similar problem as you describe, even to the point where Software Updater was broken - could not proceed. Now I have it all running sweetly on DELL Inspiron 15R (N5110) with Linux Mint 17.1 Cinnnamon.

    First you need remove the broken package.
    I was able to remove package completely, like so:

    sudo rm /var/lib/dpkg/info/i8kutils.*
    sudo dpkg --remove --force-remove-reinstreq i8kutils
    sudo apt-get remove --purge i8kutils
    sudo apt-get autoremove

    Then follow the guide above to install i8kutils, making sure to avoid (or remove) Steps 2-4 above.

    To have it start as daemon / auto on boot, add this entry to your Startup programs:
    i8kmon -d -a

    ReplyDelete
    Replies
    1. Thanks, this was the first fix I found for
      Errors were encountered while processing:
      i8kutils
      E: Sub-process /usr/bin/dpkg returned an error code (1)

      However no I'm stuck on a new problem:
      reading system config file
      i8kmon v1.30 11/16/2013 - Copyright (C) 2013 Vitor Augusto
      config(0) = {-1 0} -1 40 -1 40
      config(1) = {-1 1} 30 60 30 60
      config(2) = {-1 2} 53 128 53 128
      config(3) = {2 2} 70 128 75 128
      config(acpi) = acpi
      config(auto) = 1
      config(daemon) = 0
      config(geometry) =
      config(i8kfan) = /usr/bin/i8kfan
      config(min_speed) = 2000
      config(sysconfig) = /etc/i8kmon.conf
      config(t_high) = 80
      config(timeout) = 20
      config(unit) = C
      config(use_conf) = 1
      config(userconfig) = ~/.i8kmon
      config(verbose) = 1
      status(ac) = 0
      status(acpi_timer) = 0
      status(left) =
      status(leftspeed) = 0 -1 -1 -1
      status(lspeed) = 0
      status(lstate) = 0
      status(lstuck) = 0
      status(nfans) = 2
      status(right) =
      status(rightspeed) = 0 -1 -1 -1
      status(rspeed) = 0
      status(rstate) = 0
      status(rstuck) = 0
      status(state) = 0
      status(t_high) = 0
      status(t_low) = 0
      status(temp) = 0
      status(timer) =
      status(ui) = 0
      No support for device type: power_supply
      while executing
      "exec {*}$config(acpi)"
      (procedure "read_ac_status" line 12)
      invoked from within
      "read_ac_status"
      (procedure "read_i8k_status" line 27)
      invoked from within
      "read_i8k_status"
      (procedure "make_ui" line 51)
      invoked from within
      "make_ui"
      (procedure "main" line 6)
      invoked from within
      "main"
      invoked from within
      "if {$tcl_interactive == 0} {
      main
      vwait forever
      }"
      (file "/usr/bin/i8kmon" line 616)

      Your help is much appreciated.

      Regards
      Richard

      Delete
    2. Hi

      Could you maybe give me a hint on adding the service during boot, I a noob :(

      Regards

      Delete
  11. If you're like me and on a Dell inspiron 3251, then UPDATE the BIOS. Doing so I swear actually let me adjust my fan control, either that or it was stopping the i8kmon.. with "sudo service i8kmon stop" and then setting my fans with "i8kfan -1 2" or 1

    ReplyDelete
  12. I followed your guide ( I also have an Inspiron 15R 5521 ) and it seems to work well. One question: Is there a way to start the monitor without doing it in a terminal window? If you start it from a terminal and then try to close the terminal it messes up i8kmon and you start getting all kinds of program error messages. The little temperature indicator is nice but I would rather not have the terminal open all the time. Thanks

    ReplyDelete
  13. Thanks for the post! In my case, the first step was sufficient. I have a Dell Inspiron 5737 17R; since two or three days was really noisy, for no reason. Just installing i8kutils resolved immediately the problem. It was amazing! The fan stopped running crazy immediately after the installation completed.

    ReplyDelete
  14. THANK YOU VERY.... MUCH FOR YOUR HELP

    ReplyDelete
  15. One thing to note is that for some reason i8kutils loses control of the fan when resuming from sleep. Having "i8kfan 0 0" run when waking up fixes the issue.

    ReplyDelete
    Replies
    1. I also face the same issue, After waking up from sleep i8kutil loses control. How to fix it, I can't understand what you meant by "Having "i8kfan 0 0" "

      Delete
    2. Maybe you can steps from the below link

      http://omglulz.wtf/posts/linux-mint-18-dell-inspiron-5521-fan-issue-fix

      Delete
  16. Hi this might help you out

    http://omglulz.wtf/posts/linux-mint-18-dell-inspiron-5521-fan-issue-fix

    ReplyDelete
  17. http://delltechnicalsupportfromtechbuddies.blogspot.in/2016/11/dell-laptop-screen-complete-white.html
    need more services for dell

    ReplyDelete
  18. thanks, God bless you man!

    ReplyDelete
  19. hello and thank you! has there been an update to i8kutils, so it comes with a default config? in the very second i installed it, i8kutils took control of the fan and manages it perfectly smooth (inspiron 7520/15r se)

    ReplyDelete
  20. This is the only guide that worked for me so far (An old Alienware 13 R1). I've been looking for one the whole night. Thank you so much!

    ReplyDelete
  21. For those willing to go to the root of the problem ...

    The solution may be to upgrade the BIOS to A16
    https://www.dell.com/community/Laptops-General-Read-Only/Fan-is-working-on-max-speed-when-WiFi-and-bluetooth-switched-on/td-p/4097719


    I have the A14 and when I use Bluetooth and wifi it uses the fan more than usual.

    # sudo dmidecode | grep -i BIOS -A 5
    BIOS Information
    Vendor: Dell Inc.
    Version: A14
    Release Date: 07/31/2015

    ReplyDelete
  22. For latest versions ofBIOS you'll need to install with

    snap install dell-bios-fan-control
    sudo snap connect dell-bios-fan-control:io-ports-control

    this utility that disables BIOS fan control to let i8kmon do it (or i8kctl if you are adventurous)

    ReplyDelete