Como desativar a nvidia 9600M GT em um Macbookpro 5,1 / 5,2 / 5,3

1

Eu tenho um MacbookPro 5,1 / 5,2 / 5,3 que vem com duas placas gráficas, e por padrão eu recebo a 9600M GT que consome mais bateria que a outra. Eu não tenho ideia de como desativá-lo e ativar o segundo.

Mais detalhes após a resposta do Bruno:

Estou usando o Ubuntu:

  • 11.10 64 bits com o kernel 3.0.0-15 genérico (Zegnus, MBP 5,1)
  • 12,04 64 bits com kernel 3.2-0-24-genérico (Megagolgoth, MBP 5,3)

Eu instalei o rEFIt 0.14 e o GRUB2 EFI64

Eu modifiquei a entrada no arquivo /boot/grub/grub.cfg adicionando

outb 0x750 0

embora no topo do arquivo esteja escrito:

DO NOT EDIT THIS FILE

It is automatically generated by grub-mkconfig using templates
from /etc/grub.d and settings from /etc/default/grub

Salve o arquivo, inicialize, selecione a entrada e, em seguida, tenho uma tela preta e nada mais acontece.

Eu também tentei link com o mesmo resultado.

Obrigado.

    
por zegnus 28.10.2011 / 22:08

1 resposta

3

Para desabilitar a Nvidia 9600M GT você deve adicionar o seguinte na entrada do menu grub outb 750x0 , ie:

menuentry 'Ubuntu, with Linux 3.0.0-12-generic' --class ubuntu --class gnu-linux     --class gnu --class os {
    outb 0x750 0
    recordfail
    set gfxpayload=$linux_gfx_mode
    insmod gzio
    insmod part_gpt
    insmod ext2
    set root='(hd0,gpt5)'
    search --no-floppy --fs-uuid --set=root bc495raf-515r-4r2b-b3de-0ec679a7303a
    linux   /boot/vmlinuz-3.0.0-12-generic root=UUID=bc495raf-515r-4r2b-    b3de-0ec679a7303a ro hpet=force
    initrd  /boot/initrd.img-3.0.0-12-generic
}

Além disso, para o desligamento após retomar após a suspensão:

Ao reiniciar, o controlador gráfico discreto será ativado e ativo. Precisamos desligá-lo e voltar para a GPU integrada.

Isso pode ser feito com um pequeno programa muito simples:

#include <stdio.h>
#include <sys/io.h>

#define PORT_SWITCH_DISPLAY 0x710
#define PORT_SWITCH_SELECT 0x728
#define PORT_SWITCH_DDC 0x740
#define PORT_DISCRETE_POWER 0x750

static int gmux_switch_to_igd()
{
outb(1, PORT_SWITCH_SELECT);
outb(2, PORT_SWITCH_DISPLAY);
outb(2, PORT_SWITCH_DDC);
return 0;
    }

    static void mbp_gpu_power(int state)
{
    outb(state, PORT_DISCRETE_POWER);
    }

int main(int argc, char **argv)
{
if (iopl(3) < 0) {
perror ("No IO permissions");
return 1;
}
mbp_gpu_power(0);
gmux_switch_to_igd();
return 0;
}

Salve isso em um arquivo chamado igd.c. Compile com gcc -O2 igd.c -o igd . Isso criará um executável chamado igd . Executado com privilégios de superusuário, ele desligará o controlador discreto e alternará para o controlador integrado.

Agora precisamos executar isso no currículo. Crie um arquivo chamado /etc/pm/sleep.d/10igd

Ele deve conter:

#!/bin/sh
#
/path/to/igd

Onde / path / to é o caminho para onde você colocou o executável igd que criamos na etapa anterior.

chmod +x /etc/pm/sleep.d/10igd

Este arquivo será executado na suspensão e retomada. Feito corretamente, esse script 10igd iria verificar se isso é um suspender / continuar / congelar / descongelar e só executar quando necessário. Como está, é executado em todos eles. Não é grande coisa, não vai doer para executá-lo durante o congelamento ou suspensão.

Eu tenho tudo funcionando no meu mbp5,1: som, luz de fundo do LCD, retroiluminação do teclado, fãs rodando baixo (desde desabilitar 9600M GT), Apple como atalho (CMD + C para copiar), Flash (quase estável) .. Então, basta perguntar se você precisa de mais ajuda

    
por remi 26.11.2011 / 12:44