moosecrap 4c5321bc4e Added support for some NVML sensors.
GPU temp sensor and clock reasons.
2025-02-02 21:42:30 -08:00
WIP
2025-01-19 23:27:43 -08:00
WIP
2025-01-19 23:27:43 -08:00
2025-02-01 08:04:41 -08:00
2025-02-01 08:04:41 -08:00
2025-02-02 21:42:30 -08:00
2025-02-01 08:04:41 -08:00
2025-02-02 21:42:30 -08:00
2025-02-02 21:42:30 -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

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.

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.

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
--compact    : Print sensor reading in a compact one-line per card format
--watch N    : Keep printing output every N seconds

Examples:

Read sensors:

$ ./evga-icx
#0: EVGA GeForce RTX 3090 FTW3 Ultra v2 (/dev/i2c-3) @ c:00.0
Fan 0: 1934 RPM (64/0%, Auto)
Fan 1: 1930 RPM (64/0%, Auto)
Fan 2: 1944 RPM (64/0%, Offset)
Ext. fan: 0 RPM (0/0%, Offset)
GPU2: +64.1°C
MEM1: +62.2°C
MEM2: +58.2°C
MEM3: +62.2°C
PWR1: +54.3°C
PWR2: +59.4°C
PWR3: +66.0°C
PWR4: +64.3°C
PWR5: +57.6°C

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!

Description
Read ICX3 sensors and control fans on Linux with EVGA's 30-series video cards.
Readme MIT-0 163 KiB
2025-02-21 11:32:02 -08:00
Languages
C 99.2%
Makefile 0.8%