Como desativar os gráficos NVIDIA no Macbook Pro?

2

Eu tenho um MacBook Pro de 2010 que possui gráficos NVIDIA e agrafics integrados da Intel:

$ lspci|grep -i vga
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 12)
01:00.0 VGA compatible controller: NVIDIA Corporation GT216M [GeForce GT 330M] (rev a2)

Quando eu instalo o driver NVIDIA propritary (340.76), o sistema trava quando eu inicio o X-server. Eu já estive disse que isso ocorre porque o driver NVIDIA não suporta as características especiais de hardware do Macbook.

Portanto, gostaria de desativar completamente os gráficos da NVIDIA e usar apenas os gráficos integrados da Intel, pois a bateria dura apenas 1,5 horas ao fazer o trabalho de escritório desde que eu instalei o Ubuntu. Manteve-se por cerca de 3 horas com o Mac OS quando fazia um trabalho semelhante.

Li sobre duas maneiras de fazer isso:

  1. Desativando o dispositivo gráfico discreto no BIOS
  2. ou alternando para gráficos integrados em nvidia-settings .
  3. ATUALIZADO: Inicializando no OS X e forçando os gráficos integrados em gfxCardStatus 2.2.1.

O primeiro método não funciona para mim porque não há BIOS nos Macbooks. O segundo método também não funcionará porque não consigo instalar os drivers de propritary, conforme descrito acima.

É uma instalação basicamente nova do Ubuntu 14.04, sem quaisquer ajustes dignos de menção.

UPDATE: Depois de ler muita documentação, cheguei à conclusão de que isso só é possível usando o método 3 no Macbook Pro, ou seja, um deve ainda ter sistema operacional X instalado, o que eu não tenho! Isso é realmente uma merda, porque significa que eu tenho nenhuma chance de desligar a GPU NVIDIA .

    
por theV0ID 26.09.2015 / 09:58

3 respostas

1

Por acaso tenho exatamente o mesmo computador que você. O que eu criei é adicionar algumas linhas ao grub para desabilitar os gráficos discretos no nível do efi:

$ cat /etc/grub.d/10_linux
# Use ELILO's generic "efifb" when it's known to be available.
# FIXME: We need an interface to select vesafb in case efifb can't be used.
if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
    echo "    load_video" | sed "s/^/$submenu_indentation/"
else
    if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
        echo "        load_video" | sed "s/^/$submenu_indentation/"
    fi
fi
if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
    ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
    echo "    gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
fi

echo "        outb 0x728 1" | sed "s/^/$submenu_indentation/"
echo "        outb 0x710 2" | sed "s/^/$submenu_indentation/"
echo "        outb 0x740 2" | sed "s/^/$submenu_indentation/"
echo "        outb 0x750 0" | sed "s/^/$submenu_indentation/"

echo "        insmod gzio" | sed "s/^/$submenu_indentation/"
echo "        if [ x\$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi" | sed "s/^/$submenu_indentation/"

Acabei de adicionar as linhas de saída entre insmod gzio e linux_gfx_mode . Para referência:

outb 0x728 1 # Switch select
outb 0x710 2 # Switch display
outb 0x740 2 # Switch DDC
outb 0x750 0 # Power down discrete graphics 

Isso desativa os gráficos no nível de link do pcie, de tal forma que desaparece do sistema. Ao contrário do macOS, o IronLake Intel HD Graphics pode controlar a saída do monitor externo, mas sem áudio.

O que você descreveu como o mac que desabilita o igpu, a menos que a inicialização do macOS seja válida para qualquer Mac feito após 2010, ou qualquer Mac com um chip Sandy Bridge ou posterior. (2010 = nehalem, 1ª geração 45nm.) O truque apple_set_os.efi não funciona antes de 2011 (pré-2011, na época, qualquer coisa inicializada com efi se comportaria exatamente como macOS, efi não checava o sistema operacional, apenas que foi inicializado nativamente, habilitando os gráficos integrados e a única maneira de inicializar um sistema operacional com o igpu desativado foi a inicialização herdada, o que não estamos fazendo) Eu tentei executá-lo e imprime que o protocolo apple_set_os não foi encontrado. Eu corro 16.04.3 estável e é uma experiência tão boa quando você pode usar o computador sem travar.

Sobre os drivers proprietários da nvidia: Eu fiz alguns testes com o dolphin-emu e DRI_PRIME = 1 inicializando sem o outb 0x750, portanto desabilitando a conexão do dGPU ao display do lvds, mas deixando-o disponível para renderização. O Nouveau e o proprietário possuem quase o mesmo desempenho. (na verdade, a maioria dos casos de borda aqui foram vencidos pelo nouveau) A arquitetura NV50 / Tesla é talvez a melhor suportada pelo Nouveau. Portanto, eu recomendaria ficar no nouveau.

Por fim, para ativar permanentemente os gráficos intel na inicialização (contanto que as variáveis nvram não sejam apagadas), você pode fazer isso a partir do linux:

mount -t efivarfs rw /sys/firmware/efi/efivars/ # make sure efi is mounted
sudo bash -c 'printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9'

Você também pode realizar a mesma coisa do macOS:

sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
    
por Daniel Rodriguez 09.02.2018 / 05:16
0

Para este adaptador, o driver correto é o nvidia-340. Pode ser instalado assim:

sudo apt-get install nvidia-340 nvidia-prime
    
por Pilot6 26.09.2015 / 13:54
0

Este é um hack e deve ser lido com atenção nas fontes, mas possivelmente isso ajuda você:

Os Macbooks desativam o gráfico interno da Intel se qualquer outra coisa além do MacOS for inicializada. Você poderia adicionar um arquivo ao efi e adicionar uma opção grub para carregá-lo em cadeia para fazer o efi pensar em seu MacOS de inicialização para que todo o hardware seja ativado durante a inicialização.

obtenha a versão mais recente do arquivo efi binário do link

copie-o para a partição efi montada em uma nova subpasta

mkdir /boot/efi/EFI/custom
cp apple_set_os.efi /boot/efi/EFI/custom

adicione a /etc/grub.d/40_custom

search --no-floppy --set=root --label EFI
chainloader (${root})/EFI/custom/apple_set_os.efi
boot

Fonte: link

    
por Mr.Gosh 23.06.2017 / 16:48