Set ATI/AMD GPU Fan speed with MESA Driver

  1. First I advise you to update your kernel, because based on this link, updating the kernel solves the heating problem. A guide to update your kernel maybe found in this question

  2. Install shell-extension-radeon-power-profile-manager

  3. If the problem persist we will try to create a profile for low power GPU:

Based on this XOrg link

The Power Management code supports two basic methods:

"dynpm"
"profile" 

You can select the methods via sysfs. Echo "dynpm" or "profile" to /sys/class/drm/card0/device/power_method.

sudo echo profile >  /sys/class/drm/card0/device/power_method

Controlling the fan speed directly is not possible (and would be very dangerous), but it can be lowered by setting lower power profile

The "dynpm" method dynamically changes the clocks based on the number of pending fences, so performance is ramped up when running GPU intensive apps, and ramped down when the GPU is idle. The reclocking is attemped during vertical blanking periods, but due to the timing of the reclocking functions, doesn't not always complete in the blanking period, which can lead to flicker in the display. Due to this, dynpm only works when a single head is active.

The "profile" method exposes five profiles that can be selected from:

"default"
"auto"
"low"
"mid"
"high" 

Select the profile by echoing the selected profile to /sys/class/drm/card0/device/power_profile.

  • "default" uses the default clocks and does not change the power state. This is the default behavior.
  • "auto" selects between "mid" and "high" power states based on the whether the system is on battery power or not. The "low" power state are selected when the monitors are in the dpms off state.
  • "low" forces the gpu to be in the low power state all the time. Note that "low" can cause display problems on some laptops; this is why auto does not use "low" when displays are active.
  • "mid" forces the gpu to be in the "mid" power state all the time. The "low" power state is selected when the monitors are in the dpms off state.
  • "high" forces the gpu to be in the "high" power state all the time. The "low" power state is selected when the monitors are in the dpms off state.

Thus, to select low profile:

sudo bash -c "echo profile > /sys/class/drm/card0/device/power_method"
sudo bash -c "echo low > /sys/class/drm/card0/device/power_profile"

Try these commands

sudo -i 
echo low >  /sys/class/drm/card0/device/power_profile
exit

wait few seconds and check again the temperature.

Above command will pass the low profile so the temperature will fall down as the fan as well.

If you want to use this in an installed system you can pass the command in every boot through rc.local

sudo sed '/^[^#]*exit 0/i echo low >  /sys/class/drm/card0/device/power_profile' -i /etc/rc.local

Thanks