Skip to content

Instantly share code, notes, and snippets.

@TimKochDev
Created March 14, 2025 22:03
Show Gist options
  • Save TimKochDev/f9afff122625c1617f9051308a05715b to your computer and use it in GitHub Desktop.
Save TimKochDev/f9afff122625c1617f9051308a05715b to your computer and use it in GitHub Desktop.
Fix fan issues on Dell XPS 9560 running Linux

System Specifications

  • Device: Dell XPS 9560 (2017)
  • BIOS: 1.31.0
  • Distribution: Ubuntu Server 24.04.2 LTS
  • Kernel: 6.8.0-55-generic
  • Usage: As home server. 24/7 for three months until now

Problem Definition

Fans didn't switch off completely anymore even when temperatur was below 30°C.

Solution

See here for an overview: https://wiki.archlinux.org/title/Fan_speed_control

Install i8kutils. Testing i8kfan 0 0, i8kfan 2 2. Saw the fans still running at same RPM as before.

Clone https://github.com/TomFreudenberg/dell-bios-fan-control. Run dell-bios-fan-control 0. Saw ioperm:: Operation not permitted.

Disable secure boot (make sure you know about the implications). Now dell-bios-fan-control 0 disables the the bios fan control.

For me, i8kutils installed with a default config file and a running service so it worked out of the box now. However, when rebooting the fan control is still off which puts us in danger of overheating during boot phase. Hence, we should create a service that takes fan control on startup and gives it back to bios on shutdown.

https://github.com/gilbsgilbs/dell-bios-fan-control-git Enable this service. Don't forget to copy dell-bios-fan-control to /usr/bin where the service definition expects it.

Done!

Optional: Edit temperature thresholds in /etc/i8kmon.conf I used the default and

  • increased the threshold in ac mode because my home server should be quiet as much as possible
  • set the speed values (2500 is what I saw when the BIOS had control. 4900 was displayed by sensors)
# 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)   {{0 0}  -1  60  -1  60}
set config(1)   {{1 1}  55  70  55  70}
set config(2)   {{2 2}  60  75  65  80}
set config(3)   {{2 2}  70 128  75 128}

# Speed values are set here to avoid i8kmon probe them at every time it starts.
set status(leftspeed)   "0 2500 3500 4900"
set status(rightspeed)  "0 2500 3500 4900"

What I tried that didn't work

sudo apt install libsmbios-bin -y
sudo smbios-thermal-ctl -i
sudo smbios-thermal-ctl --set-thermal-mode=Quiet

This probably should have worked, hadn't the fan control been flawed before anyway.


No acpi_osi Grub setting worked.


i8k without dell-bios-fan-control didn't work. dell-bios-fan-control didn't work with secure boot enabled


Configuring thermald didn't work either. It doesn't seem to handle fan speed but only throttling the CPU when overheating

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment