vgaswitcheroo not selecting discrete card

I have a Dell 5110 laptop that has hybrid graphics. I have tried using vgaswitcheroo to some limited success, but I have still not been able to select my discrete ATI 6470 card. I use the following commands with the following outputs:

root@mikelaptop:~# cat /sys/kernel/debug/vgaswitcheroo/switch
0:DIS: :Off:0000:01:00.0  
1:IGD:+:Pwr:0000:00:02.0

root@mikelaptop:~# echo ON > /sys/kernel/debug/vgaswitcheroo/switch

root@mikelaptop:~# cat /sys/kernel/debug/vgaswitcheroo/switch
0:DIS: :Pwr:0000:01:00.0  
1:IGD:+:Pwr:0000:00:02.0

root@mikelaptop:~# echo DIS > /sys/kernel/debug/vgaswitcheroo/switch

root@mikelaptop:~# cat /sys/kernel/debug/vgaswitcheroo/switch
0:DIS: :Pwr:0000:01:00.0  
1:IGD:+:Pwr:0000:00:02.0

root@mikelaptop:~# echo IGD > /sys/kernel/debug/vgaswitcheroo/switch

root@mikelaptop:~# cat /sys/kernel/debug/vgaswitcheroo/switch
0:DIS: :Pwr:0000:01:00.0  
1:IGD:+:Pwr:0000:00:02.0

root@mikelaptop:~# echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

root@mikelaptop:~# cat /sys/kernel/debug/vgaswitcheroo/switch
0:DIS: :Off:0000:01:00.0  
1:IGD:+:Pwr:0000:00:02.0

As you can see here, vgaswitcheroo turns power on and off to my discrete card, but for some reason will not select my discrete card. When I tried using echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch, then logged out, my system froze. Can anyone help me?

Thanks!


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!


I can use any of these methods to control the both GPUs on Arch Linux but here Ubuntu 14.04 absolutely ignores any change made to the switch file.