this worked for me (hybrid with i915 - radeon redwood (5000), ubuntu 11.10 64, unity)
most laptop "hybrid equiped" boot with both gpu ON (could explain why batteries last so few with a fresh install of ubuntu and default GRUB settings), but with IGD (i915) connected (seems to be by default with no BIOS tweak)
Well, lets say your're allready logged in Unity (or Gnome):
Just want to power off DIS to save your batt (you'll probably gain about 30 to 40%+ time) ? issue that in a terminal
echo "OFF"|sudo tee /sys/kernel/debug/vgaswitcheroo/switch
But I can guess your're waiting for more than that... switch from IGD to DIS!
Ok, read : first logoff unity... yes, you need!
open another terminal with
CRTL-ALT-F1
login and stop lightdm (on which runs the Unity shell)
sudo service lightdm stop
connect discret gpu (right after pressing ENTER, your screen may flicker... that sounds good! or it may ... just freeze! depend your setup.
echo "DDIS"|sudo tee /sys/kernel/debug/vgaswitcheroo/switch
verify the status
sudo cat /sys/kernel/debug/vgaswitcheroo/switch
should get
0:IGD: :Off:0000:00:02.0
1:DIS:+:Pwr:0000:01:00.0
then what you need is start the lightdm-Unity GUI
sudo service lightdm start
At that point you should get a regular Ubuntu 11 login screen, if not, try pressing
CRTL-ALT-F7 and login running on the DIS GPU
if it don't work, your computer may have frozen. Try back
CRTL-ALT-F1
to get the terminal and restart.
If you succeed to connect and use your DIS GPU, you will switch back to default both gpu ON with IGD connected setting next time you'll restart...
That's a really poor hybrid GPU switch support... but it works. Should be possible to force your prefered GPU setting during boot, just after vgaswitcheroo is available and before lightdm starts.
Better could be with GRUB and menu choice... if anyone knows how to?
Greater could be a script to run inside Unity... I'm afraid it'll be hard to do, because lightdm must be restarted!
Best Answer
In this version of Ubuntu, Dynamic Radeon Drivers are included and activated so that the old solution that you mention does not work.
To operate the old solution you can edit the file
/etc/default/grub
.In this file you can add the option
radeon.runpm=0
in the call to the current kernel (usually afterro quiet splash
).Alternatively, you can also add
radeon.runpm=0
to the value of the variableGRUB_CMDLINE_LINUX_DEFAULT
, then save and runsudo update-grub
.