119 lines
4.8 KiB
Markdown
119 lines
4.8 KiB
Markdown
# evga-icx
|
|
|
|
This program allows you to read temperature sensors off of supported EVGA 30-series iCX3 video cards, as well as control the fans individually.
|
|
|
|
Also a mashup of a bunch of other temperature sensor stuff too like Blackwell cards, lm_sensors, and DCGM metrics that I have just thrown in here.
|
|
|
|
## Prerequisites
|
|
A supported EVGA 30-series card with iCX3. This includes:
|
|
* RTX 3060 Ti
|
|
* RTX 3070
|
|
* RTX 3070 Ti
|
|
* RTX 3080
|
|
* RTX 3080 Ti
|
|
* RTX 3090
|
|
* RTX 3090 Ti
|
|
|
|
The number of fans supported depends, of course, on your particular model.
|
|
|
|
You must have the `i2c-dev` kernel module loaded with `modprobe i2c-dev`
|
|
|
|
Access to the `/dev/i2c` device files, which means either:
|
|
* Run as root, or
|
|
* Install udev rules to allow user access. If you have the OpenRGB udev rules installed to control the LEDs you already have this set up.
|
|
|
|
## Dependencies
|
|
* libi2c-dev
|
|
* libnvidia-ml-dev (if building with `USE_NVML=1`)
|
|
* datacenter-gpu-manager-4-dev (if building with `USE_DCGM=1`)
|
|
|
|
## Building
|
|
`make`
|
|
|
|
## Optional features
|
|
|
|
### NVML support
|
|
Add the make flag `USE_NVML=1` and the it will also display the main GPU temperature ("GPU1") as reported by the NVIDIA driver. It will also display the performance cap/clock reason and memory controller utilization. This requires the NVIDIA management library (NVML) to be installed.
|
|
|
|
### VRAM and Hotspot temperature
|
|
Run as root and you can also read the VRAM and "hotspot" temperatures. These require access the BAR0 through the `/sys/bus/pci/devices/*/resource0` device files. These sensors are **extremely** undocumented so I can't say anything about their accuracy. If you have a Blackwell (50 series) card you can read all 4 die temp sensors, a 'system' temperature, and every individual VRAM chip temp (add your card in blackwell-temps.c). You will probably require the kernel parameter `iomem=relaxed`.
|
|
|
|
### Datacenter GPU Manager metrics
|
|
Add the make flag `USE_DCGM=1` and it can display real-time metrics from supported Nvidia GPUs like SM occupancy, integer/fp pipe usage, tensor usage, and DRAM bandwidth utilization. This requires a Quadro/Workstation or a Tesla/Datacenter card, it does not work on GeForce cards.
|
|
|
|
### Hardware monitoring
|
|
This program can also monitor hardware sensors using the standard linux `hwmon` API. See board-sensors.h for examples of how to configure these, they must be staticlly compiled in.
|
|
|
|
## Usage
|
|
Note that when controlling fans directly through iCX3 they will fall offline from the Nvidia driver and show as 0 RPM until you return them to automatic mode.
|
|
|
|
```text
|
|
Available options:
|
|
--i2c N : Only probe I2C bus N instead of all (may help with stuttering or freezing when probing I2C devices)
|
|
--gpu N : Control only GPU N instead of all supported cards
|
|
--fan SPEED : Set all fans at once to SPEED (see below)
|
|
--fanN SPEED : Set fan N (0-3) to SPEED
|
|
SPEED may be one of the following:
|
|
'auto' to return the fan to its default control mode
|
|
N to set the fan to that manual % speed
|
|
[+/-]N to set that fan to an RPM offset from the GPU-controlled speed
|
|
--reset : Reset all fans to their default mode
|
|
--sensors : Print sensor readings even if setting a fan speed
|
|
--compact : Print sensor reading in a compact one-line per card format
|
|
--watch N : Keep printing output every N seconds
|
|
--overwrite : Overwrite previously displayed info with --watch and --compact instead of continuously logging new lines
|
|
--color : Print headers in color in --compact mode for better readability
|
|
--no-reasons : Do not query NVML for clock reasons (can cause stuttering)
|
|
--board : Also print temperatures from the CPU, motherboard, and other sensors
|
|
```
|
|
|
|
### Examples:
|
|
Read sensors:
|
|
```text
|
|
$ ./evga-icx
|
|
#0: EVGA GeForce RTX 3090 FTW3 Ultra v2 (/dev/i2c-3) @ c:00.0
|
|
Fan 0: 1751 RPM (58/0%, Auto)
|
|
Fan 1: 1730 RPM (57/0%, Auto)
|
|
Fan 2: 1712 RPM (57/0%, Offset)
|
|
Ext. fan: 0 RPM (0/0%, Offset)
|
|
GPU1: +65°C
|
|
GPU2: +57.8°C
|
|
VRAM: +74°C
|
|
MEM1: +56.1°C
|
|
MEM2: +53.5°C
|
|
MEM3: +55.5°C
|
|
PWR1: +48.2°C
|
|
PWR2: +53.2°C
|
|
PWR3: +59.6°C
|
|
PWR4: +58.0°C
|
|
PWR5: +51.1°C
|
|
HotSpot: +75°C
|
|
Mem util: 43%
|
|
Clock reasons: Power cap (0x4)
|
|
```
|
|
|
|
Compact one-line mode:
|
|
```text
|
|
$ ./evga-icx --compact
|
|
#0 FAN 59 59 58 0% GPU 66 60 MEM 74 58 55 58 PWR 49 55 61 60 53 HOT 77°C MEM 42% CLK Pwr
|
|
```
|
|
|
|
Set external fan to follow Nvidia driver controlled speed with a -500 RPM offset:
|
|
|
|
`evga-icx --fan3 -500`
|
|
|
|
Set all fans to manual 100%
|
|
|
|
`evga-icx --fan 100`
|
|
|
|
Force all fans on card 0 to off except for fan1:
|
|
|
|
`evga-icx --gpu 0 --fan1 0 --fan2 auto --fan3 0 --fan4 0`
|
|
|
|
Return fans back to Nvidia driver control:
|
|
|
|
`evga-icx --reset`
|
|
|
|
### Future capabilities
|
|
It appears to also be possible to read power and voltage sensors off of the K|NGP|N cards, and possibly even control the onboard OLED screen. If you have one of these and are willing to help test this please contact me!
|