Hybrid graphics in Sony VAIO and Fedora 15

This a report on how i solved radeon driver related booting problem and automatically switched OFF the Radeon card of my Sony VAIO C series laptop in Fedora 15. This laptop has a AMD Radeon and Intel combination.
The steps may be somewhat similar for other laptops with ATI/Intel combinations in Fedora.

NOTE: This method disables the AMD Radeon card upon booting. The aim is to increase battery life(about 1.5 hrs in mine) and reduce the heat. I dont use any graphic intensive applications in linux, so the Radeon is better switched OFF. If you want 3D acceleration or looking for a method for hot switching of cards, you have no luck here.

Background
Fedora 15 comes with a open source radeon driver(not catalyst driver) and includes vgaswitcheroo a mechanism to support switch ON/OFF cards and login out/login card switching.

Upon booting, if the kernel detects hybrid graphics, a directory /sys/kernel/debug/vgaswitcheroo will be created with a file named switch.

The following commands are available,
cat switch – Displays the status of the cards.

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

IGD – integrated ie Intel, DIS – discrete ie Radeon, Pwr – power ON, Off – power OFF, and + sign indicates which card if active.

echo OFF > switch – Turns OFF the inactive one.
echo ON > switch – Turns ON the card that is OFF
echo DIS[IGD] > switch – Switches the discrete card [or the IGD] active. You need to logout and login for this to take effect.

GNOME 3 doesnt load in my system with discrete card. So switching to discrete is pretty useless at the moment.

Note that vgaswitcheroo is gone if you have installed the proprietary ‘catalyst’ drivers either using RPMFusion or using the binaries provided at the AMD site.

Booting issue
I often had problem while booting with the system hangs at “dracut: starting plymouth daemon“.

I guess this was due to radeon driver. Not sure though.

The trick was to ‘blacklist’ the radeon driver, and load it once the system has finished booting. And then switch OFF the Radeon card. It worked for me.

You have to do this step only if you have problems during booting caused by the radeon driver. Else skip to here.

Add ‘blacklist radeon’ to the /etc/modprobe.d/blacklist.conf. This will cause the radeon driver not to load during boot.

[root@localhost ~]#echo blacklist radeon >> /etc/modprobe.d/blacklist.conf

Backup and then rebuild the initramfs.

[root@localhost ~]# mv /boot/initramfs-$(uname -r).img{,.bak}
[root@localhost ~]# dracut -f /boot/initramfs-$(uname -r).img $(uname -r)

The dracut command may take a while to finish, and may report some warnings.

If you want, you can reboot now and see whether your issue at boot has resolved.

To load the radeon driver automatically once the boot is fine. We add the script to rc.local.

[root@localhost ~]# echo modprobe radeon >> /etc/rc.local

Note that Radeon is ON after booting whether driver is loaded or not. And radeon driver must be loaded to switch OFF the card,

..

Add the script to switch OFF the Radeon automatically after booting.

[root@localhost ~]# echo "echo OFF > /sys/kernel/debug/vgaswitcheroo/switch" >> /etc/rc.local

Suspend/Hibernate Issue
After a suspend or hibernate, the Radeon card gets switched ON. However, cat /sys/kernel/debug/vgaswitcheroo/switch wrongly shows the Discrete card as OFF. This can be confirmed by checking the remaining battery time or system temperature.

Now to switch the card OFF again, do

[root@localhost ~]# echo ON > /sys/kernel/debug/vgaswitcheroo/switch
[root@localhost ~]# echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

== To Do: automate this ==

To confirm whether the Radeon is switched OFF
One method is to check the remaining battery time before and after switching OFF. There should be a 1-2hrs difference.

Another method i use, is to check the system temperature by installing lm-sensors

[root@localhost ~]# yum install lm_sensors
[root@localhost ~]# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +42.0°C  (crit = +96.0°C)
temp2:        +42.0°C  (crit = +96.0°C)

radeon-pci-0100
Adapter: PCI adapter
temp1:       -128.0°C

Here, the ‘-‘ value indicates that the card is OFF.
A system temperature > 50C at idle also means Radeon ON in my system.


Thanks to,

http://ubuntuforums.org/showthread.php?t=1744188&page=1

doskey @ http://forums.fedoraforum.org/showpost.php?p=1492290&postcount=11

Tags: vgaswitcheroo howto, switchable graphics in fedora 15, turn off AMD/ATI, Hybrid graphics in fedora, switch off dedicated card in fedora, Sony VAIO VPCCB15FG

14 thoughts on “Hybrid graphics in Sony VAIO and Fedora 15

  1. Mustapha

    i have Vpcca15fa i thinck same spec like yours , but here i can’t find the Vgaswitch file

    LSPCI

    00:00.0 Host bridge: Intel Corporation Sandy Bridge DRAM Controller (rev 09)
    00:01.0 PCI bridge: Intel Corporation Sandy Bridge PCI Express Root Port (rev 09)
    00:02.0 VGA compatible controller: Intel Corporation Device 0116 (rev 09)
    00:16.0 Communication controller: Intel Corporation Cougar Point HECI Controller #1 (rev 04)
    00:1a.0 USB Controller: Intel Corporation Cougar Point USB Enhanced Host Controller #2 (rev 04)
    00:1b.0 Audio device: Intel Corporation Cougar Point High Definition Audio Controller (rev 04)
    00:1c.0 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 1 (rev b4)
    00:1c.1 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 2 (rev b4)
    00:1c.2 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 3 (rev b4)
    00:1c.3 PCI bridge: Intel Corporation Cougar Point PCI Express Root Port 4 (rev b4)
    00:1d.0 USB Controller: Intel Corporation Cougar Point USB Enhanced Host Controller #1 (rev 04)
    00:1f.0 ISA bridge: Intel Corporation Cougar Point LPC Controller (rev 04)
    00:1f.2 SATA controller: Intel Corporation Cougar Point 6 port SATA AHCI Controller (rev 04)
    00:1f.3 SMBus: Intel Corporation Cougar Point SMBus Controller (rev 04)
    01:00.0 VGA compatible controller: ATI Technologies Inc Device 6741
    02:00.0 Network controller: Intel Corporation Centrino Wireless-N 1000
    03:00.0 SD Host controller: Ricoh Co Ltd Device e823 (rev 04)
    03:00.1 System peripheral: Ricoh Co Ltd Device e232 (rev 04)
    04:00.0 USB Controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
    05:00.0 Ethernet controller: Atheros Communications Device 1083 (rev c0)

    also is there are a way to make sure that my vga drivers is working well

    Thx in advance

  2. tony Post author

    vgaswitchroo will be available only from fedora 15 and later, and only when using the opensource ATI driver that comes along with fedora.
    IF you installed the ATI drivers after installing fedora then vgaswitchroo is disabled.

    If your display is working fine and your system temperature is normal under usage, then your vga drivers should be working fine.

    IF you have no success in sorting our your issue, i recommend posting at fedoraforum.org.

    tony

  3. Mustapha

    i am working on Fedora 15

    also i have tried to check temp. but the result was

    [root@localhost mustapha]# sensors
    acpitz-virtual-0
    Adapter: Virtual device
    temp1: +54.0°C (crit = +96.0°C)
    temp2: +54.0°C (crit = +96.0°C)

    no ATI , that’s why i thinck that ati is not installed :S

    Thx in advance

  4. tony Post author

    yum install xorg-x11-drv-ati
    might install the radeon driver i think.
    anyway pls try at fedoraforum.org.

  5. Mustapha

    :) now i have vgaswitchroo

    also installed sensors

    but now i can’t switch to DIS card , it is always IGD which active
    echo DIS[IGD] > switch
    echo DIS > switch

    used it under Gnome or KDE

  6. tony Post author

    you will have to logout and login back for the switching to take place. But in GNOME3 the system will hang.

  7. tony Post author

    Hi rcares, the xorg.conf file doesn’t exist in my fedora.
    Here is what they say in fedora site “Fedora releases since Fedora 10 do not create a /etc/X11/xorg.conf file, used to configure the X server, by default. The X configuration is automatically determined each time X is started.”

  8. rcares

    Hi, for the turn off automation of discrete card you will use this script named /etc/pm/sleep.d/vgaswitcheroo with this content:

    #!/bin/bash

    export PATH=/sbin:/usr/sbin:/bin:/usr/bin

    function turnOn
    {
    echo ON > /sys/kernel/debug/vgaswitcheroo/switch
    echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
    }

    function turnOff
    {
    #echo ON > /sys/kernel/debug/vgaswitcheroo/switch
    #echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
    }

    case $1 in
    hibernate)
    turnOff
    ;;
    suspend)
    turnOff
    ;;
    thaw)
    turnOn
    ;;
    resume)
    turnOn
    ;;
    *) echo “somebody is calling me totally wrong.”
    ;;
    esac

  9. tony Post author

    Hi rcares,
    thanks a lot.

    I simplified it like this,

    #!/bin/bash
    function turnOff
    {
    echo ON > /sys/kernel/debug/vgaswitcheroo/switch
    echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
    }
    case “${1}” in
    resume|thaw)
    turnOff
    ;;
    esac

    The script works fine, but sometimes it makes system hung. Have you had that problem?

  10. anon

    > The script works fine, but sometimes it makes system hung. Have you had that problem?

    just run turnOff subroutine with &:
    [… … …]
    case “${1}” in
    resume|thaw)
    – turnOff
    + turnOff &
    ;;
    esac
    [… … …]

  11. anon

    Yeah, you’re right, turnOff with ‘&’ doesn’t solve the hanging. Sorry for wrong advise.

Leave a Reply

Your email address will not be published. Required fields are marked *


eight − = 4

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>