Difference between revisions of "Switchable Graphics"

From ThinkWiki
Jump to: navigation, search
(added info for latest ubuntu)
 
(25 intermediate revisions by 8 users not shown)
Line 1: Line 1:
With newer laptops based on the Intel [[Centrino]] 2 platform (codename [[Montevina]]) switching between a weak, low power consumption integrated GPU and high performance dedicated GPU is possible with laptops with the feature enabled.  Some examples are the {{R400}}, {{T400}}, {{T500}}, {{w500}}.  Note that this feature is not available on any X or SL series laptop.
+
Select ThinkPads feature switchable graphics, where a low power consumption integrated GPU and high performance dedicated GPU is combined and you have the ability to switch between them, sacrificing either performance or battery life.
  
In Linux, switching graphics has to be done in the BIOS. 
+
In Windows XP this switching requires a logout/login, while in Vista and Windows 7 there is support for runtime switching.
In Windows, only Vista currently has drivers that allows on the fly switching. To do so, you need to have the power manager installed and running (Version 2.41a tested), then right-click on the green battery simbol (not the one from Vista) and choose the high or low power gpu under Switchable graphics.
 
  
On Ubuntu Intrepid Xorg wouldnt work at all ( vesa, intel and radeon drivers ). BIOS setting has to be either on Internal or External, not Switchable.
+
Under Linux, the switching so far had to be done by entering BIOS setup and changing between "Internal" (low power, integrated), "External" (high performance, discrete) or "Switchable" (OS selectable) options.
 +
 
 +
Depending on which Linux version you use, you could have the following effects
 +
* On Ubuntu 8.10 (Intrepid) BIOS setting has to be either on Internal or External, not Switchable.
 +
* On Ubuntu 9.10 (Karmic) the Integrated Intel card works with both Integrated or Switchable set
 +
* On Ubuntu 13.10 and above, see [http://www.junauza.com/2014/03/how-to-get-nvidia-optimus-working-on-ubuntu-linux.html | How to Get NVIDIA Optimus Working on Ubuntu Linux]
  
 
== Switchable Graphics and Docks ==
 
== Switchable Graphics and Docks ==
  
T400 (and probably other, not verified) laptops with switchable graphics can only drive DVI output in Advanced Mini-dock by using discrete graphics card, integrated GPU is just not attached to DVI output (though VGA output through dock is possible).
+
ThinkPads with switchable graphics can only drive DVI or DisplayPort outputs on Docks by using the high-performance discrete graphics card, the integrated GPU is just not attached to the DVI or DisplayPort outputs (though VGA output through the dock is possible).
 +
 
 +
== Improving Battery-life with Optimus ==
 +
ThinkPads with NVidia Optimus graphics, have been well known to have significantly better battery-life in Windows than in Linux, even when Linux only uses the internal graphics. The reason is that the NVidia GPU is not automatically powered off when it is not used. So to get optimal battery-life in Linux on ThinkPad with Optimus, you need to switch it off manually (or by a script).
 +
 
 +
First you need to enable access to vga-switcheroo settings, for that you need to mount the debugfs. You can do that by adding the following line to {{path|/etc/fstab}}:
 +
  none            /sys/kernel/debug debugfs defaults 0 0
 +
 
 +
After mounting that you can now access {{path|/usr/kernel/debug/vgaswitcheroo/switch}}.
 +
 
 +
See which GPU is currently active (look for '+'), and which ones are powered (look for 'pwr'):
 +
  {{cmdroot|cat /sys/kernel/debug/vgaswitcheroo/switch}}
 +
 
 +
To force it to use the internal graphics write:
 +
  {{cmdroot|echo 'IGD' > /sys/kernel/debug/vgaswitcheroo/switch}}
 +
 
 +
To force it to use the discrete GPU:
 +
  {{cmdroot|echo 'DES' > /sys/kernel/debug/vgaswitcheroo/switch}}
 +
 
 +
Most importantly, to poweroff the currently unused GPU, run:
 +
  {{cmdroot|echo 'OFF' > /sys/kernel/debug/vgaswitcheroo/switch}}
 +
 
 +
This will greatly improve to your average battery-life on ThinkPads T420 if you only use intel Xorg drivers.
 +
 
 +
== Development status ==
 +
David Arlie has been working on switching between GPUs without having to reboot, and changing BIOS settings. An initial version of a new driver (vga_switcheroo) has been merged in the 2.6.34 kernel. This driver allows switching between graphics cards, but requires that the Xserver is restarted. Full seamless runtime switching support will require significant Xserver work.
 +
 
 +
http://www.phoronix.com/scan.php?page=news_item&px=ODAyMg
 +
 
 +
A script to switch between ATI discrete graphics with the fglrx driver and Intel integrated graphics with xorg driver through rebooting and selection in the bios is posted here.  The user must reboot, but no further configuration is needed as the script detects the card used and copies the correct libraries and configuration file.
 +
 
 +
http://www.thinkwiki.org/wiki/Auto_detect_drivers_for_switchable_graphics
 +
 
 +
It has been discovered that on a W500 running Windows 7 64-bit that the switch can be invoked using one of the two following commands (depending on which chipset is currently in use)
 +
 
 +
{{cmd|C:\PROGRA~2\ThinkPad\UTILIT~1\PWMUIAux.exe /HighPerformanceGpu |}}
 +
 
 +
{{cmd|C:\PROGRA~2\ThinkPad\UTILIT~1\PWMUIAux.exe /EnergySavingGpu |}}
 +
 
 +
A small utility has been developed to switch between the chipsets with the ThinkVantage button, using Windows SetupAPI to detect the current chipset. More information and download of source and binary available here: http://entropicassembly.com/thinkpadgraphics/
 +
 
 +
== ThinkPad models which may have this feature ==
 +
* {{R400}}
 +
* {{T400}}, {{T500}}, {{T510i}}, {{T420}}, {{T420s}}, {{T520}}, {{T430s}}
 +
* {{W500}}, {{W520}}, {{W530}}

Latest revision as of 23:17, 13 March 2014

Select ThinkPads feature switchable graphics, where a low power consumption integrated GPU and high performance dedicated GPU is combined and you have the ability to switch between them, sacrificing either performance or battery life.

In Windows XP this switching requires a logout/login, while in Vista and Windows 7 there is support for runtime switching.

Under Linux, the switching so far had to be done by entering BIOS setup and changing between "Internal" (low power, integrated), "External" (high performance, discrete) or "Switchable" (OS selectable) options.

Depending on which Linux version you use, you could have the following effects

  • On Ubuntu 8.10 (Intrepid) BIOS setting has to be either on Internal or External, not Switchable.
  • On Ubuntu 9.10 (Karmic) the Integrated Intel card works with both Integrated or Switchable set
  • On Ubuntu 13.10 and above, see | How to Get NVIDIA Optimus Working on Ubuntu Linux

Switchable Graphics and Docks

ThinkPads with switchable graphics can only drive DVI or DisplayPort outputs on Docks by using the high-performance discrete graphics card, the integrated GPU is just not attached to the DVI or DisplayPort outputs (though VGA output through the dock is possible).

Improving Battery-life with Optimus

ThinkPads with NVidia Optimus graphics, have been well known to have significantly better battery-life in Windows than in Linux, even when Linux only uses the internal graphics. The reason is that the NVidia GPU is not automatically powered off when it is not used. So to get optimal battery-life in Linux on ThinkPad with Optimus, you need to switch it off manually (or by a script).

First you need to enable access to vga-switcheroo settings, for that you need to mount the debugfs. You can do that by adding the following line to /etc/fstab:

 none            /sys/kernel/debug debugfs defaults 0 0

After mounting that you can now access /usr/kernel/debug/vgaswitcheroo/switch.

See which GPU is currently active (look for '+'), and which ones are powered (look for 'pwr'):

 # cat /sys/kernel/debug/vgaswitcheroo/switch

To force it to use the internal graphics write:

 # echo 'IGD' > /sys/kernel/debug/vgaswitcheroo/switch

To force it to use the discrete GPU:

 # echo 'DES' > /sys/kernel/debug/vgaswitcheroo/switch

Most importantly, to poweroff the currently unused GPU, run:

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

This will greatly improve to your average battery-life on ThinkPads T420 if you only use intel Xorg drivers.

Development status

David Arlie has been working on switching between GPUs without having to reboot, and changing BIOS settings. An initial version of a new driver (vga_switcheroo) has been merged in the 2.6.34 kernel. This driver allows switching between graphics cards, but requires that the Xserver is restarted. Full seamless runtime switching support will require significant Xserver work.

http://www.phoronix.com/scan.php?page=news_item&px=ODAyMg

A script to switch between ATI discrete graphics with the fglrx driver and Intel integrated graphics with xorg driver through rebooting and selection in the bios is posted here. The user must reboot, but no further configuration is needed as the script detects the card used and copies the correct libraries and configuration file.

http://www.thinkwiki.org/wiki/Auto_detect_drivers_for_switchable_graphics

It has been discovered that on a W500 running Windows 7 64-bit that the switch can be invoked using one of the two following commands (depending on which chipset is currently in use)

C:\PROGRA~2\ThinkPad\UTILIT~1\PWMUIAux.exe /HighPerformanceGpu

C:\PROGRA~2\ThinkPad\UTILIT~1\PWMUIAux.exe /EnergySavingGpu

A small utility has been developed to switch between the chipsets with the ThinkVantage button, using Windows SetupAPI to detect the current chipset. More information and download of source and binary available here: http://entropicassembly.com/thinkpadgraphics/

ThinkPad models which may have this feature