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: 22.231 ]

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

Configurando OpenSSH no Windows Server 2003 para autenticação por chave (sem senha)

Alguns recursos do BASH para você utilizar em seus programas

Processos

gGedit como IDE para COBOL

  
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