The main purpose of this article is to show how to disable the discrete AMD graphics card in a switchable graphics setup in laptops. The integrated graphics card can be an AMD or an Intel. Disabling the discrete graphics card save your laptop from overheating and will save considerable amount of power. It will also reduce the fan noise.

This article is intended for those who are ready to have only the integrated card enabled. If you can configure both cards correctly, then you probably don’t need this. If you would like to have both cards running and want to switch between them, you need to look elsewhere.

The Problem:

I’ve a HP DV6TQE model with HD 7690M discrete graphics and Sandy Bridge Intel 3000 integrated graphics card. All the distributions I’ve tried so far ran too hot with a lot of fan noise. In some cases, the laptop would not turn on after a reboot as it reached the maximum temperature it can handle. The integrated card is capable enough to play 1080p video and desktops effects and hence I prefer the dedicated card turned off all the time.

The Solution:

  • Check if you have two graphics cards

Open ‘terminal’ and type the following command.

                                  lspci | grep VGA

If you see more than one graphics card, then you have a switchable graphics setup.

  • Check if both the cards are powered on

To check this, we need be able to view the file /sys/kernel/debug/vgaswitcheroo/switch. Type the following in terminal.

                                  cat /sys/kernel/debug/vgaswitcheroo/switch

If you get  ‘Permission Denied’ error, then type,

                                  sudo chown <your user name> /sys/kernel/debug/

and then, type

                                  sudo chown <your user name> /sys/kernel/debug/vgaswitcheroo/switch

Now you should be able to view the file using the ‘cat’ command given above.

If you get ‘No such file or directory’ error when trying the command ‘cat /sys/kernel/debug/vgaswitcheroo/switch’, then type

                                  sudo mount debugfs none /sys/kernel/debug

and follow the above ‘cat’ command to view the ‘switch’ file.

The result of the ‘cat /sys/kernel/debug/vgaswitcheroo/switch’ will have ‘Pwr’ in both lines (for integrated card which is denoted using the string “IGD”  and“DIS” for discrete card)  indicating both cards are powered on.

  • Disable the discrete graphics card

To disable the discrete card which is consuming much of the power, type

                                  echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

and if you check the ‘switch’ file using the ‘cat’ command given before, you can see that the ‘Pwr’ has been changed to ‘off’.

The below screen shot shows the steps needed for a Ubuntu based system.

You can use a temperature monitoring tool to compare the power usages before and after disabling the discrete graphics card.

To have the discrete card disabled at system start-up so that you won’t have to do all these steps at every time you boot your system, follow the steps given below.

Open ‘Terminal’ and type

                                  ls /etc/rc.local

If the file is found then

                                  sudo gedit /etc/rc.local

If the file rc.local is not found under directory /etc, then you can try

                                  sudo gedit /etc/rc.d/rc.local

and in the opened text file, enter the following text before the line ‘exit 0′. If there is no such line, just add these line at the end of the file.

                                  chown <your user name> /sys/kernel/debug/vgaswitcheroo/switch
                                  echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

If you have received ‘No such file or directory’ when trying the command ‘cat /sys/kernel/debug/vgaswitcheroo/switch’ , then type,

                                  sudo gedit /etc/fstab

and in the opened text file, add the following line at the end.

                                  none          /sys/kernel/debug      debugfs        defaults    0      0

Notes:

  • I’ve tested the above method only using the ATI/Intel available in my laptop
  • Distributions tested : Ubuntu 12.10 and derivatives of Ubuntu ( LuninuX OS, SnowLinux), Slakel, Manjaro
  • Try the latest closed source AMD driver if possible