AMD Set Fan Speed and Other Powerplay Memory/CPU Timings with a Linux script

You can do other things but this particular script is just to set all AMD cards to 80% fan speed (remember this script needs to applied everytime you reboot). You could set it is a cron or just throw it into /etc/rc.local

basepath=/sys/class/drm
for hwmon in `ls -1 /sys/class/drm|grep card[0-99]$`; do
echo card=$hwmon;
hwmonname=`ls $basepath/$hwmon/device/hwmon|grep hwmon[0-99]`
hwmonpath=$basepath/$hwmon/device/hwmon/$hwmonname
echo "echo 1 > $hwmonpath/pwm1_enable"
echo "echo 205 > $hwmonpath/pwm1"
echo 1 > $hwmonpath/pwm1_enable
echo 205 > $hwmonpath/pwm1
done

The way it works is as follows:

The card power play settings are located in:

/sys/class/drm/cardNumber/device/hwmon/hwmonNumber

The card number is also the same order that you'll find in say Claymore and the hwmon number is usually 1 less than your card number.  So as you can see below card4's hwmon path is hwmon3.

In the script I account for that just in case it may be different though.

cat /sys/class/drm/card4/device/hwmon/hwmon3/pwm1_enable
2

#enable pwm (if the value is not 1 it is not enabled so setting the fan speed would have no effect)
echo 1 > /sys/class/drm/card4/device/hwmon/hwmon3/pwm1_enable

The parameters for fan speed are a percentage or number out of max 255.  So 80% would be the number 205 (it also seems to round to the nearest 5% I believe)

 cat /sys/class/drm/card4/device/hwmon/hwmon3/pwm1_max
255
cat /sys/class/drm/card4/device/hwmon/hwmon3/pwm1_min
0


# 210/255 is about 82% fan speed (this still resulted in 80% actual fan speed)
echo "210" > /sys/class/drm/card4/device/hwmon/hwmon3/pwm1

 

The results of higher fan speeds

In one of my test rigs see that on some cards the temperature reduced by about 14C degrees!

Before:

ETH: GPU0 t=72C fan=64%, GPU1 t=72C fan=63%, GPU2 t=69C fan=23%, GPU3 t=84C fan=0%, GPU4 t=69C fan=27%
 

After:

ETH: GPU0 30.457 Mh/s, GPU1 30.455 Mh/s, GPU2 29.473 Mh/s, GPU3 29.498 Mh/s, GPU4 29.484 Mh/s
GPU0 t=65C fan=80%, GPU1 t=71C fan=80%, GPU2 t=55C fan=80%, GPU3 t=57C fan=80%, GPU4 t=55C fan=80%


Tags:

amd, powerplay, cpu, timings, linux, scriptyou, applied, everytime, reboot, cron, etc, rc, basepath, sys, drm, hwmon, ls, grep, echo, hwmonname, hwmonpath, quot, pwm, _enable, follows, settings, located, cardnumber, hwmonnumber, ll, claymore, enable, enabled, parameters, percentage, nearest, _max, _min, resulted, speeds, rigs, reduced, eth, gpu, mh,

Latest Articles

  • 'virtio0' uses a qcow2 feature which is not supported by this qemu version: QCOW version 3
  • Linux bash script to get the IP of a list of hostnames
  • How To Use Camera Webcam in Docker for OBS Studio etc...
  • Computer Server Won't Post Boot Or Enter BIOS Setup After Installing RAID SAS or GPU Card etc..
  • How To Test PHP Scripts from CLI with GET variables/query string
  • apt-cache how to see all available versions of a package in Debian Ubuntu Mint
  • Virtualbox VBox Guest-utils drag and drop files stops working with Windows VMs
  • How To Remove Ubuntu Netplan and Go Back to /etc/network/interfaces
  • How To Force Flash an AMD Instinct GPU To Another Model Using Debian Ubuntu Mint Linux
  • How To compile ollama from source to use unsupported AMD GPU with rocm in Ubuntu Debian
  • QEMU KVM Virtio GPU Windows Cannot Select 1080P
  • Linux Gnome Desktop Ubuntu Mint Debian Gets Slower After Weeks
  • Firefox How to Save Full Page As Screenshot/PDF
  • Nvidia Datacenter Driver Tesla Slow nvidia-smi response and high utilization with 0 usage
  • ffmpeg how to normalize / increase the volume of your audio
  • kdenlive audio blips pops cracks artifacts solution fix
  • haproxy / nginx certbot SSL issues
  • nginx how to see the real IP when behind a CDN
  • Docker how to find real container child process ID
  • Alibaba Aliyun how to reset password solution 'Setup does not meet the requirements, please resetting'