Researched from:
sudo apt install lm-sensors
, it will allow us to monitor temperature of cpu and fan speeds via sensors
command.
sudo apt install i8kutils
, this has i8k, the driver and utility which will help us control the fan.
sudo modprobe -v i8k
, this will load i8k driver.
Then follow:
git clone https://github.com/TomFreudenberg/dell-bios-fan-control.git
cd dell-bios-fan-control
make
sudo ./dell-bios-fan-control 0
```
ioperm:: Operation not permitted
ioperm:: Operation not permitted [1]
4701 segmentation fault
```
you need to go to your BIOS/UEFI and disable SECURE BOOT. Then run the command again. Output should now be `BIOS CONTROL DISABLED`.
sudo i8kctl fan 2 2
should put your fans at full speed.
/etc/i8kmon.conf
in a text editor
sudo nano /etc/i8kmon.conf
and put the following in it:
# i8kmon configuration file (/etc/i8kmon.conf, ~/.i8kmon).
# Run as daemon, override with --daemon option
set config(daemon) 0
# Automatic fan control, override with --auto option
set config(auto) 1
# External program to control the fans
set config(i8kfan) /usr/bin/i8kfan
# Report status on stdout, override with --verbose option
set config(verbose) 0
# Status check timeout (seconds), override with --timeout option
set config(timeout) 5
# 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 45 -1 45}
set config(1) {{-1 1} 45 65 45 65}
set config(2) {{-1 2} 65 128 65 128}
set config(3) {{-1 2} 65 128 65 128}
# Speed values are set here to avoid i8kmon probe them at every time it starts.
set status(leftspeed) "0 1000 2000 3000"
set status(rightspeed) "0 1000 2000 3000"
# end of file
Remember to replace those {-1 0} things with specific to your laptop. -1 signifies my laptop doesn’t have a left fan. If you have both fans put {0 0}, if only right {0 -1}. Refer manpage for more details.
/etc/modprobe.d/i8k.conf
with this line inside it:
options i8k force=1
To check status of i8kmon service:
sudo systemctl status i8kmon.service
To start it:
sudo systemctl start i8kmon.service
To stop it:
sudo systemctl stop i8kmon.service
To restart it:
sudo systemctl restart i8kmon.service
To heat CPU cores for checking i8k fan control you can do a stress test using:
stress -c 8
and monitor temperatures using:
watch sensors
and press CTRL+c to cancel when satisfied.