Jump to content
Whit3Spirit

Disabling NVIDIA Optimus card on all laptops

345 posts in this topic

Recommended Posts

We do the same thing on the ProBook. You use an External declaration to gain access to the methods in SSDT from DSDT. These are the DSDT patches we use:

into definitionblock code_regex . insert
begin
External(\_SB_.PCI0.PEGP.DGFX._OFF, MethodObj)\n
External(\_SB_.PCI0.PEGP.DGFX._ON, MethodObj)\n
end;

into method label _PTS code_regex ([\s\S]*) replace_matched
begin
If (CondRefOf(\\_SB_.PCI0.PEGP.DGFX._ON)) { \\_SB_.PCI0.PEGP.DGFX._ON() }\n
%1
end;

into method label _WAK code_regex (Return\s+\(.*) replace_matched
begin
If (CondRefOf(\\_SB_.PCI0.PEGP.DGFX._OFF)) { \\_SB_.PCI0.PEGP.DGFX._OFF() }\n
%1
end;
The paths to _ON/_OFF may be different in your SSDT, so be sure to tweak the patch as necessary.

 

 

Rehab?

 

Just a question, Why do you turn the card on, on PTS?

Share this post


Link to post
Share on other sites
Advertisement

Rehab?

 

Just a question, Why do you turn the card on, on PTS?

We found that leaving the card in _OFF mode across sleep caused problems with restart and wake. So, in _PTS we restore via _ON, and _WAK turns it back off again.

Share this post


Link to post
Share on other sites

These patches could be useful for me if i could disable the HD4600 instead of the Nvidia card as it is used to control display on external screen through HDMI, good job though :)

Share this post


Link to post
Share on other sites

I use already the latest Clover...how can I use it on the fly?

 

Go make this SSDT with clover in patched DSDT folder, normaly it's good for you. Remember to disable the DropOEM tables.

 

 

I'm not even touching the DSDT but only adding _DSM methods and other things that I need in a SSDT which is injected by Clover (DSDT free Clover config). The _PTS and _WAK methods do not exist in the SSDT where I have turned off the card. Can I reference to the _PTS and _ WAK in the SSDT? How? And will that overwrite the methods with the ones defined in DSDT? Thanks again.

 

My SSDT is similar to this one as decribed by Stevo here

DefinitionBlock ("SSDT-1.aml", "SSDT", 2, "APPLE ", "Optimus", 0x00001000)
{
    External (\_SB_.PCI0.PEG0, DeviceObj)
    External (\_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)
    External (\_SB_.PCI0.PEG0.PEGP._DSM, MethodObj)
    Scope (\_SB.PCI0.PEG0)
    {
        Method (_INI, 0, NotSerialized)
        {
            \_SB.PCI0.PEG0.PEGP._DSM (Buffer (0x10)
                {
                    /* 0000 */   0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47,
                    /* 0008 */   0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0
                }, 0x0100, 0x1A, Buffer (0x04)
                {
                     0x01, 0x00, 0x00, 0x03
                })
            If (One)
            {
                \_SB.PCI0.PEG0.PEGP._PS3 ()
            }
        }
    }
}

Share this post


Link to post
Share on other sites

RehabMan - I already have a patched DSDT that works :)

 

I'm just trying this new method of not using a patched DSDT and using Clover to do patching on the fly. I guess I will patch in the _PTS and _WAK sections of the DSDT using Clover.

One thing you could do is rename (with Clover search/replace patching) _PTS and _WAK (to something like ZPTS/ZWAK... make sure they are not used). Then from SSDT, you can define new _PTS and _WAK, that call back into DSDTs now renamed ZPTS/ZWAK and do the extra stuff you want them to do...

Go make this SSDT with clover in patched DSDT folder, normaly it's good for you. Remember to disable the DropOEM tables.

I don't think you understand completely what webcivilian is trying to do...

Share this post


Link to post
Share on other sites

Go make this SSDT with clover in patched DSDT folder, normaly it's good for you. Remember to disable the DropOEM tables.

Always enable DropOEM when you use patched SSDT, or it will cause conflict between ssdt tables.

Share this post


Link to post
Share on other sites

One thing you could do is rename (with Clover search/replace patching) _PTS and _WAK (to something like ZPTS/ZWAK... make sure they are not used). Then from SSDT, you can define new _PTS and _WAK, that call back into DSDTs now renamed ZPTS/ZWAK and do the extra stuff you want them to do...

 

Good idea. Let me try it :)

Share this post


Link to post
Share on other sites

Restart still broken even after call the ON method on _PTS.

If you want another set of eyes, post ioreg (use IORegistryExplorer 2.1).

Share this post


Link to post
Share on other sites

OK here are the files. I have also included my modified SSDT and Clover patched DSDT. Also a patched DSDT which works.

 

Thanks again for your help.

I wasn't expecting ZPTS/ZWAK to be completely empty, but ok...

 

Looks like you just copied _WAK/_PTS to ssdt-2 and then patched (to call PINI/OPOF/etc).

 

Seems like it should work. And if I extract all your DSDT/SSDTs from ioreg and use "iasl -da *" I get successful disassembly. In addition, PNLF is loaded and attached to ACPIBacklight, so we know that ssdt-2 is loading ok.

 

Your next step would be to do some traces... Have you used ACPIDebug yet? https://github.com/RehabMan/OS-X-ACPI-Debug. It is very useful...

Share this post


Link to post
Share on other sites

I haven't used ACPIDebug yet. Let me try it and see if I find something. 

 

But can you check my working DSDT against the SSDTs. The ON and OFF methods are a little different and I'm just calling the PS3 methods from IGPU _DSM and there are no issues with restart.

Share this post


Link to post
Share on other sites

I haven't used ACPIDebug yet. Let me try it and see if I find something. 

 

But can you check my working DSDT against the SSDTs. The ON and OFF methods are a little different and I'm just calling the PS3 methods from IGPU _DSM and there are no issues with restart.

I didn't look at your "working DSDT." I assumed you were doing the *same* thing with your SSDT solution. Is that not the case? If so, why?

Share this post


Link to post
Share on other sites

There are some differences. Doix actually created the Optimus off DSDT patch for XPS laptops. I need some help understanding the difference.

I would try my way... then see if you can adapt to your desire for SSDT-based solution:

- patch SSDT to call _OFF from _INI

- patch _PTS to call _ON

- patch _WAK to call _OFF

 

I don't really think the "lets copy a bunch of code from SSDT into DSDT" technique is a good one.

Share this post


Link to post
Share on other sites

I don't understand all your work but :

 

- Why make a SSDT solution for disabled Optimus if the DSDT must be changed ?

- What is the technic for change the DSDT code on the fly in clover ? (for change WAK to ZWAK) Because if you make a SSDT solution, this is for those can't change their DSDT...

 

Can you post just a link for me so I can learn to change DSDT on the fly with clover ?

 

Thanks dudes

Share this post


Link to post
Share on other sites

@ Whit3Spirit - The DSDT doen't need to be changed because we can disable nvidia optimus from SSDT. My problem is that my computer won't restart but shutdown when I turn off Optimus so I was trying some suggestions given by Rehabman to turn on the card.

 

The technique is called Clover DSDT patching. You can read it here: http://clover-wiki.zetam.org/Configuration/ACPI#DSDT

Share this post


Link to post
Share on other sites

@ Whit3Spirit - The DSDT doen't need to be changed because we can disable nvidia optimus from SSDT. My problem is that my computer won't restart but shutdown when I turn off Optimus so I was trying some suggestions given by Rehabman to turn on the card.

 

The technique is called Clover DSDT patching. You can read it here: http://clover-wiki.zetam.org/Configuration/ACPI#DSDT

You can't, the _OFF method is called inevitably in _WAK and in _INI method and you can't call their method in a DSDT. Or i don't understand... ? :(

 

And thanks for Patches in Clovers, instructive !

Share this post


Link to post
Share on other sites

You can't, the _OFF method is called inevitably in _WAK and in _INI method and you can't call their method in a DSDT. Or i don't understand... ? :(

 

And thanks for Patches in Clovers, instructive !

I don't think you understand. You can call whatever method you want, no matter where it exists... just use External to reach it.

Share this post


Link to post
Share on other sites

I don't think you understand. You can call whatever method you want, no matter where it exists... just use External to reach it.

You can add PINI method in _WAK from SSDT then ?

 

Because you have to call the OFF method in the WAK method, not with and if you call WAK from SSDT with an External link, you can't modify it... No ?

 

Sorry if i have a very bad english :P i just learn with all your know :lol:

Share this post


Link to post
Share on other sites

You can add PINI method in _WAK from SSDT then ?

You use External to access a method defined elsewhere.

 

Because you have to call the OFF method in the WAK method, not with and if you call WAK from SSDT with an External link, you can't modify it... No ?

Not sure what you're asking.

Share this post


Link to post
Share on other sites

With clover patch :

 

Change :

Method (_WAK

base64 : TWV0aG9kIChfV0FL

 

To :

Method (PINI, 0, NotSerialized)
    {
        \_SB.PCI0.PEG0.PEGP._DSM (Buffer (0x10)
            {
                /* 0000 */   0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47,
                /* 0008 */   0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0
            }, 0x0100, 0x1A, Buffer (0x04)
            {
                 0x01, 0x00, 0x00, 0x03
            })
        If (One)
        {
            \_SB.PCI0.PEG0.PEGP._PS3 ()
        }
​    }
Method (_WAK

base64 : TWV0aG9kIChQSU5JLCAwLCBOb3RTZXJpYWxpemVkKQ0KICAgIHsNCiAgICAgICAgXF9TQi5QQ0kwLlBFRzAuUEVHUC5fRFNNIChCdWZmZXIgKDB4MTApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLyogMDAwMCAqLyAgIDB4RjgsIDB4RDgsIDB4ODYsIDB4QTQsIDB4REEsIDB4MEIsIDB4MUIsIDB4NDcsDQogICAgICAgICAgICAgICAgLyogMDAwOCAqLyAgIDB4QTcsIDB4MkIsIDB4NjAsIDB4NDIsIDB4QTYsIDB4QjUsIDB4QkUsIDB4RTANCiAgICAgICAgICAgIH0sIDB4MDEwMCwgMHgxQSwgQnVmZmVyICgweDA0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAweDAxLCAweDAwLCAweDAwLCAweDAzDQogICAgICAgICAgICB9KQ0KICAgICAgICBJZiAoT25lKQ0KICAgICAgICB7DQogICAgICAgICAgICBcX1NCLlBDSTAuUEVHMC5QRUdQLl9QUzMgKCkNCiAgICAgICAgfQ0K4oCLICAgIH0NCk1ldGhvZCAoX1dBSw==

 

Change :

Method (_WAK, 1, Serialized)
     {

Base64 : TWV0aG9kIChfV0FLLCAxLCBTZXJpYWxpemVkKQ0KICAgICB7

 

To :

Method (_WAK, 1, Serialized)
     {
         PINI ()

Base64 : TWV0aG9kIChfV0FLLCAxLCBTZXJpYWxpemVkKQ0KICAgICB7DQogICAgICAgICBQSU5JICgp

 

 

Change :

Method (_INI, 0, NotSerialized)
        {
            Store (0x07D0, OSYS)      

Base64 : TWV0aG9kIChfSU5JLCAwLCBOb3RTZXJpYWxpemVkKQ0KICAgICAgICB7DQogICAgICAgICAgICBTdG9yZSAoMHgwN0QwLCBPU1lTKQ==

 

To :

Method (_INI, 0, NotSerialized)
        {
            Store (0x07D0, OSYS)
            PINI()

Base64 : TWV0aG9kIChfSU5JLCAwLCBOb3RTZXJpYWxpemVkKQ0KICAgICAgICB7DQogICAgICAgICAgICBTdG9yZSAoMHgwN0QwLCBPU1lTKQ0KICAgICAgICAgICAgUElOSSgp

 

 

 

 

 

Like that in config.plist :

<key>Patches</key>
            <array>
                <dict>
                    <key>Find</key>
                    <data>TWV0aG9kIChfV0FL</data>
                    <key>Replace</key>
                    <data>TWV0aG9kIChQSU5JLCAwLCBOb3RTZXJpYWxpemVkKQ0KICAgIHsNCiAgICAgICAgXF9TQi5QQ0kwLlBFRzAuUEVHUC5fRFNNIChCdWZmZXIgKDB4MTApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLyogMDAwMCAqLyAgIDB4RjgsIDB4RDgsIDB4ODYsIDB4QTQsIDB4REEsIDB4MEIsIDB4MUIsIDB4NDcsDQogICAgICAgICAgICAgICAgLyogMDAwOCAqLyAgIDB4QTcsIDB4MkIsIDB4NjAsIDB4NDIsIDB4QTYsIDB4QjUsIDB4QkUsIDB4RTANCiAgICAgICAgICAgIH0sIDB4MDEwMCwgMHgxQSwgQnVmZmVyICgweDA0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAweDAxLCAweDAwLCAweDAwLCAweDAzDQogICAgICAgICAgICB9KQ0KICAgICAgICBJZiAoT25lKQ0KICAgICAgICB7DQogICAgICAgICAgICBcX1NCLlBDSTAuUEVHMC5QRUdQLl9QUzMgKCkNCiAgICAgICAgfQ0K4oCLICAgIH0NCk1ldGhvZCAoX1dBSw==</data>
                </dict>
                <dict>
                    <key>Find</key>
                    <data>TWV0aG9kIChfV0FLLCAxLCBTZXJpYWxpemVkKQ0KICAgICB7</data>
                    <key>Replace</key>
                    <data>TWV0aG9kIChfV0FLLCAxLCBTZXJpYWxpemVkKQ0KICAgICB7DQogICAgICAgICBQSU5JICgp</data>
                </dict>
                <dict>
                    <key>Find</key>
                    <data>TWV0aG9kIChfSU5JLCAwLCBOb3RTZXJpYWxpemVkKQ0KICAgICAgICB7DQogICAgICAgICAgICBTdG9yZSAoMHgwN0QwLCBPU1lTKQ==</data>
                    <key>Replace</key>
                    <data>TWV0aG9kIChfSU5JLCAwLCBOb3RTZXJpYWxpemVkKQ0KICAgICAgICB7DQogICAgICAgICAgICBTdG9yZSAoMHgwN0QwLCBPU1lTKQ0KICAgICAgICAgICAgUElOSSgp</data>
                </dict>
            </array>

that's good ?

Share this post


Link to post
Share on other sites

Or you can just add an SSDT file and do the following without Clover patching the DSDT:

DefinitionBlock ("SSDT-1.aml", "SSDT", 2, "DELL ", "Optimus", 0x00001000)
{
    External (\_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)    
    External (\_SB_.PCI0.PEG0.PEGP._DSM, MethodObj)    
    Method (\_SB._INI, 0, NotSerialized)
    {
        \_SB.PCI0.PEG0.PEGP._DSM (Buffer (0x10)
            {
                /* 0000 */   0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47,
                /* 0008 */   0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0
            }, 0x0100, 0x1A, Buffer (0x04)
            {
                 0x01, 0x00, 0x00, 0x03
            })
        If (One)
        {
            \_SB.PCI0.PEG0.PEGP._PS3 ()
        }
    }
}

Share this post


Link to post
Share on other sites

Or you can just add an SSDT file and do the following without Clover patching the DSDT:

DefinitionBlock ("SSDT-1.aml", "SSDT", 2, "DELL ", "Optimus", 0x00001000)
{
    External (\_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)    
    External (\_SB_.PCI0.PEG0.PEGP._DSM, MethodObj)    
    Method (\_SB._INI, 0, NotSerialized)
    {
        \_SB.PCI0.PEG0.PEGP._DSM (Buffer (0x10)
            {
                /* 0000 */   0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47,
                /* 0008 */   0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0
            }, 0x0100, 0x1A, Buffer (0x04)
            {
                 0x01, 0x00, 0x00, 0x03
            })
        If (One)
        {
            \_SB.PCI0.PEG0.PEGP._PS3 ()
        }
    }
}

 

This only works if there is no _SB._INI already defined in DSDT.

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.

Announcements

  • Similar Content

    • By Lakkantha
      i install mac Catalina osx but can't boot without fake intel inject. And no audio or wifi. Can you help to make my clover config please
      Efi folder
       


    • By Raffay1234
      I'm transitioning from Clover to Opencore. I thought the process will be simpler but it turns out it isn't. I have created a bootable Catalina USB with Opencore but stuck at this error. I have attached my EFI and the verbose output. Anyone please provide some guidance please?
       
      The laptop is HP Pavilion 15 Gaming:
      Intel Core i7-9750H
      16GB RAM
      256GB SSD + 1TB SSD
      PS2 Keyboard + I2C Trackpad
       

      EFI.zip
    • By tlefko
      Version Info
      This build is compatible up to Big Sur Beta
      Now Compatible with macOS 11 Please leave feedback with issues or w/o Comitted to Updating up to OS 11 MULTITOUCH TOUCHSCREEN SUPPORT Latest Release Notes
      Fixed Bluetooth and Wifi Stability Issues Improved Preformance and Power Managements Can Provide Files for Display Overrides Additional Patches for 3K Display updated for 15.4 rev 1 if using unsupported wifi card disable it in bios use config.plist not HD520 Perfect Sleep/Wake for 1080P Model no-touch, still bugs for 3K Exact same functionality as Catalina Notes
      Never tested USB C except for charging, works great USB devices eject on sleep (not really an issue) 4K model has minor sleep wake issues occasionally, 1080P is fully functional 4K sleep has been heavily improved however and glitches are rare, fixed by reopening lid POST
      run sudo pmset -a hibernatemode 0 If on 3K disable sleep completely for maximum stability If no mouse, install all voodoo kexts using Kext Utility Description
      This esentially an ultra-simplistic version that is stable without the use of a deploy or complicated file installations and copies. You can easily view all the SSDT patches along with configuration files for the bootloader as they are all documented clearly in the files. This does include a copy of Clover, which of course I do not contribute to and am only responsible for the provided files, patches, and kext placements This guide provides a working setup with little knowledge of the topic and without "optimization" (because often they can break things). But, it is fully functional and preforms properly and is stable
      Make sure you are using DW1560 for wifi or else KP. If not using remove BRCM kexts from CLOVER>kexts>other. BIOS Setup
      Set all SATA operation as AHCI Disable Secure Boot, Fast Boot For Coil Whine improvement disable C-States Enable UEFI Booting INSTALL (VERY IMPORTANT)
      Due to structural changes in the setup of apple's Big sur, this EFI cannot boot the installer it can only boot into a system / device that has already been created and setup. To do this, you need to install Big Sur to a virtual machine (lots of guides online) and then create an dmg of that system, and restore it onto your HDD using the 'dd' command There are various guides online how to get this virtual machine setup complete. You can then use the attached EFI folder to boot and use macOS big Sur You can use this video to show you how to get your macOS pre-installed onto your hard drive https://www.youtube.com/watch?v=HMU3nhcbWHw Boot Entry Setup
      Boot into the BIOS of the computer, then navigate to the Boot setup (or entries (not sure what it is called exactly, but it will be a list of the options your computer selects to boot) Click add new, and make sure the USB isn't plugged in. Select the only option that is avaiable, and in FS0 navigate to Boot/BOOTx64. Add this as an entry, then select this as whatever priority you would like. Messages and Facetime
      Gnerate your own Serials, Board Numbers, MLB There are various guides online to do this and as default they're set to essentially Null (Fakeserial) This is fairly straightforward and there is lots of external recourses, or you can contact me for support. Headphones and Audio
      All audio from speakers should work perfectly along with Bluetooth and USB audio To resolve headphones static issue (wired) install combojack Finished!
      Congratulations, there really aren't any more steps that are required. Feel free to contact me with any questions. Donations
      Send me a coffee lefkotyler@gmail.com  
      Latest releases hosted here https://github.com/tlefko/XPS-13-9350-Big-Sur/ along with faster replies
      EFI.zip
    • By CaccapoKissima
      Hi, I wanted to transpose my CLOVER installation to OpenCore for future updates.
       
      I followed this guide and after some googling
      https://github.com/dortania/vanilla-laptop-guide
      I've fixed the LOG: EXITBS error (RANDOM SEED like error).
      Now I still receiving the IOPCI error (kernel_task kernel panic). 
       
      My CLOVER is fully working.
      - Backlight and Monitor
      - Trackpad
      - i7-7700HQ
      - Battery Patch
      - Camera and Audio (B&O)
      - Keyboard
      - dGPU GTX 1050 is turned off
       
      On OpenCore I translated everything except the battery (I just need to apply the If statement in ACPI), but I want first to boot on Mac OS using the OpenCore.
       
      HP Pavilion Power 15 
       
       
      config.plist

    • By tonyx86
      *** I have started another thread for installing Catalina on the Dell Latitude E6410.  If you were thinking of installing Mojave, but would prefer to skip right to Catalina, click here. ***
       
      *** I am no longer maintaining the installation files in this first post.  Refer to my Catalina thread for the latest guidelines / files for installing macOS on this Latitude E6410 with Nvidia graphics ***
       
      I was inspired by @duduclx post here for installing El Capitan on a Dell Latitude E6410, so I decided to install Mojave 10.14.5 and subsequently 10.14.6.  Everything works perfectly (including sleep).  I'm starting this thread hoping to help others install Mojave on their E6410s.  A brief installation guide is provided later in this first post.  The interested reader is encouraged to read the other posts in this thread to see how this solution evolved and to learn additional tips/details not provided in this first post (including dual-booting with macOS and Windows).
       
      My system is as follows:
      Dell Latitude E6410 (I7-620m, Nvidia 3100M, 8GB DDR3, 512GB SSD, 1440x900 display, BIOS: A17) MacOS: Mojave 10.14.6 (APFS) (Patched with DosDude Mojave Patcher 1.3.3) MacModel: MacBookPro 6,2 (LPCB._DSM.Name "pci8086,3b09") Kexts: Lilu 1.3.6, VoodooHDA 2.9.2, AirportBrcmFixup 2.0.0, IntelMausiEthernet 2.4.1d1, ACPIBatteryManager 1.90.1, BrcmPatchRam2.kext, BrcmFirmwareRepo.kext, VoodooPS2Controller (the "Refined ALPS Touchpad" version - release 6 developed by @Dr. Hurt and compiled by @bronxteck), not the original version), USBInjectAll (with custom SSDT-UIAC), VoodooSDHC.kext (configured as shown here). Wi-Fi: Broadcom BCM 94352HMB (with AirportBrcmFixup.kext) CLOVER (Legacy): R4961  
      Configuration items that may be different from what you have seen in other E6410 configurations
      Addition of _OFF and _ON methods to _PTS and _WAK methods respectively (to control discrete graphics in order to enable sleep/wake) LPCB._DSM patched with device-id "3b09" AND "name", "pci8086,3b09" for native Nehalem power management with MacBookPro 6,2 ECDV renamed to EC so that AppleBusPowerController loads AGP.VID._DSM patched with device-id "0a29" so that AppleGraphicsPowerManagement loads No CLOVER Generate P or Generate C States (with the correct LPCB._DSM and MacBookPro 6,2, these CLOVER options are unnecessary for this architecture and only limit max multiplier and reduce number of P states) DSDT patched to include HDAU device (device-id 0x0be3)  
      What is NOT working:
      Display brightness can be controlled with keyboard keys, but cannot be controlled with slider in Display settings. Graphics Power Management - AGPM loads (because 10de,0a29 device is injected), but there's no evidence that 3100m frequency and voltage is changing.
        What is NOT tested:
      Smartcard Reader eSata (I have this disabled in my BIOS) Firewire Port (it does appear in the Network settings, just haven't tried it) Microphone Jack PC Card Slot (I have this disabled in my BIOS)  
      What IS working:
      SLEEP IS WORKING! Everything else not mentioned above.   Speedstep/CPUPowerManagement is perfect, system temps are low, CPU multiplier operates as expected, battery life is long Shutdown is fast Display/graphics acceleration is perfect (thanks to DosDude's Mojave patcher) Brightness (adjusted with brightness keys on keyboard) works perfectly Battery Manager works (battery status is displayed in menu bar) simply by installing ACPIBatterManager.kext. Wi-Fi (after changing to Broadcom BCM94352HMB and installing AirportBrcmFixup.kext) Audio (volume adjustable, volume indicator appears in menu bar).  Switched to VoodooHDA from AppleALC after AppleALC caused slow boot due to "IOHDACodecFunction timeout." Ethernet port (with IntelMausiEthernet.kext) Broadcom BCM20702A0 Bluetooth (with BrcmPatchRam2.kext and BrcmFirmwareRepo.kext) Optical Drive External VGA (with corrected NVCAP.  Need NVCAP 04000000 00000100 0E000000 00000007 00000000 (credit: here) for working external VGA display. Headphone jack Display Port (tested using DP > HDMI adapter) Camera SD Card Reader  
      Known issues and their solutions (These issues have all been resolved, with the solutions incorporated into the attached config files.  The issues are listed here for historical purposes and no further work is needed unless stated otherwise).
      (Solution to this issue is to remove Device (PNLF) from the DSDT): Some users experience display issues.  Solution is to remove Device (PNLF) from the DSDT.  The attached DSDT currently still includes Device (PNLF), so you will need to edit the DSDT to remove PNLF. USB sleep/wake power IORegistry keys are no longer provided in IOUSBHostFamily.kext after High Sierra 10.13.6.  Solution is to added SSDT-USBX.aml to EFI/CLOVER/ACPI/patched.  The attached SSDT-USBX.aml includes USB sleep/wake properties for MacBookPro6,2 from High Sierra 10.13.6 IOUSBHostFamily.kext. Laptop does not sleep on lid close.  Solution is to add Notify (LID0) code to Method (BTNV) in the DSDT.  This is solved in the attached DSDT. Leaving this for historical purposes, but the CLOVER USBFix is no longer necessary after finding that I had incorrectly applied the DSDT _DSM patch for Device (EHC1).  The CLOVER USBFix is not needed after fixing the DSDT..  AAPL,clock-id and device_type do not appear in IORegistry for EHC1.  Solution is to use CLOVER on-the-fly patching/fixing/renaming for EHC1 and EHC2.  Thank you, @feartech, for this tip. ALPS trackpad performance is not good with the "standard" VoodooPS2Controller.kext that I initially used.  Switching to the "Refined ALPS TouchPad driver" is a big improvement.  I've implemented and tested this on my system.  The ALPS version of VoodooPS2Controller.kext mixes up a few keys.  Need to switch the Command and Option keys (System Preferences > Keyboard > Modifier Keys) and change keyboard type to ISO European. This configuration (captured in the attached config files) uses an injected device-id (10de,0a29) for NVidia 3100m to get AGPM to load.  While I haven't observed any performance differences, a better approach may be to inject AGPM properties for device 10de,0a6c (the actual device-id for the 3100m).  This AGPM method is discussed later in this thread.  I have briefly tested this "FakeSMC.kext method" for injecting AGPM attributes without any noticeable changes in laptop/graphics behavior. IOHWControl is not loaded under AGPM (Should be AGP > VID > NVDA,Display-A@0 > NVDATesla > AGPM > gpu-control > IOHWControl as viewed in IORegistryExplorer).  It is loaded on a real MacBookPro6,2 running Mojave and is loaded on this Dell Latitude E6410 running High Sierra.  If I "Inject NVidia" via CLOVER, IOHWControl loads properly. The Dell Latitude DSDT (BIOS A17) has a bug in Method (GNOT).  In the method, the expression  If (LOr (LGreater (OSYS, 0x07D0), LLess (OSYS, 0x07D6))) always evaluates to TRUE, so the patched DSDT has no dependency on the value of OSYS.  I suspect that LOr should be replaced with LAnd, so that this expression is TRUE for variants of Windows 2001 and False for any other OS.  While this may have no affect on MacOS, it makes one wonder how such an obvious bug made it through Dell QA and is still present in BIOS A17.  Also makes one wonder whether the sleep problem (which no one has solved) was fixed in Windows to address another DSDT bug. The assigned value of ACOS and OSYS in the DSDT are conditional on the operating system.  There is no condition for "Darwin."  The solution is to add a condition for "Darwin" (making it equivalent to one of the defined operating systems (e.g. Linux, Win7, etc).  The attached config hard-codes ACOS and OSYS values equivalent to those for Linux.  Another way to handle this (different from the method employed in the attached config files) might be to override _OSI with XOSI (defined in a custom SSDT). The portType of the Internal Bluetooth device is portType=0 which, according to Rehabman's comments in SSDT-UIAC-All.dsl, is an external USB 2 port.  This should be an internal USB port (portType=2).  I learned through trial and error that the HUB1 and HUB2 definitions in Rehabman's SSDT-UIAC-ALL.dsl apply to the ports on the EHCx USB hubs.  The solution is to include the HUB1 definition in SSDT-UIAC.dsl and change portType to 2 for HP15.  This change doesn't appear to affect/fix sleep, but it may prevent instant wake if we get sleep working. There are minor differences between a real MacBookPro6,2 IORegistry dump and this HackBookPro6,2 IORegistry dump that can be resolved with simple DSDT edits.  I am now running with these changes, but haven't found these changes to make any difference in operational behavior.
      Rename Device (AC) -> Device (ADP1) Remove UID from Device (HPET) Add compatible ID "PNP0C01" to Device (HPET) Change ADP1:_STA from 0x0F to 0xFFFFFFFF Enable Ambient Light Sensor and renamed to Device (ALS0) from Device (ALS) Add compatible ID "smc-als" to ALS0 Rename LID -> LID0 Change "name" definitions to Buffers in _DSM methods Rename Device (PBTN) to PWRB Rename Device (SBTN) to SLPB Sleep / Wake does not work with the basic DSDT edits.  I have discovered that Sleep / Wake can be made to work by adding discrete graphics _OFF and _ON methods to _PTS and _WAK methods respectively (borrowed the concept and code from a working E6430 DSDT: Credit here: https://osxlatitude.com/forums/topic/9248-working-sleep-on-intel-hd-and-nvidia-nvs-on-dell-latitude-e6430-optimus-enabled-or-disabled/page/6/. The Clover boot arg should be changed to "darkwake=0" for reasons explained by @holyfield in this thread.  Leaving this for historical purposes: LCD screen is blank when waking laptop by opening lid (screen is not blank when waking with power button).  Solution is to add darkwake=8 to CLOVER boot args.  Thank you @Hervé for this tip.  
      Brief Installation Guide:
      Configure BIOS (version A17) as follows (leave default unless listed here): Boot Sequence: USB, Internal HDD, CD/DVD, Modular Bay HDD; Boot List Option: Legacy; Integrated NIC: Enabled; Parallel Port: Disabled; Serial Port: Disabled; SATA Operation: AHCI; Misc Devices: Enable Modular Bay, Camera, External USB, Microphone, Media Card and 1394; Latitude ON Reader: Disabled; Keyboard Illumination: Auto ALS and Input; Ambient Light Sensor: Enabled; OROM Keyboard Access: Disable; TPM Security: Disable; Computrace: Deactivate; CPU XD Support: Enable; Performance: Enable all options; Power Management: Disable Wake on AC, Disable Wake on LAN/WAN, Express Charge: Standard, Charge Behavior: Enabled; Keypad: Fn Key Only; Mouse/Touchpad: Touchpad/PS-2 Mouse; USB Emulation: Enable Legacy; Fn Key Emulation: Disabled; Fastboot: Thorough; Virtualization: Enable Intel Virtualization, Disable VT for Direct I/O, Disable Trusted Execution; Wireless Switch: Bluetooth and WLAN; Wireless Device Enable: Bluetooth and WLAN;  Create your MacOS installer USB (Use DosDude's Mojave Patcher for Mojave) (start with High Sierra and not Mojave if you're new to hackintosh). Install CLOVER (Legacy) on installer USB using attached EFI as your guide for patched ACPI, kexts and config.plist Install MacOS to your SSD.  When you run DosDude's Mojave Patcher, DO NOT install LegacyUSBInjector.kext - you're going to use Rehabman's USBInjectAll.kext.  Also, do not install the DosDude SIP kext (you're using CLOVER to manage SIP). Install the following kexts in /Library/Extensions:  ACPIBatteryManager.kext, AirportBrcmFixup.kext, BrcmFirmwareRepo.kext, BrcmPatchRAM2.kext, FakeSMC.kext, FakeSMC_ACPISensors.kext, FakeSMC_CPUSensors.kext, FakeSMC_GPUSensors.kext, FakeSMC_LPCSensors.kext, IntelMausiEthernet.kext, Lilu.kext, USBInjectAll.kext, VoodooPS2Controller.kext (the "Refined ALPS Touchpad driver," not the original), VoodooSDHC.kext (configured as shown here). Switch Command and Option keys to compensate for Refined ALPS driver issue (System Preferences > Keyboard > Modifier Keys).  Also change keyboard type to ISO European to fix the [ ` ~ ] key (to the left of the "1" (one) key. Install VoodooHDA Install HWMonitor application  
      Tips for Improved Performance (on this and other older systems)
      System Preferences > Spotlight > Search Results: Uncheck all options System Preferences > Spotlight > Privacy: Add all Volumes System Preferences > Accessibility > Display: Check "Reduce motion" System Preferences > Accessibility > Display: Check "Reduce transparency"  
      Other tips
      If your fan is always running and temps are good, try pressing Fn + z After applying Mojave updates, HWMonitor may not display discrete graphics attributes.  On systems with multiple displays, a second (or third display) may not be active after applying the Mojave update.  The solution to this is to run "sudo kextcache -i /" (in a terminal window) and reboot.  This will usually fix the issue.  If the issue is not fixed, run DosDude's Post Install Utility, apply the Legacy Graphics Patch, reboot and then run "sudo kextcache -i /" if necessary.  
      Screenshots
       
       
      Credits
      In addition to those mentioned in this first post and in subsequent posts in this thread, much of this solution for the Latitude E6410 was made possible by the numerous contributions of @RehabMan.  I hope he's doing well, wherever he is.  Hopefully he has long since forgotten what a PIA I was (and still am) as I was (and still am) learning hackOS.  
       
      E6410-Mojave-v4.zip
×