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

  • python mysql install error: /bin/sh: 1: mysql_config: not found /bin/sh: 1: mariadb_config: not found /bin/sh: 1: mysql_config: not found mysql_config --version
  • FreePBX 17 How To Add a Trunk
  • Docker Container Onboot Policy - How to make sure a container is always running
  • FreePBX 17 How To Add Phones / Extensions and Register
  • Warning: The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes. solution
  • Cisco How To Use a Third Party SIP Phone (eg. Avaya, 3CX)
  • Cisco Unified Communication Manager (CUCM) - How To Add Phones
  • pptp / pptpd not working in DD-WRT iptables / router
  • systemd-journald high memory usage solution
  • How to Install FreePBX 17 in Linux Debian Ubuntu Mint Guide
  • How To Install Cisco's CUCM (Cisco Unified Communication Manager) 12 Guide
  • Linux Ubuntu Redhat How To Extract Images from PDF
  • Linux and Windows Dual Boot Issue NIC Won't work After Booting Windows
  • Cisco CME How To Enable ACD hunt groups
  • How to install gns3 on Linux Ubuntu Mint
  • How to convert audio for Asterisk .wav format
  • Using Cisco CME Router with Asterisk as a dial-peer
  • Cisco CME How To Configure SIP Trunk VOIP
  • Virtualbox host Only Network Error Failed to save host network interface parameter - Cannot change gateway IP of host only network
  • Cisco CME and C7200 Router Testing and Learning Environment on Ubuntu 20+ Setup Tutorial Guide