Why does my laptop with AMD Radeon HD 76xx graphics get overheated when using Ubuntu?

OP reported in Revision 2 of the question that he managed to solve the problem:

Managed to fix the problem by installing AMD proprietary drivers downloaded from AMD website, after deactivating the driver suggested by Ubuntu!

Right now the sensors temperature is 47deg C! and battery backup of 4 hrs! HOORAY!


Solution/workaround with open-source drivers: (kernels>=3.11)

I had the same problem; my laptop will even shutdown itself for overheating few minutes after the boot (and sometime it didn't even manage to finish the boot).

My machine Samsung Chronos 7 (see note (3)) with hybrid graphics:

00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Seymour [Radeon HD 6400M/7400M Series]

switching to proprietary drivers helped, but sometime it was overheating too. With open-source drivers, often it didn't arrive to finish the boot. I managed to fix it and use the open-source drivers in Ubuntu 13.10, kernel 3.11.x.

Disclaimer: I do not mind having reduced 3D performance. If you mind it, try installing the latest proprietary drivers.

a) go back to open-source drivers by removing all fglrx packages (link, link). Be sure to remove /etc/X11/xorg.conf if you have one --- it can block open-source drivers to find screens.

b) fundamental add the kernel boot parameter radeon.dpm=1 (see note 1). This alone keeps the temperature down (although higher than I like). (Edit: should be the default on 14.04 onward).

c) Identify the card number (see note 2). In my case is card1, you can say it looking if a file named /sys/class/drm/card1/device/power_dpm_state exists. Go superuser in a terminal with sudo -i and do

echo battery > /sys/class/drm/card1/device/power_dpm_state

this make my GPU 20 degrees (C) colder. I added this to my /etc/rc.local:

# avoid overheating of the AMD GPU
if [ -f /sys/class/drm/card1/device/power_dpm_state ]; then
      echo battery > /sys/class/drm/card1/device/power_dpm_state
fi

d) After suspend/resume, strangely, the GPU is hotter. A solution is to issue (as above in a superuser terminal)

echo low > /sys/class/drm/card1/device/power_dpm_force_performance_level

Interesting links:

  • http://xpressrazor.wordpress.com/2013/10/08/enable-and-use-open-source-radeon-drivers-in-a-muxless-hybrid-graphics-intelamd-setup/

  • http://ubuntuforums.org/showthread.php?t=1930450

  • http://ubuntuforums.org/showthread.php?t=2126769


Footnotes:

(1) This will enable "dynamic power management" for the radeon driver. FWIK, it will be the default setting in 14.04 and up, so this hack should become obsolete soon.

Main link: https://wiki.archlinux.org/index.php/ATI#Dynamic_power_management

(2) Note that sometime the AMD card changes number across reboots. As a solution I have put in my scripts (I had to put it as is in /etc/rc.local and a similar concoction in a resume script in /etc/pm/sleep.d/01-stay-cool --- comment or read here if you need assistance for the resume script).

# avoid overheating of the AMD GPU
if [ -f /sys/class/drm/card1/device/power_dpm_state ]; then
      echo battery > /sys/class/drm/card1/device/power_dpm_state
      echo low > /sys/class/drm/card1/device/power_dpm_force_performance_level
fi
if [ -f /sys/class/drm/card0/device/power_dpm_state ]; then
      echo battery > /sys/class/drm/card0/device/power_dpm_state
      echo low > /sys/class/drm/card0/device/power_dpm_force_performance_level
fi

(3) Exact model for being google friendly (sudo dmidecode):

System Information
        Manufacturer: SAMSUNG ELECTRONICS CO., LTD.
        Product Name: 700Z3A/700Z4A/700Z5A/700Z5B
        Graphic card Radeon HD 6400M/7400M Series
        Version: 0.1