I am using open-source driver amdgpu on my arch linux. I read that I can overclock my GPU by writing to this files: /sys/class/drm/card0/device/pp_sclk_od and /sys/class/drm/card0/device/pp_mclk_od to adjust my GPU's core and mem frequencies accordingly. But when I write, for example 5, to any of this files it resets it to 0 and clocks aren't applied.

Also I have this file pp_dpm_sclk and pp_dpm_mclk the contents of sclk is: 0: 300Mhz 1: 483Mhz 2: 662Mhz 3: 841Mhz 4: 881Mhz 5: 914Mhz 6: 939Mhz 7: 947Mhz *

And I can actually switch between this frequencies, but I want to go way beyond 947 and I don't understand how to do this.

Question is why pp_mclk_od and pp_sclk_od resets to 0 when I try to give some percentage boost (0-20) to it? And how can I add more frequencies to pp_dpm_sclk and select it from there if I can't achieve it with od?


You can change the frequencies and voltage by modifying the file /sys/class/drm/card0/device/pp_od_clk_voltage

first: This holds the presets for pp_dpm_sclk and pp_dpm_mclk.

Second check the current settings:

sudo cat /sys/class/drm/card0/device/pp_od_clk_voltage

You should see something similar to this:

0:        300MHz        750mV
1:        588MHz        765mV
2:        980MHz        987mV
3:       1100MHz        950mV
4:       1100MHz        950mV
5:       1100MHz        950mV
6:       1100MHz        950mV
7:       1100MHz        950mV
0:        300MHz        750mV
1:       1000MHz        800mV
2:       1970MHz        950mV
SCLK:     300MHz       2000MHz
MCLK:     300MHz       2250MHz
VDDC:     750mV        1150mV

Example to set 1280Mhz at 950mV (check your output above for possible ranges!):

sudo echo "s 7 1280 950" > /sys/class/drm/card0/device/pp_od_clk_voltage

Then to apply the changes:

sudo echo 0 > /sys/class/drm/card0/device/pp_sclk_od
sudo echo 1 > /sys/class/drm/card0/device/pp_sclk_od

These are all the settings I use on my crypto mining card which is an AMD Radeon RX570 in case it's useful to anyone.

echo 1 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable
echo manual > /sys/class/drm/card0/device/power_dpm_force_performance_level
echo 200 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1 # Fan speed
echo 4 > /sys/class/drm/card0/device/pp_power_profile_mode # Compute Mode

echo "s 3 1100 950" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 4 1100 950" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 5 1100 950" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 6 1100 950" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 7 1100 950" > /sys/class/drm/card0/device/pp_od_clk_voltage

echo "m 2 1985 950" > /sys/class/drm/card0/device/pp_od_clk_voltage

echo 0 > /sys/class/drm/card0/device/pp_sclk_od
echo 1 > /sys/class/drm/card0/device/pp_sclk_od

echo 0 > /sys/class/drm/card0/device/pp_mclk_od
echo 1 > /sys/class/drm/card0/device/pp_mclk_od

2 possibilities to consider:

1)not all cards support this function

2) In Ubuntu at least, you have to modify those files as root not just use "sudo". So make sure you:

sudo su

to become root user. then:

echo "5" >> ./pp_mclk_od (for example)

  • Can you elaborate on the inadequacy of sudo (contrasted to root) or provide a reference? – Scott Jan 17 '18 at 5:25
  • @Scott he's wrong, sudo is perfectly adequate – radman Feb 26 '18 at 23:50
  • @radman no he's right. sudo gives Permission Denied – Tooniis Jan 13 at 10:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for?Browse other questions tagged or ask your own question.