Jump to content
InsanelyMac Forum
Whit3Spirit

Disabling NVIDIA Optimus card on all laptops

Recommended Posts

Edited the 15/07/2014

Hi all !

 

After months of passive research i have found on some different forums a DSDT solution for disabling the NVidia card.

Disabling Nvidia allow to save battery power of 2x and temperature of laptop too.

 

 

 

 

My Specs

 

Acer Aspire V3-571G-73614G50Makk

:: Processor
:: Mainboard
Intel HM77 (Panther Point)
:: Memory
4096 MB
:: Graphics adapter
NVIDIA GeForce GT 640M - 2048 MB, Core: 708 MHz, Memory: 900 MHz, DDR3, 80.07.14.00.09, Optimus
:: Display
15.6 inch 16:9, 1366x768 pixel, LG Philips LP156WH4-TLA1, TFT LED
:: Soundcard
Realtek ALC269 @ Intel Panther Point PCH - High Definition Audio Controller
:: Networking
Broadcom NetLink BCM57785 PCI-E Gigabit Ethernet Controller (10/100/1000MBit), Atheros AR5BWB222 Wireless Network Adapter (b g n ), 4.0 Bluetooth
:: Optical drive
MAT{censored}A DVD-RAM UJ8B0AW
:: Hackintosh Config
 
 
 
DSDT/SSDT Method ( :excl: work on it, not fully fonctionnal :excl: ) : Link here
 
DSDT Method (work with all bootloader)

 

Instructions

Needed 

  • AIDA64 version 2.80 --> link
  • ssdtPRGen.sh --> link
  • AppleIntelCPUPowerManagementInfo.kext --> link
  • MacIASL --> link

 

Disabling NVidia card

  • In the first step, dump your dsdt from Windows with AIDA64 (version 2.80 max) --> tuto YouTube
  • Reboot on OSX
  • This patch don't need to extract or modify any SSDT. You can see the DSDT edits in the link of qwerty12 topic in credits. Quickly, in DSDT, i call external method for disabling the card. These links calls methods of SSDT-4 in my config but can be different with your machine. You don't need to copy manually the _OFF method from SSDT to DSDT. Add these lines if you don't have them to the top of your DSDT :
[...]

External (_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)
External (_SB_.PCI0.PEG0.PEGP._PS0, MethodObj)
External (_SB_.PCI0.PEG0.PEGP._OFF, MethodObj)
External (_SB_.PCI0.PEG0.PEGP._ON, MethodObj)
External (_SB_.PCI0.PEG0.PEGP.SGOF, MethodObj)
External (_SB_.PCI0.PEG0.PEGP.SGON, MethodObj)

[...]
  • I added the method  M_OF before the _WAK method : 
[...]

Method (M_OF, 0, NotSerialized)
    {
        If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._OFF)) 
        { 
            \_SB_.PCI0.PEG0.PEGP._OFF()
        }
        If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._PS3))
        {
            \_SB_.PCI0.PEG0.PEGP._PS3()
        }
        If (CondRefOf(\_SB_.PCI0.PEG0.PEGP.SGOF))
        {
            \_SB_.PCI0.PEG0.PEGP.SGOF()
        }
​    }

[...]

 

  • After that, i call the M_OF method in _WAK :
[...]
Method (_WAK, 1, Serialized)
     {
         M_OF ()
         If (LAnd (LEqual (\_SB.PCI0.LPCB.EC0.AAST, One), LEqual (\_SB.PCI0.LPCB.EC0.AAEN, One)))
         {
             Store (Zero, GP53)
[...]
  • And i call the M_OF method in the _INI method :
[...]
Method (_INI, 0, NotSerialized)
         {
             Store (0x07D0, OSYS)
             M_OF ()
             If (CondRefOf (\_OSI, Local0))
             {
                 If (_OSI ("Windows 2001"))
[...]
  •  chameleon.png If you use Chameleon or branch, paste your modified DSDT to your Extra folder and add these options to your org.chameleon.Boot.plist :
<key>DSDT</key>
<string>/Extra/DSDT.aml</string>
<key>DropSSDT</key>
<string>No</string>
  • four-leaf-clover.png If you use Clover Bootloader, copy DSDT file in "EFI/CLOVER/ACPI/Patched"
  • Reboot and go to Applications/Utilities/System Information 
  • Go to Graphics Card Section, if the NVidia Chipset not appear, it’s working.

126051Capturedcran20140125174958.png

 

 

 

 

Enable the SpeedStep management

 

The only problem with this technic is the Power Management. When your turn off the DropSSDT flags in org.chameleon.Boot.plist, Chameleon don’t go dump your SSDT tables in the ACPI tables of your machine.

For enabling SpeedStepper with that fix, you should make a patched SSDT with the ssdtPRGen method :

 

  • Download the later ssdtPRGen.sh
  • Be sure that your SMBios.plist is appropriate with your CPU and system (A good SMBios can fix the iMessage, iCloud, iTunes and Apple Store connexion and login bugs). With my V3-571G core i7, i prefer the Macmini6,2 model for more speed steps.
  • In Terminal app, launch the ssdtPRGen.sh with command :
sudo sh /the_way_of_your_file/ssdtPRGen.sh
  • chameleon.png  Write your password and type "y" when it’s demanded for make a ssdt_pr.aml in your Extra folder only if you use Chameleon bootloader.
  • four-leaf-clover.png  If you use clover, copy this file in "EFI/CLOVER/ACPI/Patched" and rename it to ssdt-1.aml. If you have already a ssdt-1, rename it to ssdt-2... :hyper:
  • Reboot 
  • To be sure that your Speed Stepper is patched, download the AppleIntelCPUPowerManagementInfo.kext and add it to your System/Library/Extensions/ folder with the kext installer of your choice. I for one better in Kext Utility.
  • Rebuild cache with the app of your choice (kext utility make that automaticly) and reboot.
  • At start, open your terminal app and type this command : 
cat /var/log/system.log | grep "AICPUPMI:"
  • If you can see a lot of P-States, you did a good job.

 

157136Capturedcran20140125174245.png

 

 

 

 

 

 

 

About problems

 

Problem with auto ON after sleep

  • Past this method before the M_OF method in your DSDT :
Method (M_ON, 0, NotSerialized)
{
If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._ON))
{
\_SB_.PCI0.PEG0.PEGP._ON()
}
If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._PS0))
        {
            \_SB_.PCI0.PEG0.PEGP._PS0()
        }
If (CondRefOf(\_SB_.PCI0.PEG0.PEGP.SGON))
        {
            \_SB_.PCI0.PEG0.PEGP.SGON()
        }
​ }
  • After that, call M_ON method in _PTS (Prepare To Sleep) so that the _WAK after sleep can shutdown the card. (thanks to RehabMan)
Method (_PTS, 1, NotSerialized)
    {
        M_ON ()
[...]

Error of compilation

 

If you find an error of compilation in MacIASL after have make a clean DSDT (with no error), like "Line 1 : Input file does not appear to be an ASL or data table source file"

 

413958Capturede769cran20140715a768192227

 

 

Try to delete all return to the line in the M_ON or M_OF method or just replace it like that :

 

  • M_OF
Method (M_OF, 0, NotSerialized){If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._OFF)){\_SB_.PCI0.PEG0.PEGP._OFF()}If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._PS3)){\_SB_.PCI0.PEG0.PEGP._PS3()}If (CondRefOf(\_SB_.PCI0.PEG0.PEGP.SGOF)){\_SB_.PCI0.PEG0.PEGP.SGOF()}}
  • M_ON
Method (M_ON, 0, NotSerialized){If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._ON)){\_SB_.PCI0.PEG0.PEGP._ON()}If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._PS0)){\_SB_.PCI0.PEG0.PEGP._PS0()}If (CondRefOf(\_SB_.PCI0.PEG0.PEGP.SGON)){\_SB_.PCI0.PEG0.PEGP.SGON()}}

Credit

 

Thanks to PikeRAlpha for ssdtPRGen.sh

Thanks to 'qwerty12' for all informations --> link of her topic

Thanks to 'Skvo' for speedster and SSDT solution --> link of her post

Thanks to RehabMan for their instructions

Thanks to LexHimself for the SSDT method

Share this post


Link to post
Share on other sites
Advertisement

Great work man, do you think that your patch is compatible or can be modified to work on my dsdt ? Nvidia card is 670mx with hd4000

 

DSDT https://www.dropbox.com/s/ehmksupwhn1440d/DSDT.aml

IOREG https://www.dropbox.com/s/4k1b5nbuxl3tqz7/ioreg.ioreg

 

Hi Badaxe, try with that and say to me if your card is disabled.

link

Share this post


Link to post
Share on other sites

Hey, do you think that your patch is compatible or can be modified to work on my dsdt? I have a Nvidia GTX 765m and a Intel HD4600


 


DSDT https://www.dropbox.com/s/vx30qnw4l270qcc/DSDT.aml


IOREG https://www.dropbox.com/s/4rffijvra3verdw/XMG%20C702.ioreg


 

Is it important that I create my DSDT with AIDA64, or can I create my DSDT with DSDT Editor on Mac?

I use Clover v.2330.

Share this post


Link to post
Share on other sites

Is it important that I create my DSDT with AIDA64, or can I create my DSDT with DSDT Editor on Mac?

 

 

DSDT Editor is a good editor but it can only extract the DSDT. AIDA can extract DSDT, SSDT, and all ACPI's tables. 

Can you extract your SSDT tables and upload it here ?

Share this post


Link to post
Share on other sites
I got some Problems.

 

First is, I don't find the option "ACPI Tools" on Windows 8.1 at the actual AIDA64 Version. But I have found a older Version 3.20.2600 and there ist the option "ACPI Tools".

The Program says that my Motherboard was not found or is Unkown.

 

Second is, that when I use the old Version of AIDA64 in ACPI Tool and click on Save Table I see 7 Lists of SSDT.

Which one you need?

 

post-867195-0-53742200-1393833868_thumb.jpeg

 

Should I upload all?

 

Here is a Zip with all SSDT 1 to 7 from up to down and the actual DSDT.

 


Share this post


Link to post
Share on other sites

Hi guy !

I have opened your DSDT, the first have a bug or is wrong and the second is so buggy ! I try to debbug it but i'm not sure to getting there...

I tell you quickly if i'm able to do it.


Can you upload your DSDT original extracted from AIDA too please ?


Edit : I have found your PS3 and DSM method in SSDT-7, i think that the hack will be functional.

Share this post


Link to post
Share on other sites

I got some Problems.

 

First is, I don't find the option "ACPI Tools" on Windows 8.1 at the actual AIDA64 Version. But I have found a older Version 3.20.2600 and there ist the option "ACPI Tools".

The Program says that my Motherboard was not found or is Unkown.

 

Second is, that when I use the old Version of AIDA64 in ACPI Tool and click on Save Table I see 7 Lists of SSDT.

Which one you need?

 

attachicon.gifimage.jpeg

 

Should I upload all?

 

Here is a Zip with all SSDT 1 to 7 from up to down and the actual DSDT.

 

https://www.dropbox.com/s/fgg87z14moyboji/DSDT%20SSDT%20AIDA64.zip

Disassemble them correctly:

# in Terminal, with recent iasl
iasl -da *.bin *.aml
These patches for DSDT:

into method label ADBG replace_content begin //nothing end;
Remove all the lines 'Zero' starting at line ~6258.

 

You then have a DSDT which will compile with no errors.

Share this post


Link to post
Share on other sites

Hi all I have a samsung notebook series 3 with nvidia optimus and 520MX intel hd 3000 I would like to disable the secondary display adapter in order to use the video card intel 3000. This guide is fine for my notebook? thank you very much

Share this post


Link to post
Share on other sites

Hi Mydoom3.

 

Try it and if you have a problème, post there.

 

 

 

 


Disassemble them correctly:

# in Terminal, with recent iasl
iasl -da *.bin *.aml
These patches for DSDT:
into method label ADBG replace_content begin //nothing end;
Remove all the lines 'Zero' starting at line ~6258.

You then have a DSDT which will compile with no errors.

 

 

Yes but this dsdt was modified and have 160 errors. With the original DSDT, it's more simple ^_^

Share this post


Link to post
Share on other sites

I think it's a bit easier to disable your nvidia optimus in your ssdt ( especially for Haswell ). And you should decompile your dsdt/ssdt through iasl to reduce errors to minimum

P/S: here an example for you, I patched it already, although this Alienware can use the GTX 765M: http://www.insanelymac.com/forum/topic/296713-alienware-17-need-help-with-dsdt-compile-error/

Share this post


Link to post
Share on other sites

Here is my DSDT original extracted from AIDA.

 

AIDA64_dsdt.aml.zip

Share this post


Link to post
Share on other sites

Yes a


I see that but the DSDT is corrupted. I can't make a clean result for save in aml... Sorry dude, i did my best :(

Share this post


Link to post
Share on other sites

Yes a

 

I see that but the DSDT is corrupted. I can't make a clean result for save in aml... Sorry dude, i did my best :(

Post #10 contains instructions for obtaining an error free DSDT compile.

Share this post


Link to post
Share on other sites

To Post #10

I have no idea how your method works.
In which terminal I need to copy the code?

# in Terminal, with recent iasl
iasl -da *.bin *.aml

I need to use the program MaciASL, DSDT Editor or DSDTSE?

I found this: http://www.osx86.net/files/file/4-iasl-intel-acpi-tools-x64/

Can you post a tutorial or some explanations?

 

At the moment I get about 150 Errors, but I don't use the Code in the Terminal...I don´t know how does it goes... :(

 

THANK YOU GUYS!!

Share this post


Link to post
Share on other sites

To Post #10

 

I have no idea how your method works.

In which terminal I need to copy the code?

# in Terminal, with recent iasl
iasl -da *.bin *.aml

I need to use the program MaciASL, DSDT Editor or DSDTSE?

I found this: http://www.osx86.net/files/file/4-iasl-intel-acpi-tools-x64/

Can you post a tutorial or some explanations?

 

At the moment I get about 150 Errors, but I don't use the Code in the Terminal...I don´t know how does it goes... :(

 

THANK YOU GUYS!!

You need to extract all ssdt along with dsdt, only one dsdt is not enough to decompile. Then copy all *.aml and iasl to one folder, run iasl -da *.bin *.aml, the .dsl will have much fewer errors.

Share this post


Link to post
Share on other sites

hmm, thank you, but I get Kernal Panic... :(

And when I open the DSDT_clean-mo1.aml and compile it, I get 201 Errors...

 

post-867195-0-69730700-1397411787_thumb.jpgpost-867195-0-41623300-1397411822_thumb.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Similar Content

    • By verymilan
      Hi, i recently set up High Sierra on my AMD computer with the help of the amdosx community (i actually used an installer just to confirm that something would work in the first place before i spend hours for nothing, i can and could have downloaded High Sierra the "legal" way).
      However the graphicscard is recognized properly, the 6gig are recognized and i have no artifacts and no screen tearing with the official nvidia webdriver,
      but unfortunally, dark colors have horizontal dark stripes in them and specific bright colors like on left bar of system windows such as settings do flicker like low fps.

      I only used the clover on the flash drive for now and i'd like if it's worth digging deeper of if i should just forget about it as it is a common nvidia problem on macOS.
      Would be amazing to know.
       
      Closer machine infos:
      * High Sierra (misses a recent minor patch as my network is veeeery slow and i got this nvidia issue anyway so i mainly jumped back to linux)
      * AMD fx8350
      * Asus Sabertooth 990fx Ref. 2.0
      * NVIDIA GeForce GTX 1060 6GB
       
    • By M3G4DR01D
      Hello everyone, I have an Asus gl502vmk (i7 kabylake + GTX 1060 6 gb) laptop and I tried all the patches/kexts to get the brightness with fn keys/touchpad (I2C ELAN 1200 works with VooDoo I2C kext v1.0 but no gestures/preference pane)/Keyboard backlight to work but no success so far, any help would be appreciated, thanks in advance.
      [EDIT] (10/04/2018)
      Battery status now works, thanks to @RehabMan turned out to be incorrect SMBIOS (used iMac instead of Mbp) lol, but it drains crazy fast (~1.5 - 2 hours while on standby (all apps quited!), on windows 10 it lasts 4 - 5 hours, and on linux it lasts 6 ~ 7 hours!)
      And with VoodooI2C v2.0.1 + VoodooI2CHID kext and patched DSDT, the touchpad is now detected in the sys pref pane but still no input.
      Sound works with VoodooHDA v2.9.1, but the only issue is that the jack sense isn't working (the output device doesn't auto switch to headphone when connected)
       
      [EDIT 2] (11/04/2018)
      The system brightness now works thanks to @onejay09 but I have no brightness slider, and there are 4 extra brightness levels (brightness stops increasing after 12 levels)  and the brightness keys are not mapped correctly, plus the brightness decreases when I plug in the ac adapter, then increases if I unplug it???, the brightness level isn't also saved after reboot.
      battery still drains crazy fast (~1.5 - 2 hours, even with brightness at 50%, so apparently it is a power management issue).
      and I also have shutdowns while in sleep mode (I tried darkwake=10 and darkwake-0 and darkwake=no)
       
      P.S. I have uploaded my new report files, thanks!
       
      Latest report files (11/04/2018): https://www95.zippyshare.com/v/AMOpP0AY/file.html
    • By coscos
      I recently set up my hackintosh. Everything else works fine, the only issue is my monitor cannot come back from sleep.
      Symptom: 
      If I click the "sleep" menu manually, the system goes to sleep fine. After the system sleeps for a while (more than a few mins, I guess it's called "deep sleep"), when I try to wake it up, the monitor wakes up but stays black screen. The machine is on. If I leave the system to time out and sleep by itself, only the monitor goes off; when I try to wake it up, same symptom as above.
      What I have tried (but none worked):
      additional boot flag: ngfxpatch=pikera additional boot flag: darkwake = 0 Customize EDID
      Specs:
      Motherboard: Gigabyte Z77x-UD5H BIOS: F16j CPU: Ivy Bridge i5-3570K CPU @ 3.40GHz (quad core) Graphics: Nvidia GTX 1050 Monitor: Dell P2715Q @ 4k / 60Hz, Display Port Wifi / Bluetooth: BCM94360CS with PCIE Onboard GPU: disabled OS: High Sierra 10.13.3
      Please see attached for following files:
      EFI zip file: https://www.dropbox.com/s/8nun37msu9b1bva/EFI.zip?dl=0 I generated my own SSDT.aml using ssdtPRGen.sh; Other SSDT patches are copied from this repository: https://github.com/VoiletDragon/Z77X-UD5H-Clover-Hotpatch-Patches ioreg dump: https://www.dropbox.com/s/5a10k82guczaaws/macchiato.ioreg.zip?dl=0 result from following command: https://www.dropbox.com/s/0b22qcw79ovnjdg/kext-touch.txt.zip?dl=0 kextstat|grep -y acpiplat kextstat|grep -y appleintelcpu kextstat|grep -y applelpc kextstat|grep -y applehda sudo touch /System/Library/Extensions && sudo kextcache -u /
      I am looking forward to your suggestions. Thanks.
    • By giacomo.dessi2303
      Salve, sto ancora tentando di far funzionare il mio lettore di schede SD, macos lo riconosce in resoconto di sistema ma non funziona, in firma c'è il modello esatto e gli id che ottengo da resoconto di sistema, ho provato a seguire varie guide e oggi ho trovato questa che sembrerebbe aver funzionato a questo utente: 
      Secondo voi è una buona idea eliminare un kext di sistema? E poi questi kext di cui parla dove gli trovo? Grazie a tutti
×