Alternância de GPU em notebooks Core-i

Este artigo apresenta uma solução para o problema de alternância entre GPUs em notebook com processadores da linha Core-i, que possuem uma placa gráfica discreta ATI no Ubuntu 10.10, evitando a necessidade de se alterar a placa padrão através da BIOS (com reinício do sistema necessário) e dando uma opção nos casos em que a escolha através de BIOS não é possível.

[ Hits: 21.857 ]

Por: Diego C. Sampaio em 11/11/2010


O script



O apontador criado agora permite que se alterne entre as GPUs apenas com o reinício da sessão (ainda não há como fazer a troca sem reiniciar a sessão), e checar o status da GPU que não está sendo usada, pois em outros scripts encontrados na nossa pesquisa não houve preocupação com a desativação da placa sem uso, o que gerou um gasto de energia extra e aquecimento desnecessários.

Abaixo segue o script necessário.

#!/bin/bash
#Script para alternar entre GPUs by kriador
#versao 20101023

#Alterando dono do arquivo
gksu chown $USER /sys/kernel/debug/vgaswitcheroo/switch

#Checando que placa esta ativa e o status da placa não ativa
vganam=`lspci | grep Radeon | cut -c1-7`
vgaon=`cat /sys/kernel/debug/vgaswitcheroo/switch | grep :+: | cut -c14-20`
vgaof=`cat /sys/kernel/debug/vgaswitcheroo/switch | grep :.:Off | cut -c2-7`

#cria a variavel com a placa ativa
if [ "$vgaon" = "$vganam" ]
then vgaechon="GPU Discreta"
    else vgaechon="GPU Integrada"
fi
#cria a variavel com o status da placa nao ativa
if [ "$vgaof" = ": :Off" ]
then vgaechof="Desligada"
    else vgaechof="Ligada"
fi

#criando a dialog
gxmessage -center \
        -buttons "_Cancelar":1,"GPU _Integrada":101,"GPU _Discreta":102 \
        -wrap \
        -title "Escolha a GPU" \
"GPU em uso: $vgaechon

Situação da outra GPU: $vgaechof"

whichCard=$?

case "$whichCard" in

1)
echo "Exit"
;;
101)
if [ "$vgaechon" == "GPU Discreta" ] && [ "$vgaechof" == "Ligada" ]
then
echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch
gxmessage --center "Alternando para GPU Integrada"
gnome-session-save --logout
elif [ "$vgaechon" == "GPU Discreta" ] && [ "$vgaechof" == "Desligada" ]
then
echo ON > /sys/kernel/debug/vgaswitcheroo/switch
echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch
gxmessage --center "Alternando para GPU Integrada"  
gnome-session-save --logout
elif [ "$vgaechon" == "GPU Integrada" ] && [ "$vgaechof" == "Ligada" ]
then
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
gxmessage --center "GPU Integrada ja esta em uso"  
elif [ "$vgaechon" == "GPU Integrada" ] && [ "$vgaechof" == "Desligada" ]
then
gxmessage --center "GPU Integrada ja esta em uso"  
fi
;;
102)
if [ "$vgaechon" == "GPU Integrada" ] && [ "$vgaechof" == "Ligada" ]
then
echo DDIS> /sys/kernel/debug/vgaswitcheroo/switch
gxmessage --center "Alternando para GPU Discreta"  
gnome-session-save --logout
elif [ "$vgaechon" == "GPU Integrada" ] && [ "$vgaechof" == "Desligada" ]
then
echo ON > /sys/kernel/debug/vgaswitcheroo/switch
echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
gxmessage --center "Alternando para GPU Discreta"  
gnome-session-save --logout
elif [ "$vgaechon" == "GPU Discreta" ] && [ "$vgaechof" == "Ligada" ]
then
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
gxmessage --center "GPU Discreta ja esta em uso"

elif [ "$vgaechon" == "GPU Discreta" ] && [ "$vgaechof" == "Desligada" ]
then
gxmessage --center "GPU Discreta ja esta em uso"  
fi
esac

Página anterior    

Páginas do artigo
   1. Introdução
   2. Preparando o ambiente
   3. O script
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Solução para provedores - Receber aviso no celular quando ocorrer perda de pacote, hosts parados ou pacotes duplicados

KeepAlive para conexão discada (ou não)

Multi-head usando udev e Xnest

Terminal Didático - Shell Script via WEB (PHP + Bootstrap)

Linux com boot no Pendrive, com todas as facilidades: Smart-USB_Key-Mania, PLOP Boot Manager e outros métodos

  
Comentários
[1] Comentário enviado por pgbatera em 19/11/2010 - 20:14h

Diego,

Estou com o seguinte problema...

Tenho o Ubuntu 10.10 instalado e o kernel 2.6.35-22... também já desinstalei o driver da ATI e mesmo assim o arquivo "vgaswitcheroo" não existe em /sys/kernel/debug

O que fazer? Mesmo desinstalando o driver da ATI ele não aparece.

[2] Comentário enviado por gustoceano em 30/01/2011 - 16:12h

Ola Diego C. Sampaio.

Gostei muito do artigo sobre a alternância de GPU no linux para aqueles que possuem uma placa de vídeo dedicada em sistemas com processador core_i. Ainda mais para aqueles que possuem um notebook da HP, no qual não há a possibilidade de alternar via Bios.
O teu artigo ajudo muito a resolver este problema em meu HP. Também contribui para a diminuição da temperatura do computador. No meu caso ao iniciar o computador as duas GPUs estavam ligadas, provocando o aumento de temperatura da máquina (65 graus para o core_i e 72 graus para o ati). Atualmente a temperatura do pressador core_i5 fica em 48 graus em dias muito quentes para operações básicas (email, músicas, openoffice e etc).
Penso que teu artigo pode também ser lincado com aqueles que apresentam soluções para aquecimento excessivo.

Mais uma vez muito obrigado.

Gustavo Q. Oliveira.

[3] Comentário enviado por sml em 10/03/2011 - 15:51h

Parabéns Diego, o artigo está realmente muito bom!

[4] Comentário enviado por Tthomas M O em 29/10/2011 - 11:14h

Bom dia pessoal, estavo rodando o script ai deu essa menssagem "gnome-session-save: comando não encontrado", alguem sabe a solução para o problema???
o not (HP dm4 1075), atualmente esta usando a IGD, entre 75º/80º.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts