evga-icx/README.md

105 lines
3.6 KiB
Markdown
Raw Normal View History

2025-01-30 01:52:01 -08:00
# 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.
## Prerequisites
A supported EVGA 30-series iCX3 card. I have not done extensive testing but belive this is every model of their:
* 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.
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
2025-02-02 21:43:54 -08:00
* libnvidia-ml-dev (if building with `USE_NVML=1`)
* libpci-dev (if building with `USE_LIBPCI=1`)
2025-01-30 01:52:01 -08:00
## 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. This requires the NVIDIA management library (NVML) to be installed.
### VRAM and Hotspot temperature
Add the make flag `USE_LIBPCI=1` and you can also read the VRAM and "hotspot" temperatures. These require direct memory access to the PCI device so you must run as root and also enable the kernel parameter `iomem=relaxed`. These sensors are **extremely** undocumented so I can't say anything about their accuracy.
2025-01-30 01:52:01 -08:00
## 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:
--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
2025-01-31 22:24:47 -08:00
--compact : Print sensor reading in a compact one-line per card format
2025-02-01 08:22:52 -08:00
--watch N : Keep printing output every N seconds
2025-02-03 06:17:35 -08:00
--overwrite : Overwrite previously displayed info with --watch and --compact instead of continuously logging new lines
2025-02-03 06:34:33 -08:00
--color : Print headers in color in --compact mode for better readability
2025-01-30 01:52:01 -08:00
```
### Examples:
Read sensors:
```text
$ ./evga-icx
#0: EVGA GeForce RTX 3090 FTW3 Ultra v2 (/dev/i2c-3) @ c:00.0
2025-02-03 06:17:35 -08:00
Fan 0: 2133 RPM (71/0%, Auto)
Fan 1: 2123 RPM (70/0%, Auto)
Fan 2: 2122 RPM (70/0%, Offset)
2025-01-30 01:52:01 -08:00
Ext. fan: 0 RPM (0/0%, Offset)
2025-02-03 06:17:35 -08:00
GPU1: +73°C
GPU2: +70.6°C
VRAM: +86°C
MEM1: +68.9°C
MEM2: +65.1°C
MEM3: +70.2°C
PWR1: +60.9°C
PWR2: +66.4°C
PWR3: +73.0°C
PWR4: +71.5°C
PWR5: +65.6°C
HotSpot: +84°C
Clock reasons: Power cap (0x4)
2025-02-02 21:43:54 -08:00
```
Compact one-line mode:
```text
$ ./evga-icx --compact
2025-02-03 06:17:35 -08:00
#0 FAN 72 72 72 0% GPU 76 73 MEM 90 72 67 72 PWR 63 69 76 74 68 HOT 86°C CLK Pwr
2025-01-30 01:52:01 -08:00
```
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!