/DellFanControl

This C# app lets you control the fans on some dell laptops.

Primary LanguageC#


WARNING - WARNING - WARNING - WARNING

This app disables the internal thermal fan controls. Watch your temperatures so that you do not fry you machine. You can damage you machine with this!


DellFanControl

Build status

Introduction

This C# app lets you control the fans on some dell laptops. The main purpose is to enable a much more silent laptop. E.g. the fans always spin when an USB-C dock is used etc.

This app uses the driver https://github.com/424778940z/bzh-windrv-dell-smm-io, without this work the whole control would not be possible.

Shortcomings & Warning

For linux dell fan control is possible for quite some time via i8kutils.

For windows the situation is a bit trickier: the fan can only be controlled with a special kernel driver. Since Windows 10, version 1607 kernel drives must be signed or they will not load, at least when not without disabling the "Driver Signature Enforcement" via ´bcdedit -set TESTSIGNING ON`.

To overcome the signed driver limitation i used WindowsD, which may be reported as malware by antivirus software.

Furthermore driver only enables three fan speeds (off, 50%, 100%). See vitorafsr/i8kutils#5 for more details.

To complete remove the service execute this in an elevated prompt

sc delete BZHDELLSMMIO

Default configuration

In the default configuration the fans kick in when the CPU reaches 55 °C. First the quieter GPU fan will kick in, when 60 °C are reached the CPU fan kicks in too.

<DellFanCtrl pollingInterval="1000" minCooldownTime="30">
  <!-- CPU -->
  <FanOne active="1">
    <TemperatureThresholdZero CPU="50" GPU="50"/>
    <TemperatureThresholdOne CPU="60" GPU="60"/>
    <TemperatureThresholdTwo CPU="70" GPU="70"/>
  </FanOne>
  <!-- GPU -->
  <FanTwo active="1">
    <TemperatureThresholdZero CPU="45" GPU="45"/>
    <TemperatureThresholdOne CPU="55" GPU="55"/>
    <TemperatureThresholdTwo CPU="65" GPU="65"/>
  </FanTwo>
</DellFanCtrl>

Autostart

To automatically start DellFanControl register it as a scheduled task.

You can find a configuration template in DellFanControl.xml.

If you installed/copied DellFanControl.exe to C:\Program Files\DellFanControl\DellFanControl.exe you can just use execute schtasks.exe /create /tn DellFanControl /XML DellFanControl.xml to create a suitable scheduled task.

Otherwise call taskschd.msc, import DellFanControl.xml and adjust the path.

Further Information / Links

openhardwaremonitor/openhardwaremonitor#56

vitorafsr/i8kutils#5

https://github.com/424778940z/bzh-windrv-dell-smm-io

https://github.com/424778940z/dell-fan-utility

https://github.com/katlogic/WindowsD