Custom user sensors in HWiNFO

Martin

HWiNFO Author
Staff member
HWiNFO since version 6.10 introduces a new feature - ability to display custom user sensors in the sensors window.
This feature allows users with basic programming skills to show any sensor values. This might be useful in case of custom-made devices, or sensor values not implemented in HWiNFO by default (i.e. clock time).
The interface used to provide data to HWiNFO is Windows Registry. Users wishing to publish data into sensors will need to create a few specific keys and values in the registry.
Format of the required registry is following.

Main registry node for custom sensors must reside under: HKEY_CURRENT_USER\Software\HWiNFO64\Sensors\Custom
UPDATE:
Since HWiNFO version 7.65, the following path is also supported: HKEY_LOCAL_MACHINE\Software\HWiNFO64\Sensors\Custom
but all custom sensors must reside either in HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE.
Under this node, up to 64 custom keys can be placed, each of them representing an unique sensor instance. Name of the key is used as the sensor name. Example: HKEY_CURRENT_USER\Software\HWiNFO64\Sensors\Custom\My Device1

Under each of the custom sensor keys, a set of defined sensor value keys shall be located. These keys must use one of the following names in order to be properly recognized:
Key Name​
Description​
TempXA temperature value in degrees of Celsius
VoltXA voltage value in Volts
FanXA fan value in RPM
CurrentXA current value in Amperes
PowerXA power value in Watts
ClockXA clock value in MHz
UsageXA usage value in %
OtherXOther value in custom units
The "X" represents a sequence number starting from 0, for example the first temperature value shall be named as Temp0.

Under each of the above keys the following registry values must be present:
Value Name​
Accepted Value Type​
Description​
NameREG_SZA string describing the name of the value.
ValueREG_DWORD, REG_QWORD, REG_SZThe resulting value from the sensor readout.
Use REG_DWORD or REG_QWORD for integer values, REG_SZ as a string for floating-point values.
UnitREG_SZUsed for the "Other" value type only to describe the custom unit name.

Following is an example of registry values:
CustomSensor.png
used to show the following sensor:
CustomSensor2.png

UPDATE: Version 6.21-4055 Beta introduces the ability to use simple formulas
This new feature allows to create custom sensor values using simple math operations including combinations of existing sensor values.
The entire formula has to be specified in the Value registry field, which needs to be of string (REG_SZ) type.
The formula can contain simple math operations with an integer or floating-point number or the value of an existing sensor. Currently the following operations are supported:
Operator​
Description​
+Add
-Subtract
*Multiply
/Divide
min(a, b, ...)Minimum value
max(a, b, ...)Maximum value

If a value of an existing sensor is required, it has to be specified inside quotation marks and is case-sensitive (e.g. "Core 0 Clock"). The value name string has to be present in the sensors list and it should be unique. If there are multiple sensors with the same name, rename the desired sensor value in the sensors window to make it unique (using the F2 key or via sensor settings).
Multiple math operations can be specified, but operator precedence is not evaluated. The formula is evaluated in the order it's defined (serially); using parentheses to define precedence is not supported and a multiplication doesn't take precedence over addition.

Some examples of simple formulas:
  • To show the average value of four core VID values, use:
    "Core 0 VID" + "Core 1 VID" + "Core 2 VID" + "Core 3 VID" / 4

  • To show the maximum value of two core clocks use:
    max("Core 0 Clock", "Core 1 Clock")

I hope this feature will be useful.
Feel free to post your experience and your custom applications in this thread.
 
Last edited:
Hi Martin,

Will these custom sensor results be available via the standard shared memory support or is this new feature limited to showing these custom readings within the HWiNFO sensor window only?

Cheers
Minty
 
Thanks, sounds like a very useful addition. I assume there are no changes to the actual SHM API for this change?
 
So we can't add actual sensors to HWiNFO, this just adds a value that gets reported as a sensor? For example, I have a laptop and the software that came with it can see fan speeds, but HWiNFO can't see them. This wouldn't allow me to have HWiNFO monitor those fan speeds, would it?
 
If you know how to read fan speeds for that laptop, you can write an application that will export those values to HWiNFO.
 
Nice feature!

Question, is there a simple way to add a sensor to show RAM physical usage by a specific software, like we see on Task Manager for exemple?
This would be super useful on some games that use a lot of RAM.

Or that will also require to write a custom app to export those values?

Thanks!
 
Adding custom sensors to HWiNFO will always require writing some specific application or a script at least to place the values in required structure into registry.
 
Just recently started using HWinfo, and my only reservation was the inability to show my max clock out of all 12 cores on my 3900X. Now with 6.22 I can:

max("Core 0 Clock","Core 1 Clock","Core 2 Clock","Core 3 Clock","Core 4 Clock","Core 5 Clock","Core 6 Clock","Core 7 Clock","Core 8 Clock","Core 9 Clock","Core 10 Clock","Core 11 Clock")

Works perfectly, thanks! Donated ;)
 
This is a very helpful addition. As someone not totally familiar with regedit i was able to go from start to finish in about 30 mins. It took rereading a cpl times, a quick smoke some, a few keys, a few string and I now have the Current(Amps) of my GPU :) "GPU Power" / "GPU Core Voltage". It prob could have been easier but it certainly wasn't hard and get to learn something new. Plus if you are this in depth in software monitoring forums you will likely enjoy learning how anyway. Thx Martin! edit* at least amps at the core I should clarify. I assume there are other voltages on the card *(ie memory)
 
Hi Martin, how are you doing?

I'm trying to customize OSD with this new custom sensor feature, so I created my own sensors just to use their names with different colors, so far so good.. my question is:
Is there any way to set letters on reg value(REG_SZ) instead of numbers only, like 'CPU0'? or is there any way to let the value be blank/null? so I can use only labels name, in registry value is empty, but shows 0 in the program..
I'm afraid its no possible, cause it was not made to work like that, but... here is a screenshot using HWiNFO + Custom Sensors REG + RTSS:
OSD1.png

So I tried to work around this and I set RtssAlignNum from each custom sensor to something like 180~190 directly on registry so I can hide this 0 value (sending it out of the view from screen) and it works on the very first lines, then it starts to cut the sensors, like:
OSD2.png

Again, I know this is was not made to work this way, but is there anything I can do about it?

Sorry if I didn't make myself clear, and thank you for your time and this awesome tool.
 
Sorry, it indeed wasn't meant to be used like that.
As for that problem it looks like you might have hit the limit of buffer passed to RTSS. Try to remove some of the items above if the tail of your data will then show properly. This is just to prove if this is the case.
 
Hi Martin,

I started to implement a "export to HWiNFO" mode in liquidctl, and while it already mostly works I still have a few issues:

  1. Is it possible to pass time (uptime) data to HWiNFO and, if so, how?
  2. It seems that HWiNFO must be started after the application providing the custom sensors has already set up the device and sensor keys (which also means that it needs to be restarted should a new device or sensor appear). Am I missing something or is there any way around that?
  3. It also seems that HWiNFO does not currently display int (DWORD) data as such (example screenshot bellow)
Thanks!

Source-code: liquidctl@integrate-lqinfo: liquidctl/export.py
Nightly-build of liquidctl supporting this: appveyor: liquidctl/branch/integrate-lqinfo/artifacts (example call: liquidctl export hwinfo --debug)


hwinfo-custom-sensor-dword-still-float.png
 
Back
Top