HardwareSupervisor is a windows service that monitor the Hardware state of your machine.
I was a lot frustrating to use an Administrator account to run all hardware monitoring software like Open Hardware Monitor or others. For security reasons it's quite normal today to use a normal account to achieve all day operations, so if you want to run hardware monitoring software you have to enter administrator password to continue. But with a windows service this step is no more necessary! So here it is HardwareSupervisor.
Dynamic Fan Control can be enabled setting autoFanControl to true in the config file.
A software failure or simply a wrong configuration may 🔥 burn 🔥 your hardware! So use it
at your own risk!
Let's see how to configure this feature. Here's an example of config.yaml
file:
# CamelCase format
autoFanControl: true
# Debug, Info, Warn, Error
logLevel: Debug
sensors:
# CPU
/lpc/it8631e/0:
- temperature: 30
load: 50
- temperature: 50
load: 60
- temperature: 70
load: 100
default:
- temperature: 20
load: 30
- temperature: 30
load: 40
- temperature: 40
load: 60
- temperature: 70
load: 100
Initially it is suggested to use a Debug logLevel
to understand better what's going on.
In sensors
key you can specify a different curve for each detected sensor. You can see which
sensors are detected simply running HardwareSupervisor at least one time and looking to it's log file,
you should see something like that:
2021-10-31 12:10:13.3405|INFO|AutoControls|Found sensor: /lpc/it8631e/0
2021-10-31 12:10:13.3405|INFO|AutoControls|Found sensor: /lpc/it8631e/1
2021-10-31 12:10:13.3405|INFO|AutoControls|Found sensor: /nvidiagpu/0
On my machines three sensors are detected: /lpc/it8631e/0
, /lpc/it8631e/1
and /nvidiagpu/0
. This sensors are special,
they are temperature sensors with an enabled PWM controller unit to handle FAN spin, HardwareSupervisor can handle only these sensors.
default
it's the default curve if no one can match.
You can specify all curve points through it's coordinates: temperature (in celsius) and load (in %).
You can add as many points as you like.
Keep in mind that if temperature < min(temperature)
, it will be fixed to load(min(temperature))
and if
temperature > max(temperature)
, it will be fixed to load(max(temperature))
. Look at a curve example
So it's not necessary to introduce these points:
- temperature: 0
load: 20
- temperature: 100
load: 100
You can tweak your config file without the need to restart the service! All modifications will be applied immediately if they are parsed correctly.
Right now HardwareSupervisor makes use of LibreHardwareMonitor library: https://github.com/LibreHardwareMonitor/LibreHardwareMonitor so all sensors supported by LibreHardwareMonitor are also available in HardwareSupervisor, and all sensors that aren't supported by LibreHardwareMonitor aren't supported by HardwareSupervisor.
Information are published through Windows Management Instrumentation(WMI) protocol at
namespace root/HardwareSupervisor
and are available to anyone without the need to be
an Administrator account.
A simple way to query HardwareSupervisor is via Power Shell:
PS C:\temp> get-wmiobject -namespace "root/HardwareSupervisor" -Class Sensor
It's also a great way to see if HardwareSupervisor is working.
Another great way to see data collected by HardwareSupervisor is to use HardwareSupervisorRainmeterPlugin: https://github.com/darkbrain-fc/HardwareSupervisorRainmeterPlugin
The most interest future work will insist to implement an automatic FAN controller to be able to control PC temperatures and finally remove all bloat software that usually does this job.Replace OpenHardwareMonitor with LibreHardwareMonitor or a new LibreHardwareMonitor fork.RTX Support.