i8kctl not working for Dell Inspiron fan control

I am trying to control the fan speed manually using the i8kctl package for dell laptops.

System - Ubuntu 16.04, 4.17.19-041719-generic Dell 7567 Inspiron

I followed the instructions in https://askubuntu.com/a/398635 answer, succesfully disabling the BIOS fan control.

However, when I do

ik8ctl fan 2 2

The output is -1 -1

I think this means that the fan speed setting was not successful.

ik8ctl fan returns 0 0 indicating that no fans are on, as the BIOS fan control has been disabled.

I have no issues turning BIOS control on, but I need the fan speed at max at times, which the BIOS is not doing due to some weird reasons.

Why is am8ctl not able to set the fan speeds?

UPDATE: Running as root

sudo ik8ctl fan 2 2

returns 0 0, rather than the earlier -1 -1. Still doesn't quite work as expected.

UPDATE2 Looking at this bug report solution (https://bugs.launchpad.net/i8kutils/+bug/1620580), I force loaded the modules

sudo rmmod dell-smm-hwmon
$ sudo modprobe dell-smm-hwmon restricted=0

The fan control works now for a limited time (1 second). Looks like the bias still takes control after for some reason.


Solution 1:

I found a solution for my Vostro 5481. It might work for you (and others) as well.

Required

git clone https://github.com/TomFreudenberg/dell-bios-fan-control.git
cd dell-bios-fan-control
make
sudo ./dell-bios-fan-control 0

If you get an error like this

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.

Quick testing
You can now go and check solutions for controlling the fan that suite your needs. If you want to quickly test, you can use i8kutils:

git clone https://github.com/vitorafsr/i8kutils
cd i8kutils
make
sudo ./i8kctl fan 2 2

Your fan should now run at the highest possible settings without the BIOS/UEFI interfering.

Controlling the fan in day to day business
Now that your BIOS/UEFI is no longer controlling the fan, you have to take care of it on your own. I'd suggest https://linux.die.net/man/8/fancontrol for this. It can easily be configured using pwmonfig (which ships with it) and adds itself as a system service.

Big THANKS
Shoutout to Tom Freudenberg for creating dell-bios-fan-control and for pointing me to disabling SECURE_BOOT when I got the Operation not permitted error.

https://github.com/TomFreudenberg
https://askubuntu.com/users/293845/tom-freudenberg.