What is Argus Monitor?
Argus Monitor is similar to the more well-known SpeedFan, in that it is good at monitoring various temperatures, S.M.A.R.T. data, etc. and controlling your fans based on them. Unlike SpeedFan, Argus Monitor is not free to use (beyond a 30 day trial period), but it's not expensive either.
I used to use SpeedFan, and the SpeedFan plugin for Rainmeter, but my new motherboard has temperature sensors which SpeedFan can't detect, while Argus Monitor can.
(The motherboard is an Asus ROG Maximus X Hero and I'm using T_Sensor. Same problem with some other earlier Maximus boards and current versions of SpeedFan (4.52 Final), from what I've read. Some tools like HWInfo can also read the temperature, but they can't control your fans. As I'm controlling my fans based a water temperature sensor plugged into T_Sensor, Argus Monitor was the only thing that let me do that. Asus's own software was useless, as was the BIOS, for controlling fans based on water temperature, as they force you to use CPU temperature for several fan headers. On a board with lots of support for water cooling. Sigh.)
This plugin is not official
Argus Monitor comes with its own simple gadget that can display some of its readings outside of the main UI, but it isn't as fully featured as Rainmeter. As there was no official Argus Monitor plugin for Rainmeter, I initially reverse-engineered the way the official gadget talks to the main program and created the Rainmeter plugin this thread is about. From plugin version 1.1.0.1 (Argus Monitor version 4.01), the Argus Monitor developer has helped by sending me information on version changes as well as things I could not work out on my own.
Since this plugin is not part of Argus Monitor itself, and there is no formal API to get data from Argus Monitor, it's possible the plugin will stop working when Argus Monitor is updated and changes the format of the data. If it does, I'll do my best to fix it. The plugin is written in a way where the worst that should happen is it reports incorrect values, or writes to the Rainmeter log saying it can't understand the other end of the protocol.
Caveats
- Version 1.0.0.0 of the plugin supports Argus Monitor 3.6.2.
- Version 1.1.0.1 of the plugin supports Argus Monitor 3.6.2, 4.0.1 and 4.0.2 (latest version at time of writing).
- If you use both the plugin and the official gadget at once, both of them will only be updated half as often as usual. This is because they both queue up to receive updates from Argus Monitor, and it will only update one at a time.
- Argus Monitor itself has some limitations which the plugin inherits. As of Argus Monitor 4.0.2: Maximum of 32 CPU cores, 4 GPUs, 32 drives, 12 fans, and 12 motherboard temperatures (separate from CPU/GPU temps).
The plugin comes with a layout of example skins which demonstrate (most of) the various things it can get from Argus Monitor. It's not pretty; it was made just to test the plugin, before I start using the plugin in my real skin.
Those skins also serve as a way to see how to get the different readings out of the plugin. If you have used the SpeedFan plugin before, you'll find it familiar.
The CPU skin will dynamically add/remove cores based on the number of cores Argus Monitor reports. The others are all fixed-size and will display some blank readings for things that don't exist on your system.
This shows the skin above Argus Monitor itself (click to expand):
Download
The plugin and example skins/layout are included in this .rmskin file:
Current version: Older version (history at the bottom of this post): Measures
Measures are typically used like this:
Code: Select all
[YourMeasureName]
Measure=Plugin
Plugin=Plugins\ArgusMonitorPlugin.dll
ArgusType=CPUCoreTemperature
ArgusNumber=3
The ArgusNumber=3 part tells the plugin you want the temperature of the 4th CPU core. (Counting starts from 0 = 1st Core, 1 = 2nd Core, and so on, like the SpeedFan plugin.)
The ArgusNumber value is only used for some types and can be left blank for ones that don't need a number/index.
The plugin understands the following measure types:
CPU Measures:
- CPUName -- Returns the "name" of your CPU. e.g. "Intel Core i7-8700K"
- CPUSpec -- Returns the specification of your CPU, if any. e.g. "@ 3.70GHz". You often see this printed next to the name.
- CPULoad -- Returns the overall CPU load as a percentage.
- CPUPackageCount -- Returns the number of CPU packages (not cores or threads, but physical sockets). Will be 1 on most systems.
- CPUWatts -- Returns the overall power usage of a CPU package in Watts. On a multi-package system, use ArgusNumber to specify the package you want, either zero or one. (Power data for more than one package is not supported at time of writing.) Note that this reading may become incorrect on some motherboards after overclocking.
- CPUWattsMin -- On a machine with two CPU sockets/packages, returns the power reading from the package using the least power.
- CPUWattsMax -- On a machine with two CPU sockets/packages, returns the power reading from the package using the most power.
- CPUCoreCount -- Returns the number of CPU cores (not threads). (I expect this is the total for all packages, but can't test that.)
- CPUCoreTemperature -- Returns the temperature of a CPU core, in degrees Celsius. Use ArgusNumber to specify the core you want, starting from zero.
- CPUCoreTemperatureMin -- Returns the temperature of the coldest CPU core.
- CPUCoreTemperatureMax -- Returns the temperature of the hottest CPU core.
- CPUCoreMHz -- Returns the current speed of a CPU core in MHz. Use ArgusNumber to specify the core you want, starting from zero.
- CPUCoreMHzMin -- Returns the slowest current CPU core speed.
- CPUCoreMHzMax -- Returns the fastest current CPU core speed.
- GPUName -- Returns the name of a GPU. e.g. "NVIDIA GeForce GTX 1080 Ti". On a multi-GPU system, use ArgusNumber to specify the GPU you want, starting from zero. If you only have one GPU in the system, specify ArgusNumber=0 or leave it out entirely (it defaults to 0 if not specified, which gets you the first item).
- GPUTemperature -- Returns the temperature of a GPU, in degrees Celsius. Use ArgusNumber to specify the GPU you want, starting from zero.
- GPUTemperatureMin -- On a multi-GPU system, returns the coldest non-zero GPU temperature.
- GPUTemperatureMax -- On a multi-GPU system, returns the hottest non-zero GPU temperature.
- GPULoad -- Returns the percent load (utilisation) of a GPU, similar to the more familiar CPU load. Use ArgusNumber to specify the GPU.
- GPULoadMin -- On a multi-GPU system, returns the minimum GPU load.
- GPULoadMax -- On a multi-GPU system, returns the maximum GPU load.
- GPUCoreMHz -- The current core clock speed of a GPU. Use ArgusNumber to specify the GPU.
- GPUCoreMHzMin -- On a multi-GPU system, returns the minimum core clock speed of any GPU.
- GPUCoreMHzMax -- On a multi-GPU system, returns the maximum core clock speed of any GPU.
- GPUMemoryMHz -- The current memory clock speed of a GPU. Use ArgusNumber to specify the GPU.
- GPUMemoryMHzMin -- On a multi-GPU system, returns the minimum memory clock speed of any GPU.
- GPUMemoryMHzMax -- On a multi-GPU system, returns the maximum memory clock speed of any GPU.
- GPUShaderMHz -- The current shader clock speed of a GPU. (Not applicable to NVidia cards as far as I can tell. I don't know about others.) Use ArgusNumber to specify the GPU.
- GPUShaderMHzMin -- On a multi-GPU system, returns the minimum shader clock speed of any GPU.
- GPUShaderMHzMax -- On a multi-GPU system, returns the maximum shader clock speed of any GPU.
- GPUFanPercentPWM -- Returns the speed a GPU's fans are set to, as a percentage from 0 to 100. Use ArgusNumber to specify the GPU.
- GPUFanPercentPWMMin -- On a multi-GPU system, returns the smallest non-zero GPUFanPercentPWM reading.
- GPUFanPercentPWMMax -- On a multi-GPU system, returns the largest GPUFanPercentPWM reading.
- GPUFanRPM -- Returns the speed a GPU's fans are running at, in RPM (revolutions per minute). Use ArgusNumber to specify the GPU.
- GPUFanRPMMin -- On a multi-GPU system, returns the smallest non-zero GPUFanRPM reading.
- GPUFanRPMMax -- On a multi-GPU system, returns the largest GPUFanRPM reading.
- GPURamUsedMB -- Returns the amount of memory in use on a GPU, in megabytes. Use ArgusNumber to specify the GPU.
- GPURamUsedMBMin -- On a multi-GPU system, returns the smallest GPURamUsedMB reading.
- GPURamUsedMBMax -- On a multi-GPU system, returns the largest GPURamUsedMB reading.
- GPURamUsedPercent -- Returns the amount of memory in use on a GPU, as a percentage of its total memory. Use ArgusNumber to specify the GPU.
- GPURamUsedPercentMin -- On a multi-GPU system, returns the smallest GPURamUsedPercent reading.
- GPURamUsedPercentMax -- On a multi-GPU system, returns the largest GPURamUsedPercent reading.
- GPUPowerPercent -- Returns percentage of TDP (thermal design power) that a GPU is currently using. Use ArgusNumber to specify the GPU.
- GPUPowerPercentMin -- On a multi-GPU system, returns the smallest GPUPowerPercent reading.
- GPUPowerPercentMax -- On a multi-GPU system, returns the largest GPUPowerPercent reading.
- DriveName -- Returns the name of a drive. e.g. "SSD 960 EVO 500". Use ArgusNumber to specify the drive you want, starting from zero.
- DriveTemperature -- Returns the temperature of a drive, in degrees Celsius. Use ArgusNumber to specify the drive you want, starting from zero.
- DriveTemperatureMin -- Returns the temperature of the coldest drive (ignoring any that are reporting zero).
- DriveTemperatureMax -- Returns the temperature of the hottest drive.
- FanName -- Returns the name of a fan. You can edit the fan names within Argus Monitor, so this will be whichever name you have chosen for the fan in question. Use ArgusNumber to specify which fan, starting from zero.
- FanRPM -- Returns the speed of a fan, in RPM. Use ArgusNumber to specify which fan, starting from zero.
- FanRPMMin -- Returns the slowest RPM speed any fan is reporting (ignoring any that are reporting zero).
- FanRPMMax -- Returns the fastest RPM speed any fan is reporting.
- FanPercentPWM -- Returns the speed the fan is set to run at as a percentage from 0 to 100. Use ArgusNumber to specify which fan, starting from zero.
- FanPercentPWMMin -- Returns the slowest PWM percentage any fan is set to (ignoring any that are set to zero).
- FanPercentPWMMax -- Returns the fastest PWM percentage any fan is set to.
- FanModeID -- Returns a number representing how the fan's speed is currently controlled. 0 = BIOS controlled, 1 = Manual controlled (set to a fixed speed in the Argus Monitor UI), 2 = Software controlled (set to a fan curve against a temperature reading in the Argus Monitor UI). Use ArgusNumber to specify which fan, starting from zero.
- FanModeName -- The same as FanModeID, but returns a text string instead: "BIOS", "Manual" or "Software".
- TemperatureName -- Returns the name of a temperature from Argus Monitor's "Mainboard / Temperatures" settings page. You can edit these names yourself there to give them better meanings, especially for things plugged into any generic temperature sensor headers on the motherboard. Use ArgusNumber to specify which temperature you want, starting from zero.
- Temperature -- Returns a temperature reading, in degrees Celsius. Use ArgusNumber to specify which temperature you want, starting from zero.
- TemperatureMin -- Returns the coldest reported motherboard temperature (ignoring any that are reporting zero).
- TemperatureMax -- Returns the hottest reported motherboard temperature.
- Note that Rainmeter has far more versatile RAM meters built-in. These are only really here for completeness.
- RAMUsedGB -- Returns the amount of system RAM currently in use, in GB (gigabytes).
- RAMUsedPercent -- Returns the percentage of system RAM currently in use, from 0 to 100.
- BatteryChargePercent -- Returns the battery's charge level as a percentage.
- BatteryChargeState -- Returns a number indicating the battery's current charging state. 0 = Low, 1 = Mid, 2 = High.
History
v1.1.0.1 (15 May 2018):
- Updated to work with Argus Monitor 4.0.1 and 4.0.2. Kept compatibility with 3.6.2.
- Added new items (most of which require Argus Monitor 4) : CPUPackageCount, GPULoad, GPUCoreMHz, GPUMemoryMHz, GPUShaderMHz, GPUFanPercentPWM, GPUFanRPM, GPURAMUsedMB, GPURAMUsedPercent, GPUPowerPercent, BatteryChargePercent, BatteryChargeState.
- Added new min/max items for new things: GPULoadMin/Max, GPUCoreMHzMin/Max, GPUMemoryMHzMin/Max, GPUShaderMHzMin/Max, GPUFanPercentPWMMin/Max, GPUFanRPMMin/Max, GPURAMUsedMBMin/Max, GPURAMUsedPercentMin/Max, GPUPowerPercentMin/Max.
- Added new min/max items for old things: CPUWattsMin/Max, GPUTemperatureMin/Max, DriveTemperatureMin/Max, FanRPMMin/Max, FanPercentPWMMin/Max, TemperatureMin/Max.
- CPUWatts now works with multiple packages (up to 2), not just the first.
- GPUName now works with multiple GPUs, not just the first. (The other GPU readings to as well.)
- Max number of drives increased to 32.
- Max number of motherboard fans increased to 12.
- Max number of motherboard temperatures increasted to 12.
- Thanks to the Argus Monitor developer for providing information on the data structure and changes, and for adding extra GPU information to the data structure.
- Initial version, for Argus Monitor 3.6.2.