In Ubuntu 10.10 and up, vgaswitchheroo is already enabled so you don't need extra settings. And /sys/kernel/debug
is already mounted, however you need root permissions to read the contents of /sys/kernel/debug
, so using sudo su
should work.
If there's still no switch, run lspci | grep VGA
and make sure both cards are outputted. If one is missing a BIOS setting might be the cause, so check that.
Console example:
sergio@Sergio-L:~$ ls /sys/kernel/debug/vgaswitcheroo
ls: impossÃvel aceder a /sys/kernel/debug/vgaswitcheroo: Permissão negada
sergio@Sergio-L:~$ sudo su
[sudo] password for sergio:
root@Sergio-L:/home/sergio#
root@Sergio-L:/home/sergio# ls /sys/kernel/debug/vgaswitcheroo/
switch
root@Sergio-L:/home/sergio#
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
A simplistic way would be to add
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
to/etc/rc.local
before theexit 0
so it looks like this: