Jump to content
xand206

Desativando Nvidia Optimus Dell Inspiron 14R 5420

Recommended Posts

Eu penei bastante para desativar a GT630m do Dell Inspiron 14R 5420, segue aqui um breve relato do que fiz.

 

Primeiramente extraí o meu dsdt utilizando o DSDT Editor, e procurei no arquivo algo referente a _OFF ou OPOF, no meu caso encontrei nenhum dos dois.

 

O _OFF ou OPOF que desativa a placa nvidia.

 

Baixei então um Live CD Linux (Ubuntu) e extraí por ele a tabela DSDT, SSDT1, SSDT2, SSDT3 e SSDT4.

 

Ao vasculhar nas tabelas SSDT, encontrei no arquivo SSDT4 o OPON e OPOF.

 

Agora vem a modificação, copiei todo o Scopo que contém as instruções OPON e OPOF para meu DSDT.

 

Scopo que contém o OPON e OPOF:

Scope (\_SB.PCI0.PEG0.PEGP)
   {
       OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
       Field (GPIO, ByteAcc, Lock, Preserve)
       {
           Offset (0x0C), 
               ,   3, 
               ,   1, 
           Offset (0x0E), 
               ,   1, 
           DGPG,   1, 
               ,   4, 
           DGVR,   1, 
           Offset (0x31), 
               ,   7, 
           DCQU,   1, 
           Offset (0x35), 
               ,   7, 
           DCQS,   1, 
           Offset (0x38), 
               ,   7, 
           Offset (0x39), 
               ,   7, 
           DCQV,   1, 
               ,   2, 
           DGRS,   1, 
               ,   1, 
               ,   1, 
               ,   1, 
           DGPW,   1
       }
       Method (OPON, 0, NotSerialized)
       {
           Store (Zero, DGRS)
           Sleep (0x64)
           Store (One, DGPW)
           Sleep (0x69)
           Store (One, DCQU)
           Store (Zero, DCQS)
           Store (Zero, DCQV)
           Sleep (0x05)
           If (LEqual (DGPG, One))
           {
               P8XH (Zero, 0x21)
           }
           Store (Zero, DQDA)
           Store (One, DGRS)
           Store (Zero, DCQU)
           Sleep (0x64)
           Store (Zero, LNKD)
           While (LLess (LNKS, 0x07))
           {
               Sleep (One)
           }
           If (LEqual (SETF, One))
           {
               Store (VGAB, VGAR)
           }
       }
       Method (OPOF, 0, NotSerialized)
       {
           Store (One, LCRB)
           Store (One, DQDA)
           Store (Zero, LCRB)
           Store (VGAR, VGAB)
           Store (One, SETF)
           Store (One, LNKD)
           While (LGreater (LNKS, Zero))
           {
               Sleep (One)
           }
           Store (Zero, DGRS)
           Sleep (0x64)
           Store (Zero, DGPW)
           Sleep (0x64)
           If (LEqual (DGPG, Zero))
           {
               P8XH (Zero, 0x31)
           }
       }
   }
 

Ao mandar compilar, apareceram vários erros que precisaram ser corrigidos manualmente.

 

Para corrigir esses erros, precisamos copiar do SSDT4 os objetos que ele disse não existir no DSDT que estamos modificando, eu copiei para dentro do Scope (\_SB.PCI0.PEG0.PEGP) que estamos fazendo.

 

Ficando assim:

 

Scope (_SB.PCI0.PEG0.PEGP)
   {
       OperationRegion (PEGM, SystemMemory, 0xF8008000, 0x0FF0)
       Field (PEGM, ByteAcc, NoLock, Preserve)
       {
           REG0,   32, 
           REG1,   32, 
           REG2,   32, 
           Offset (0x19), 
           RE19,   8, 
           RE1A,   8, 
           Offset (0x3E), 
           RE3E,   8, 
           Offset (0x84), 
           PWST,   2, 
           Offset (0xB0), 
           ASPM,   2, 
               ,   2, 
           LNKD,   1, 
           Offset (0xB3), 
               ,   3, 
           LTST,   1, 
           RSCC,   1, 
           Offset (0xB4), 
               ,   6, 
           HPCP,   1, 
           SPLV,   8, 
           SPLS,   2, 
               ,   2, 
           PHSN,   13, 
           HPD,    8, 
           Offset (0x114), 
           T0V0,   1, 
           TV0M,   7, 
           Offset (0x1FC), 
           R1FC,   9, 
           Offset (0x201), 
               ,   5, 
           CGEL,   2, 
               ,   3, 
           LCRB,   1, 
           Offset (0x204), 
           RETO,   10, 
           Offset (0x214), 
           Offset (0x216), 
           LNKS,   4, 
           Offset (0x220), 
           R220,   32, 
           Offset (0x225), 
           DQDA,   1, 
           Offset (0x226), 
           R224,   32, 
           Offset (0xC28), 
           RC28,   1, 
           Offset (0xC34), 
           RC34,   32, 
           Offset (0xDFC), 
               ,   1, 
           RDFC,   3, 
           Offset (0xE08), 
           Offset (0xE0B), 
               ,   6, 
           RE08,   1, 
           Offset (0xE28), 
           Offset (0xE2B), 
               ,   6, 
           RE28,   1, 
           Offset (0xE48), 
           Offset (0xE4B), 
               ,   6, 
           RE48,   1, 
           Offset (0xE68), 
           Offset (0xE6B), 
               ,   6, 
           RE68,   1, 
           Offset (0xE88), 
           Offset (0xE8B), 
               ,   6, 
           RE88,   1, 
           Offset (0xEA8), 
           Offset (0xEAB), 
               ,   6, 
           REA8,   1, 
           Offset (0xEC8), 
           Offset (0xECB), 
               ,   6, 
           REC8,   1, 
           Offset (0xEE8), 
           Offset (0xEEB), 
               ,   6, 
           REE8,   1, 
           Offset (0xF08), 
           Offset (0xF0B), 
               ,   6, 
           RF08,   1, 
           Offset (0xF28), 
           Offset (0xF2B), 
               ,   6, 
           RF28,   1, 
           Offset (0xF48), 
           Offset (0xF4B), 
               ,   6, 
           RF48,   1, 
           Offset (0xF68), 
           Offset (0xF6B), 
               ,   6, 
           RF68,   1, 
           Offset (0xF88), 
           Offset (0xF8B), 
               ,   6, 
           RF88,   1, 
           Offset (0xFA8), 
           Offset (0xFAB), 
               ,   6, 
           RFA8,   1, 
           Offset (0xFC8), 
           Offset (0xFCB), 
               ,   6, 
           RFC8,   1, 
           Offset (0xFE8), 
           Offset (0xFEB), 
               ,   6, 
           RFE8,   1
       }
       OperationRegion (VGAM, SystemMemory, 0xF8100000, 0x0100)
       Field (VGAM, ByteAcc, NoLock, Preserve)
       {
           VGAR,   2048
       }
       Name (SETF, Zero)
       Name (VGAB, Buffer (0x0100)
       {
           /* 0000 */   0xDE, 0x10, 0x29, 0x0A, 0x06, 0x01, 0x10, 0x00,
           /* 0008 */   0xA2, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00,
           /* 0010 */   0x00, 0x00, 0x00, 0xAC, 0x0C, 0x00, 0x00, 0xB0,
           /* 0018 */   0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xAE,
           /* 0020 */   0x00, 0x00, 0x00, 0x00, 0x81, 0x2C, 0x00, 0x00,
           /* 0028 */   0x00, 0x00, 0x00, 0x00, 0x28, 0x10, 0x6E, 0x04,
           /* 0030 */   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
           /* 0038 */   0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00,
           /* 0040 */   0x28, 0x10, 0x6E, 0x04, 0x00, 0x00, 0x00, 0x00,
           /* 0048 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 0050 */   0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
           /* 0058 */   0xCE, 0xD6, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 0060 */   0x01, 0x68, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00,
           /* 0068 */   0x05, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 0070 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 0078 */   0x10, 0xB4, 0x02, 0x00, 0xE0, 0x8D, 0x2C, 0x01,
           /* 0080 */   0x10, 0x29, 0x00, 0x00, 0x02, 0x2D, 0x06, 0x00,
           /* 0088 */   0x4B, 0x01, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00,
           /* 0090 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 0098 */   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
           /* 00A0 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00A8 */   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00B0 */   0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x14, 0x01,
           /* 00B8 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00C0 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00C8 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00D0 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00D8 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00E0 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00E8 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00F0 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           /* 00F8 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
       })
       OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
       Field (GPIO, ByteAcc, Lock, Preserve)
       {
           Offset (0x0C), 
               ,   3, 
               ,   1, 
           Offset (0x0E), 
               ,   1, 
           DGPG,   1, 
               ,   4, 
           DGVR,   1, 
           Offset (0x31), 
               ,   7, 
           DCQU,   1, 
           Offset (0x35), 
               ,   7, 
           DCQS,   1, 
           Offset (0x38), 
               ,   7, 
           Offset (0x39), 
               ,   7, 
           DCQV,   1, 
               ,   2, 
           DGRS,   1, 
               ,   1, 
               ,   1, 
               ,   1, 
           DGPW,   1
       }
       Method (OPON, 0, NotSerialized)
       {
           Store (Zero, DGRS)
           Sleep (0x64)
           Store (One, DGPW)
           Sleep (0x69)
           Store (One, DCQU)
           Store (Zero, DCQS)
           Store (Zero, DCQV)
           Sleep (0x05)
           If (LEqual (DGPG, One))
           {
               P8XH (Zero, 0x21)
           }
           Store (Zero, DQDA)
           Store (One, DGRS)
           Store (Zero, DCQU)
           Sleep (0x64)
           Store (Zero, LNKD)
           While (LLess (LNKS, 0x07))
           {
               Sleep (One)
           }
           If (LEqual (SETF, One))
           {
               Store (VGAB, VGAR)
           }
       }
       Method (OPOF, 0, NotSerialized)
       {
           Store (One, LCRB)
           Store (One, DQDA)
           Store (Zero, LCRB)
           Store (VGAR, VGAB)
           Store (One, SETF)
           Store (One, LNKD)
           While (LGreater (LNKS, Zero))
           {
               Sleep (One)
           }
           Store (Zero, DGRS)
           Sleep (0x64)
           Store (Zero, DGPW)
           Sleep (0x64)
           If (LEqual (DGPG, Zero))
           {
               P8XH (Zero, 0x31)
           }
       }
   }
 

Em seguida adicionei a linha ^^PEG0.PEGP.OPOF () em _INI.

 

Method _INI sem modificação:

Method (_INI, 0, NotSerialized)
           {
               Store (One, CLID)
           }
 

Method _INI modificado:

Method (_INI, 0, NotSerialized)
           {
               ^^PEG0.PEGP.OPOF ()
               Store (One, CLID)
           }
 

Em seguida foi só compilar novamente e salvar o .aml e por na pasta Extra, e finalmente NVidia desativada.

 

Qual vantagem tive ao desativar a NVidia GT630m do Dell Inspiron?

A vantagem foi em relação ao consumo da bateria, desativar a Nvidia Optimus que não funciona no Hackintoosh faz com que o notebook consuma menos energia e dissipe menos calor no notebook, com a alteração do dsdt adicionando o OPOF, o tempo de duração da bateria passou de 2:30h para 5:15h. :)

 

Seguem meus DSDTs sem nvidia desabilitada e com nvidia desabilitada para comparação.

xand206_inspiron_14R.zip

Link to comment
Share on other sites

Ola. Eu possuo o mesmo equipamento.


Gostaria de saber se basta copiar o arquivo .aml (disponibilizado anexo no post) para a pasta extra que ja desabilita a Gforce 650m?


Obrigado.

Dell Inspiron 14r 5420 | OS X 10.9| i5-3210M | 6GB 1600MHz | HD 4000 | Ethernet - Atheros AR8162 | Audio - VoodooHDA 2.7.3 | USB 3.0 Fix
Link to comment
Share on other sites

Não, eles servem apenas como exemplo, você deve fazer as mesmas modificações na sua DSDT original.


Se for exatamente o mesmo laptop (mesma versão do BIOS, quantidade de RAM, CPU) até pode funcionar, mas não é recomendado.

Donation with Paypal | Mercado Livre | Premium and Donators Users | Installation GUIDE

Donation with BTC 33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3

Donation with PicPay @danielnmaldonado

Donated? Send me PM with files or use DSDT Patch Requests

Link to comment
Share on other sites

Não precisa instalar, se chama "live CD" justamente porque roda direto do CD.


Nem precisa ser pelo Linux, você pode extrair as tabelas pelo OS X mesmo, copia e cola no terminal

perl -e 'open(IOREG, "ioreg -lw0|") or die; while(<IOREG>) { chomp; if($_ =~ /\"ACPI\sTables\"\s*=\s*\{([^}]+)\}/) { $buf = $1; mkdir("ACPI Tables"); foreach $table (split(/,/, $buf)) { my($tab, $val) = split(/=/, $table); $tab =~ s/\"//g; open(PIP, "|xxd -r -p > \"ACPI Tables/".$tab.".aml\""); print PIP $val; close(PIP); } } }'

Donation with Paypal | Mercado Livre | Premium and Donators Users | Installation GUIDE

Donation with BTC 33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3

Donation with PicPay @danielnmaldonado

Donated? Send me PM with files or use DSDT Patch Requests

Link to comment
Share on other sites

Depois você deve seguir as orientações do xand206 no post de abertura.


As tabelas estarão na pasta "ACPI Tables" dentro da pasta do usuário (Finder - Ir - Pasta Pessoal).

Donation with Paypal | Mercado Livre | Premium and Donators Users | Installation GUIDE

Donation with BTC 33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3

Donation with PicPay @danielnmaldonado

Donated? Send me PM with files or use DSDT Patch Requests

Link to comment
Share on other sites

Entao, eu achei na pasta mencionada a seguinte lista de arquivos.aml


APIC.aml

ASF!.aml

DBG2.aml

DSDT.aml

FACP.aml

FACS.aml

FPDT.aml

HPET.aml

MCFG.aml

POAT.aml

RSDT.aml

SLIC.aml

SSDT-1.aml

SSDT-2.aml

SSDT-3.aml

SSDT-4.aml

SSDT.aml

UEFI-1.aml

UEFI-2.aml

UEFI.aml


Qual o proximo passo

Dell Inspiron 14r 5420 | OS X 10.9| i5-3210M | 6GB 1600MHz | HD 4000 | Ethernet - Atheros AR8162 | Audio - VoodooHDA 2.7.3 | USB 3.0 Fix
Link to comment
Share on other sites

Cara, você leu o tópico?


O comando que eu postei elimina a necessidade de fazer isto

Baixei então um Live CD Linux (Ubuntu) e extraí por ele a tabela DSDT, SSDT1, SSDT2, SSDT3 e SSDT4.

 

Acho que está bem claro qual o próximo passo.

Donation with Paypal | Mercado Livre | Premium and Donators Users | Installation GUIDE

Donation with BTC 33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3

Donation with PicPay @danielnmaldonado

Donated? Send me PM with files or use DSDT Patch Requests

Link to comment
Share on other sites

Aqui não esta gerando os arquivos 1,2,3,4... já apaguei a pasta e executei o comando 3 vezes

Você não pode fazer boot com DropSSDT=Yes (ou equivalente no Clover) caso contrário as tabelas SSDT não serão encontradas.

Donation with Paypal | Mercado Livre | Premium and Donators Users | Installation GUIDE

Donation with BTC 33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3

Donation with PicPay @danielnmaldonado

Donated? Send me PM with files or use DSDT Patch Requests

Link to comment
Share on other sites

Qual programa vocs usam para compilar?

Fiz todas as alterações, porém não consigo salvar a dsl e depois compilar ela :(

Ryzen 3400G @ 3.7Ghz | 2x8GB DDR4 3000Mhz | Gigabyte B450 Gaming X | Radeon RX 570 4GB | Samsung 750 EVO 250GB | macOS Catalina 10.15.4

Link to comment
Share on other sites

Valeu perna!!

Agora consegui desativar a nvidia, porém a bateria continua com um consumo muito alto.. Sabem o que pode ser?

Ryzen 3400G @ 3.7Ghz | 2x8GB DDR4 3000Mhz | Gigabyte B450 Gaming X | Radeon RX 570 4GB | Samsung 750 EVO 250GB | macOS Catalina 10.15.4

Link to comment
Share on other sites

A frequência do CPU está baixando quando ocioso? Verifica no HWMonitor. Você precisa gerar uma SSDT com P e C states, ou ativar a opção para que o Clover gere

http://Olarila.com/forum/viewtopic.php?f=2&t=34

Donation with Paypal | Mercado Livre | Premium and Donators Users | Installation GUIDE

Donation with BTC 33HeGCuCSh4tUBqdYkQqKpSDa1E7WeAJQ3

Donation with PicPay @danielnmaldonado

Donated? Send me PM with files or use DSDT Patch Requests

Link to comment
Share on other sites

A frequência do CPU está baixando quando ocioso? Verifica no HWMonitor. Você precisa gerar uma SSDT com P e C states, ou ativar a opção para que o Clover gere

http://Olarila.com/forum/viewtopic.php?f=2&t=34

 

Bls, vou dar uma olhada com o HWMonitor. Estou usando o chameleon com o DropSSDT ativado!


=====EDIT=====

Sabe onde consigo achar o valor correto do tjmax pro meu i7?

A frequência da CPU fica subindo e descendo toda hora.. fica entre 1.28 ~ 2.00Ghz

Ryzen 3400G @ 3.7Ghz | 2x8GB DDR4 3000Mhz | Gigabyte B450 Gaming X | Radeon RX 570 4GB | Samsung 750 EVO 250GB | macOS Catalina 10.15.4

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.





×
  • Create New...
The popup will be closed in 15 seconds...