Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Copyright Dobromir Dobrev © 2017 : dobreff@gmail.com
- # Remember to start Xorg server first using "sudo X :0 &"
- # The configuration file
- JSON=`cat /root/config.json`
- osSeries=`echo $JSON | jq -r .osSeries`
- # Getting GPU Cards
- if [ "$osSeries" == "nvidia" ]; then
- GPU_COUNT=`nvidia-smi -a |grep Temperature | wc -l`
- else
- echo "Get going, no nvidia cards are supported"
- fi
- # Default values
- nvTempTarget=70
- nvFanSpeedMin=45
- # User defined values
- nvTempTargetUser=`echo $JSON | jq -r .nvTempTarget`
- nvFanSpeedMinUser=`echo $JSON | jq -r .nvFanSpeedMin`
- if [ "$nvTempTargetUser" -ge 30 ] && [ "$nvTempTargetUser" -le 85 ]; then
- nvTempTarget="$nvTempTargetUser"
- fi
- if [ "$nvFanSpeedMinUser" -ge 20 ] && [ "$nvFanSpeedMin" -le 100 ]; then
- nvFanSpeedMin="$nvFanSpeedMinUser"
- fi
- x=0
- while [ $x -lt $GPU_COUNT ]; do
- if [ "$osSeries" == "nvidia" ]; then
- GPU_FAN=`nvidia-smi -q --gpu=$x |grep "Fan Speed" | awk -F " " '{print $4}' | tr -d '%'`
- GPU_TEMP=`nvidia-smi -q --gpu=$x |grep "GPU Current Temp" | awk -F " " '{print $5}' | tr -d 'C'`
- fi
- FAN_UP_STEP=30
- FAN_DOWN_STEP=2
- DIFF=`echo "$((nvTempTarget-GPU_TEMP))" | sed 's/-//g'`
- if [ $DIFF -ge 7 ]; then
- FAN_UP_STEP=100
- FAN_DOWN_STEP=2
- elif [ $DIFF -ge 5 ]; then
- FAN_UP_STEP=30
- FAN_DOWN_STEP=1
- elif [ $DIFF -ge 4 ]; then
- FAN_UP_STEP=12
- FAN_DOWN_STEP=1
- elif [ $DIFF -ge 3 ]; then
- FAN_UP_STEP=8
- FAN_DOWN_STEP=1
- elif [ $DIFF -ge 2 ]; then
- FAN_UP_STEP=1
- FAN_DOWN_STEP=1
- elif [ $DIFF -ge 1 ]; then
- FAN_UP_STEP=1
- FAN_DOWN_STEP=0
- elif [ $DIFF -ge 0 ]; then
- FAN_UP_STEP=0
- FAN_DOWN_STEP=0
- fi
- NEW_GPU_FAN=$GPU_FAN
- if [ $GPU_TEMP -gt $((nvTempTarget)) ]; then
- NEW_GPU_FAN=$(( GPU_FAN + FAN_UP_STEP ))
- fi
- if [ $GPU_TEMP -lt $((nvTempTarget-2)) ]; then
- NEW_GPU_FAN=$(( GPU_FAN - FAN_DOWN_STEP ))
- fi
- if [ $NEW_GPU_FAN -le $nvFanSpeedMin ]; then
- NEW_GPU_FAN=$nvFanSpeedMin
- fi
- if [ $NEW_GPU_FAN -ge 100 ]; then
- NEW_GPU_FAN=100
- fi
- if [ "$osSeries" == "nvidia" ]; then
- DISPLAY=:0.$x /usr/bin/nvidia-settings -a [gpu:$x]/GPUFanControlState=1 -a [fan:$x]/GPUTargetFanSpeed=$NEW_GPU_FAN
- fi
- x=$((x+1))
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement