Categories
Ubuntu

Set fan speed Nvidia GPU Ubuntu Server Headless

Here are the quick command to adjust NVIDIA GPU on headless ubuntu.

Run Display

X :1 &
export DISPLAY=:1

Copy this as fan.sh then set permission with chmod a+x fan.sh

The usage `./fan.sh 50 50`, which will adjust fan speed for 2x RTX 4090

#!/bin/bash
# Usage: ./set_fans.sh <fan_speed_gpu0> <fan_speed_gpu1>

if [ -z "$1" ] || [ -z "$2" ]; then
    echo "Usage: $0 <fan_speed_gpu0> <fan_speed_gpu1>"
    echo "Please provide two fan speeds (0-100)."
    exit 1
fi

# Validate input
for arg in "$1" "$2"; do
    if ! [[ "$arg" =~ ^[0-9]+$ ]] || [ "$arg" -lt 0 ] || [ "$arg" -gt 100 ]; then
        echo "Error: Fan speed must be an integer between 0 and 100."
        exit 1
    fi
done

FAN_SPEED_GPU0=$1
FAN_SPEED_GPU1=$2

# Start a dummy X server if not already running
if ! pgrep -x Xorg > /dev/null; then
    echo "Starting X server on :1..."
    X :1 & 
    sleep 3   # give Xorg time to start
fi

export DISPLAY=:1

# Apply fan settings
echo "Setting GPU 0 fans to $FAN_SPEED_GPU0%..."
nvidia-settings -a "[gpu:0]/GPUFanControlState=1"
nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$FAN_SPEED_GPU0"
nvidia-settings -a "[fan:1]/GPUTargetFanSpeed=$FAN_SPEED_GPU0"

echo "Setting GPU 1 fans to $FAN_SPEED_GPU1%..."
nvidia-settings -a "[gpu:1]/GPUFanControlState=1"
nvidia-settings -a "[fan:2]/GPUTargetFanSpeed=$FAN_SPEED_GPU1"
nvidia-settings -a "[fan:3]/GPUTargetFanSpeed=$FAN_SPEED_GPU1"

echo "✅ Fan speeds applied: GPU0=$FAN_SPEED_GPU0%, GPU1=$FAN_SPEED_GPU1%"

Leave a Reply

Your email address will not be published. Required fields are marked *