Jump to content

Working sleep on Intel HD 4000 and nVidia NVS 5200M on Dell Latitude E6430 (Optimus Enabled or Disabled)!


FrostyTheSnowman

Recommended Posts

On 10/29/2016 at 9:19 AM, Pablo Iglesias said:

1. I didn't find the PNLF method to insert in the DSDT. Is it the '[igpu] Brightness fix (HD300/HD4000)' patch that I need to apply?

 

1. PNLF code can be tricky... there are some different variations floating around. The '[igpu] Brightness fix (HD3000/HD4000)' patch does work for Intel, but it does not work correctly for Nvidia. I adjusted the code slightly to work with both Intel/Nvidia, this was the resulting code I used:

 

 

 

 

   Scope (_SB)

    {
        Device (PNLF)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, EisaId ("APP0002"))  // _HID: Hardware ID
            Name (_CID, "backlight")  // _CID: Compatible ID
            Name (_UID, 0x0A)  // _UID: Unique ID
            Name (_STA, 0x0B)  // _STA: Status
        }
    }
 
 
2. Backlight code for the Nvidia card is not very well documented online... there isn't much love for Nvidia on Hackintosh laptops because troubleshooting can be complicated (compared to Intel). In this case I had to research the 'PWM' info for the backlight on Nvidia cards and create my own code based on the Intel backlight code - this was the resulting code I used:
 
 

 

       Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            Store (Package (0x06)
                {
                    "AAPL,backlight-control", 
                    Buffer (0x04)
                    {
                         0x01, 0x00, 0x00, 0x00                         
                    }, 
 
                    "@0,backlight-control", 
                    Buffer (0x04)
                    {
                         0x01, 0x00, 0x00, 0x00                         
                    }, 
 
                    "@0,pwm-info", 
                    Buffer (0x14)
                    {
                        /* 0000 */  0x01, 0x14, 0x00, 0x64, 0xA8, 0x61, 0x00, 0x00,
                        /* 0008 */  0x08, 0x52, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
                        /* 0010 */  0x00, 0x04, 0x00, 0x00                         
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
    }
 
 
NOTE: The above '_DSM' method requires 'DTGP' method to be present in DSDT to work. This is the resulting code I used:
 
 

 

   Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                             0x03                                           
                        }, Arg4)
                    Return (One)
                }
 
                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }
 
        Store (Buffer (One)
            {
                 0x00                                           
            }, Arg4)
        Return (Zero)
    }
 
 
3. There are many _DSM methods in DSDT, however they do not affect the Nvidia card, because the Nvidia code is located in 'SSDT-7.dsl' (unless you copy it into the DSDT manually). The _DSM method in 'SSDT-7.dsl' is the one you need to clear and replace.
 
4. Yes, the XOSI 'SSDT-n.aml' file needs to be created and placed in '/EFI/CLOVER/ACPI/patched', the 'n' can be any number you like as long as the order is correct and it doesn't conflict with other SSDTs. This is the resulting XOSI code I used:
 
 

 

DefinitionBlock ("", "SSDT", 1, "hack", "XOSI", 0x00000000)
{
    Method (XOSI, 1, NotSerialized)
    {
        Name (WINV, Package (0x09)
        {
            "Windows", 
            "Windows 2001", 
            "Windows 2001 SP2", 
            "Windows 2006", 
            "Windows 2006 SP1", 
            "Windows 2009"
        })
        Return (LNotEqual (Ones, Match (WINV, MEQ, Arg0, MTR, Zero, Zero)))
    }
}
 
 
Let me know if you have any questions! ;)
Link to comment
Share on other sites

It doesn't take too long, the DSDT patches are documented in post #1, #5 and #12 of this thread. I'm sure they would work the same on the E6530 (w/Nvidia). :)

 

I don't know for sure if the E6430 DSDT in my bootpack will be compatible with E6530, but I would go ahead and try my bootpack anyway and see how it works - it will probably work fine.

 

Let us know how it works out! ;)

Link to comment
Share on other sites

hmm..I use your bootpack to enable sleep. I generate an CPU ssdt with the famous ssdtPRGen.The laptop was still unable to start

 

Checked drop SSDT from clover bootloader and it started.Sleep is working. I still have the sensation that something is not working ok.It takes too long to start... I hope to have the courage to patch my own DSDT.

Link to comment
Share on other sites

Awesome, looks like the E6430 DSDT is working just fine on your E6530! 

 
Unfortunately the issues you are describing (and the screenshot you provided) are a symptom of Nvidia GPU PM (power management) not working properly - if you remove/drop the CPU SSDT then OSX will not attempt to enable GPU PM and OSX will boot normally (but slow), however you will not have any CPU PM if you do this.
 
The easiest fix for this issue is to edit the Clover 'config.plist' file with a different 'Board-ID' used for an iMac (instead of a MacBook) but keep the 'ProductName' the same:
 
Change this:
 
 

 

<key>SMBIOS</key>
<dict>
          <key>Board-ID</key>
          <string>Mac-4B7AC7E43945597E</string>
          <key>ProductName</key>
          <string>MacBookPro9,2</string>
          <key>Trust</key>
          <false/>
</dict>
 
 
To this:
 
 

 

<key>SMBIOS</key>
<dict>
          <key>Board-ID</key>
          <string>Mac-00BE6ED71E35EB86</string>
          <key>ProductName</key>
          <string>MacBookPro9,2</string>
          <key>Trust</key>
          <false/>
</dict>
 
 
After editing the Clover 'config.plist' with the above OSX will not attempt to enable GPU PM, and you should be able to use your CPU SSDT. ;)
Link to comment
Share on other sites

How do I find that my cpu is working properly?Is Turbo mode available to hackintosh?

The USB 3.0 seems that is not working. I removed the backlight kext and my system seems  is starting faster.

One time, it fails to wake.It started with bios loading,clover and so one...

Why is so important smbios settings?

Another thing...when i opened the HWSensors app, my screen turned in white or gray and freeze....

Link to comment
Share on other sites

I have Dell Latitude E6530 with FHD 15.6" and core i7 3740 QM. I managed to get all hardware working under 10.11.6 except nVidia card. I can not get it when i switch off 'Optimus'. Any help needed )) Thanks for this topic )) With this help I managed to bring up card reader and battery status! BTW I used MacBookPro10,1 as default profile.

  • Like 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...