I know there something called fancontrol, that enables you to control the speed of your system's ventilation. I'd like to let my fans spin a bit faster as my laptop is heating up very easilly. All tutorials and stuff I've found are for old versions of Ubuntu and don't seem to be working anymore.
Can anyone explain to me or give me a good link on how I can get it working on Ubuntu? Something different with the same effect is also fine.
You'll most likely be able to solve your problem with something else overriding your i8kctl fan commands by the method given in this answer. For completeness, I'll include some general notes on fan control on Dell laptops, and full instructions for
i8kutils
.What probably won't work
Two common and straight-forward means of controlling the fan on laptops are through ACPI and through PWM pins, however, unfortunately:
Dell laptops lacks ACPI fan control capability (*1)
Dell Latitude laptops, as far as I know, lack pwm controllable fans (*2)
fancontrol
/pwmconfig
program won't workUse i8kutils
However, there's a package called
i8kutils
that is written to control the fan on Dell Inspiron laptops through SMM BIOS. Several users report success on their Dell Laitude laptops as well (I'm one of them, on a Dell Latitude E7440) - however, a trick is often needed to get rid of interfering BIOS fan control. You suffer from that as well according to a previous comment.Install
i8kutils
:Try it:
...and listen to see if it works.
Disable BIOS fan control
If it works, but somewthing else is fighting back on the setted speed (reported by many users on Dell Latitude laptops), this is due to scheduled SMM sessions setting the fan speed back. Luckily there is a way to disable BIOS fan control by writing to SMM registers.
Warning: see the warning in top of smm.c. This method will write to SMM registers. However, I've seen no user reports on this causing trouble. Also, all reports on trying this have indicated success in disabling the BIOS fan control.
i8kutils
includes the source of a programsmm
but thei8kutils
package does not include the compiled binary. What we'll do is to download the source code ofi8kutils
, compile the programsmm
, and run it with an apropriate argument to disable BIOS fan control by writing to SMM registers.Download packages needed for building:
Download
i8kutils
source code, extract and enter directory (exact names depending on i8k version):Compile
smm
:If on a 32-bit system:
(Above will execute
gcc -g -O2 -Wall -I. -o smm smm.c
.)If on a 64-bit system:
Run
smm
with argument30a3
to disable SMM fan control:Now, BIOS fan control should be disabled. Try by setting speeds with
i8kctl
, listen for the fan and make sure the speed persists.Note: This is a setting that will persist reboots and power-off's. BIOS fan control can be enabled again with
$ sudo ./smm 31a3
.*1: I've seen an official source on this, can't find it right now. If you want to verify that your hardware lacks it, follow instructions here: https://wiki.ubuntu.com/DebuggingACPI
*2: for verifying this, run pwmconfig:
sudo apt-get install fancontrol
,sudo pwm-config
will tell if a pwm-capable fan is present or notNote about smm
smm
is no longer included in latesti8kutils
. If your distribution already upgraded to the latest version, you'll have to fetch an older version manually. The version 1.41 contains smm, while 1.43 no longer contains it.As of 1.42, smm is provided as a kernel module only.
You can obtain 1.41 on i8kutils launchpad page.
The package lm-sensors might be what you are looking for.
And as you suggested fancontrol .
Be sure that all the fans that you are trying to control via software have the 4 pin connector.
"A PWM capable fan is usally connected to a 4-pin connector (pinout: Ground, +12V, sense, control)."source
When I run
pwmconfig
which is a part of fancontrol I get/usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed
It will guide you if you have compatible hardware.Here are some scripts to use in conjunction with that generated config file. I assume that you could set a higher value here.
But as I said, I can't test this myself, since my hardware don't support it, I can control my fans from the bios, but it's a grade of 3. I use it for keeping my fan's slow and silent.
i8kutils works for controlling the fan of my Dell Vostro 3350 laptop.
Ok, this might not be the answer you are looking for, but my overheating problems were solved, when removed the dust by putting a vacuum cleaner on the ventilation inlets. If you experience overheating at low cpu-frequencies, this might be worth a try. Be aware that maybe small parts may get sucked in. If you are lucky this method might solve you overheating problems.
I have a Dell Latitude e4200 and the following worked for me because the BIOS was overriding i8kfan setting. My computer's initial temperature was 105F degrees and about 10 mins after using these steps (fan setting = 2) the CPU/Core temps dropped to 96F degrees. This procedure had already been posted by someone:
Step 1. Download and install i8ktutils:
Step 2. Override the BIOS to keep it from interrupting custom fan settings. Download the source code and compile a program (SMM) to do this:
then:
Step 3. Extract the source code and cd into the directory:
then:
Step 4. Compile SMM
Step 5. Execute SMM with parameters:
Step 6. Set the fan speeds:
Now BIOS fan control should not override fan settings. This setting will remain even if the system is rebooted. To give control back to BIOS for some reason do the following procedure:
There is also a way to check the temp by using lm_sensors: