Jump to content

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


FrostyTheSnowman

Recommended Posts

Working sleep on E6430 for both graphics modes! (Optimus Enabled or Disabled)

 

*** This package is intended for those who want full use of both Intel and Nvidia cards on their E6430 under macOS(X) - you will be able to use Intel and Nvidia graphics cards together (Optimus Enabled in BIOS), or Nvidia graphics card alone (Optimus Disabled in BIOS) with full functionality. If you are looking for Intel-only (Nvidia turned off all the time for battery savings) support this is not the focus of this package/thread.

 

NOTE: Reported to also work on E6530 models!

 

Targeted macOS(X) Versions:

 

El Capitan 10.11.x and Sierra 10.12.x

 

NOTES:

 

1. No CPU-specific SSDT code/settings are included, should work on any E6430 CPU
2. No wifi-specific code/settings are included, refer to compatible card list for suitable replacement wifi card
3. No SMBIOS details are set other than 'ProductName' and 'Board-ID', everything else is auto-generated by Clover - if you want iMessage, etc working you will need to provide valid data
4. If you are using the 1366x768 LCD you will need to be on BIOS A13 or older to prevent artifacts when using Intel (Optimus Enabled), and you will need to set Clover to '1366x768' along with 'ig-platform-id' set to '0x01660003'
5. Be sure to disable hibernation and remove your hibernate file within your OS!
 

Hardware used for build:

Dell Latitude E6430 w/BIOS A18
Intel HD 4000 and Nvidia NVS 5200M Graphics (Optimus)
Intel Ivy Bridge Core i7-3940XM
16GB DDR3L
1600x900 LCD (Samsung LTN140KT07 - Dell P/N HND16)
Dual-Link LVDS (Dell P/N XPY7J)
Backlit Keyboard
ALPS Touchpad/Trackstick

 

 

Fixes Applied:

 

* Nvidia 'black screen' on boot

Issue: black screen caused by incorrect/missing display information for Nvidia in MacBookPro9,2 profile in 'AppleGraphicsDevicePolicy.kext'
Fix: fixed by checking 'AppleGraphicsDevicePolicy.kext' for a 'ConfigMap' with no profile then declaring as such in SMBIOS (I used 'Mac-4B7AC7E43945597E' in SMBIOS to accomplish this)

* Nvidia Sleep 'freeze'
 
Issue: when attempting to sleep with Nvidia card turned on (Optimus Disabled/Enabled) the laptop will freeze while entering sleep state
Fix: used _OFF call to disable the Nvidia hardware before entering sleep state, then used _ON call to enable the Nvidia hardware when leaving sleep state
 
* Distorted graphics on certain BIOS versions when using Intel (Optimus Enabled) graphics
 
Issue: Intel QE/CI is working correctly, however the screen randomly produces artifacts
Fix: The advised fix was/is to run BIOS version A13 or older to fix the artifacts when using Intel (Optimus Enabled) graphics, however this can also be fixed by upgrading to the 'Samsung LTN140KT07' LCD instead of the stock one (confirmed working on A14-A18 BIOS with this LCD)
 
* USB 3.0 under El Capitan
 
Issue: USB 2.0 recognized, USB 3.0 is not
Fix: Applied '_OSI to XOSI' patch to DSDT, created SSDT.aml with XOSI for 'Windows 2009', set 'USB Ownership' in Clover's 'config.plist' to 'true', then renamed EHC1/EHC2 to EH01/EH02 via Clover patches and installed RehabMan's 'USBInjectAll.kext', 'fakepciid.kext' and 'fakepciid_xhcimux.kext'
 
* Sleep (separate from Nvidia-specific issues/fixes above)
 
Issue: E6430 laptop will not sleep (black screen, instant reboot, instant wake, etc)
Fix: Cleared everything from the 'PNOT' method in DSDT to make it 'do nothing', applied RehabMan's 'Fix _WAK Arg0 v2' and 'USB3 _PRW 0x0D (instant wake)' patches to DSDT
 
* Lid Sleep, Brightness Slider and missing 'in/out screen fade' when sleeping/waking
 
Issue: Laptop will not sleep when lid is closed, nor will it wake when lid is opened, brightness slider also not visible/working
Fix: Added 'PNLF' to DSDT, applied RehabMan's 'Poll for LID changes' patch to DSDT (needed for lid sleep on Nvidia), added backlight properties to Nvidia _DSM (not needed for Intel), installed RehabMan's 'ACPIPoller.kext' (needed for lid sleep on Nvidia) and installed RehabMan's 'IntelBacklight.kext' (for proper backlight levels/control)
Side-effects: LID 'wake' does not work on Nvidia (Optimus Disabled), use power button to wake instead
 
* ALPS Touchpad/Trackstick
 
Issue: No multitouch, will not work in Sierra, etc
Fix: Used the new 'VoodooPS2Controller.kext' version from 'siddx' for Sierra DP7 (works very well with all ALPS devices)
 
* Battery Status
 
Issue: Battery status does not work/is not accurate
Fix: Edited BAT1/_STA and BAT2/_STA to return zero in DSDT, then installed RehabMan's 'ACPIBatteryManager.kext'
 
* SD Card Reader
 
Issue: SD card reader does not work

Fix: Please see updated DSDT.aml file attached in post: https://osxlatitude.com/index.php?/topic/9248-working-sleep-on-intel-hd-and-nvidia-nvs-on-dell-latitude-e6430-optimus-enabled-or-disabled/&do=findComment&comment=62735

Alternate Fix: Edited 'Info.plist' inside 'VoodooSDHC.kext' with SD card reader vendor and device ID, then installed 'VoodooSDHC.kext'
Side-effects of Alternate Fix (VoodooSDHC.kext): SD card reader seems to prevent 'wake' from working unless either 1. an sd card is inserted before wake or 2. sd card reader is disabled in BIOS.
 
* Volume Control
 
Issue: OS X volume controls do not work
Fix: Installed 'VoodooHDA-v2.8.8.zip', edited 'Info.plist' inside 'VoodooHDA.kext' and set 'VoodooHDAEnableMuteFix' and 'VoodooHDAEnableVolumeChangeFix' to 'true' then rebuilt cache

 

 

DSDT Changes:

 

- Extracted DSDT and SSDT* via Linux /sys/firmware/acpi/tables/ with Optimus enabled in BIOS (A18)
- Imported content from dumped Nvidia SSDT into DSDT
- Nvidia _DSM cleared and replaced with injection of backlight properties (injection is otherwise handled by Clover, however Clover does not inject the backlight properties needed for brightness slider under Nvidia)
- Added below code to top of _PTS method (disables Nvidia card when entering sleep):
 
        \_SB.PCI0.PEG0.VID._OFF ()
 
- Added below code to top of _WAK method (enables Nvidia card when exiting sleep):
 
        \_SB.PCI0.PEG0.VID._ON ()
 
- PNLF added (required for OS X to recognize the LCD as 'internal')
- PNOT cleared (required for sleep to function properly)
- BAT1 _STA returns zero (required for working battery status)
- BAT2 _STA returns zero (required for working battery status)
- RehabMan's 'Fix _WAK Arg0 v2' patch applied (fixes sleep wake status)
- RehabMan's 'USB3 _PRW 0x0D (instant wake)' patch applied (fixes USB properties to allow sleep)
- RehabMan's 'Poll for LID changes' patch applied (allows lid sleep with Nvidia Optimus disabled)

 

 
Clover Installer settings:

* CloverEFI 64-bits SATA (hard drive detection)
* Install RC scripts on target volume (preserves brightness, volume, etc on shutdown/reboot)

 

 

Clover 'config.plist':

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>ACPI</key>
	<dict>
		<key>DSDT</key>
		<dict>
			<key>Debug</key>
			<false/>
			<key>DropOEM_DSM</key>
			<false/>
			<key>Fixes</key>
			<dict>
				<key>AddDTGP_0001</key>
				<true/>
				<key>AddHDMI_8000000</key>
				<false/>
				<key>AddIMEI_80000</key>
				<false/>
				<key>AddMCHC_0008</key>
				<false/>
				<key>AddPNLF_1000000</key>
				<false/>
				<key>DeleteUnused_400000</key>
				<false/>
				<key>FIX_ACST_4000000</key>
				<false/>
				<key>FIX_ADP1_800000</key>
				<false/>
				<key>FIX_INTELGFX_100000</key>
				<true/>
				<key>FIX_RTC_20000</key>
				<true/>
				<key>FIX_S3D_2000000</key>
				<true/>
				<key>FakeLPC_0020</key>
				<false/>
				<key>FiX_TMR_40000</key>
				<true/>
				<key>FiX_WAK_200000</key>
				<true/>
				<key>FixAirport_4000</key>
				<false/>
				<key>FixDarwin_0002</key>
				<false/>
				<key>FixDisplay_0100</key>
				<true/>
				<key>FixFirewire_0800</key>
				<false/>
				<key>FixHDA_8000</key>
				<true/>
				<key>FixHPET_0010</key>
				<true/>
				<key>FixIDE_0200</key>
				<false/>
				<key>FixIPIC_0040</key>
				<true/>
				<key>FixLAN_2000</key>
				<true/>
				<key>FixRegions_10000000</key>
				<false/>
				<key>FixSATA_0400</key>
				<false/>
				<key>FixSBUS_0080</key>
				<false/>
				<key>FixShutdown_0004</key>
				<true/>
				<key>FixUSB_1000</key>
				<false/>
				<key>NewWay_80000000</key>
				<false/>
			</dict>
			<key>Patches</key>
			<array>
				<dict>
					<key>Comment</key>
					<string>change _OSI to XOSI</string>
					<key>Disabled</key>
					<false/>
					<key>Find</key>
					<data>
					X09TSQ==
					</data>
					<key>Replace</key>
					<data>
					WE9TSQ==
					</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>change EHC1 to EH01</string>
					<key>Disabled</key>
					<false/>
					<key>Find</key>
					<data>
					RUhDMQ==
					</data>
					<key>Replace</key>
					<data>
					RUgwMQ==
					</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>change EHC2 to EH02</string>
					<key>Disabled</key>
					<false/>
					<key>Find</key>
					<data>
					RUhDMg==
					</data>
					<key>Replace</key>
					<data>
					RUgwMg==
					</data>
				</dict>
			</array>
			<key>Name</key>
			<string>DSDT.aml</string>
			<key>ReuseFFFF</key>
			<false/>
		</dict>
		<key>HaltEnabler</key>
		<true/>
		<key>DropTables</key>
		<array>
			<dict>
				<key>Signature</key>
				<string>DMAR</string>
			</dict>
		</array>
		<key>SSDT</key>
		<dict>
			<key>DropOem</key>
			<true/>
			<key>Generate</key>
			<dict>
				<key>CStates</key>
				<false/>
				<key>PStates</key>
				<false/>
			</dict>
			<key>PluginType</key>
			<integer>1</integer>
		</dict>
	</dict>
	<key>Boot</key>
	<dict>
		<key>Arguments</key>
		<string>PCIRootUID=1 npci=0x2000 darkwake=0 dart=0 slide=0 nvda_drv=0</string>
		<key>DefaultVolume</key>
		<string>Macintosh HD</string>
		<key>Legacy</key>
		<string>PBR</string>
		<key>Log</key>
		<true/>
		<key>Secure</key>
		<false/>
		<key>Timeout</key>
		<integer>2</integer>
		<key>XMPDetection</key>
		<string>Yes</string>
	</dict>
	<key>Devices</key>
	<dict>
		<key>Audio</key>
		<dict>
			<key>Inject</key>
			<string>1</string>
		</dict>
		<key>FakeID</key>
		<dict>
			<key>ATI</key>
			<string>0x0</string>
			<key>IMEI</key>
			<string>0x0</string>
			<key>IntelGFX</key>
			<string>0x0</string>
			<key>LAN</key>
			<string>0x0</string>
			<key>NVidia</key>
			<string>0x0</string>
			<key>SATA</key>
			<string>0x0</string>
			<key>WIFI</key>
			<string>0x0</string>
			<key>XHCI</key>
			<string>0x0</string>
		</dict>
		<key>USB</key>
		<dict>
			<key>AddClockID</key>
			<false/>
			<key>FixOwnership</key>
			<true/>
			<key>Inject</key>
			<false/>
		</dict>
		<key>UseIntelHDMI</key>
		<false/>
	</dict>
	<key>DisableDrivers</key>
	<array>
		<string>Nothing</string>
	</array>
	<key>GUI</key>
	<dict>
		<key>Hide</key>
		<array>
			<string>Windows</string>
			<string>\EFI\BOOT\BOOTX64.EFI</string>
		</array>
		<key>Language</key>
		<string>en:0</string>
		<key>Mouse</key>
		<dict>
			<key>Enabled</key>
			<true/>
			<key>Speed</key>
			<integer>8</integer>
		</dict>
		<key>Scan</key>
		<dict>
			<key>Entries</key>
			<true/>
			<key>Legacy</key>
			<string>First</string>
			<key>Tool</key>
			<true/>
		</dict>
		<key>ScreenResolution</key>
		<string>1600x900</string>
		<key>Theme</key>
		<string></string>
	</dict>
	<key>Graphics</key>
	<dict>
		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<true/>
			<key>Intel</key>
			<true/>
			<key>NVidia</key>
			<true/>
		</dict>
		<key>ig-platform-id</key>
		<string>0x01660004</string>
	</dict>
	<key>KernelAndKextPatches</key>
	<dict>
		<key>AppleRTC</key>
		<true/>
		<key>AsusAICPUPM</key>
		<true/>
		<key>ForceKextsToLoad</key>
		<array>
			<string>\System\Library\Extensions\IO80211Family.kext</string>
		</array>
		<key>KernelCpu</key>
		<false/>
		<key>KernelHaswellE</key>
		<false/>
		<key>KernelLapic</key>
		<false/>
		<key>KernelPm</key>
		<true/>
		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Comment</key>
				<string>Intel HD Boot Graphics Glitch Patch</string>
				<key>Disabled</key>
				<false/>
				<key>Find</key>
				<data>
				AQAAdRc=
				</data>
				<key>Name</key>
				<string>IOGraphicsFamily</string>
				<key>Replace</key>
				<data>
				AQAA6xc=
				</data>
			</dict>
                        <dict>
                                <key>Comment</key>
                                <string>External Icons Patch</string>
                                <key>Disabled</key>
                                <false/>
                                <key>Find</key>
                                <data>
                                RXh0ZXJuYWw=
                                </data>
                                <key>Name</key>
                                <string>AppleAHCIPort</string>
                                <key>Replace</key>
                                <data>
                                SW50ZXJuYWw=
                                </data>
                        </dict>
			<dict>
				<key>Comment</key>
				<string>XHCI 15 Port Limit to 26 Port Limit Patch</string>
				<key>Disabled</key>
				<false/>
				<key>Find</key>
				<data>
				g72M/v//EA==
				</data>
				<key>Name</key>
				<string>AppleUSBXHCIPCI</string>
				<key>Replace</key>
				<data>
				g72M/v//Gw==
				</data>
			</dict>
		</array>
	</dict>
	<key>RtVariables</key>
	<dict>
		<key>BooterConfig</key>
		<string>0x28</string>
		<key>CsrActiveConfig</key>
		<string>0x67</string>
	</dict>
	<key>SMBIOS</key>
	<dict>
		<key>Board-ID</key>
		<string>Mac-4B7AC7E43945597E</string>
		<key>ProductName</key>
		<string>MacBookPro9,2</string>
		<key>Trust</key>
		<false/>
	</dict>
	<key>SystemParameters</key>
	<dict>
		<key>InjectKexts</key>
		<string>Detect</string>
		<key>InjectSystemID</key>
		<true/>
	</dict>
</dict>
</plist>

 

 

 

XOSI SSDT (Windows 2009) based on RehabMan's XOSI-SSDT.dsl

 

 

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)))
    }
}

 

 

 

EFI drivers added to Clover's 'drivers64' and 'drivers64UEFI' directories:

EmuVariableUefi-64.efi

 

 

Kext files added to Clover's 'kexts/Other/' directory:

 

ACPIPoller.kext (RehabMan)
FakePCIID_XHCIMux.kext (RehabMan)
FakePCIID.kext (RehabMan)
FakeSMC.kext (netkas)
IntelBacklight.kext (RehabMan)
USBInjectAll.kext (RehabMan)
VoodooPS2Controller.kext (siddx)

 

 

Kext files added to '/Library/Extensions/' or '/System/Library/Extensions/'

ACPIBatteryManager.kext (RehabMan)
AppleIntelE1000e.kext (InsanelyMac)
VoodooSDHC.kext (Voodoo - Optional)

 

E6430 HD and NVS working sleep.zip

  • Like 2
Link to comment
Share on other sites

  • Administrators

Looking good, thanks.
 
Please note that you should not use the VoodooSDHC kext as that's unnecessary and highly likely to cause wake issues. Instead, patch your DSDT to inject compatibility with Apple's default SD card reader. Details of the patch are available here and in original thread from Joe82. The patch works perfectly on all E6x20/6x30/6x40 models.

 

Have you found ACPIPoller to be necessary? I've not needed it on my E6230...

 

HDMI output and HDMI audio are also achievable through a combination of DSDT patches + Capri FB patches and AppleHDA patches.

  • Like 2
Link to comment
Share on other sites

Looking good, thanks.

 

Please note that you should not use the VoodooSDHC kext as that's unnecessary and highly likely to cause wake issues. Instead, patch your DSDT to inject compatibility with Apple's default SD card reader. Details of the patch are available here and in original thread from Joe82. The patch works perfectly on all E6x20/6x30/6x40 models.

 

Ah! I thought I recalled reading about that, I will implement it immediately and update the package after testing. Thanks! :)

 

Have you found ACPIPoller to be necessary? I've not needed it on my E6230...

 

It's only necessary while using 'Nvidia-only' mode (Optimus Disabled), it seems like the lid only functions correctly using 'Intel/Nvidia' mode (Optimus Enabled).

 

The normal 'LID' code seems to be built around the Intel code in DSDT, so without LIDP patch/ACPIPoller.kext the lid doesn't respond when closed using 'Nvidia-only' (Optimus Disabled). :(

 

HDMI output and HDMI audio are also achievable through a combination of DSDT patches + Capri FB patches and AppleHDA patches.

 

I'm somewhat of a minimalist when it comes to patches, I try not to patch the DSDT for preference of one graphics card's functions over the other (audio or video) to avoid potential conflicts when switching between them, so 'VoodooHDA' tends to be pretty good for me (although I admit most people prefer AppleHDA patches over VoodooHDA).

 

I am able to get HDMI video and audio output under both modes (Intel/Nvidia and Nvidia-only), as it seems the Nvidia card is used in both cases for HDMI.

Link to comment
Share on other sites

Please note that you should not use the VoodooSDHC kext as that's unnecessary and highly likely to cause wake issues. Instead, patch your DSDT to inject compatibility with Apple's default SD card reader. Details of the patch are available here and in original thread from Joe82. The patch works perfectly on all E6x20/6x30/6x40 models.

 

I applied the DSDT patch and it worked great, thanks! SD card reader seems to work fine with injected properties into RP06. :)

 

Sleep is working now with or without SD card inserted, I am attaching an updated DSDT to this post for use instead of installing 'VoodooSDHC.kext'.

 

Bump for A18 BIOS, I've got my setup using it as well without issues, however I wasn't aware that Samsung LTN140KT07 was a requirement. I do have the 1400x900 display, but unsure of the specific Samsung panel.

 

I'm not sure what causes the issue with the garbage on Intel, but my guess is either EDID or LVDS link cable... my personal E6430 originally had the 1366x768 LCD with a single-link LVDS cable and I had to run a BIOS lower than A13 to fix the garbage.

 

However, after upgrading to the Samsung 1600x900 panel and the dual-link cable I no longer encountered the garbage when using Intel, regardless of my BIOS version... it would be interesting to know which brand/model LCD you have on yours to be sure. :)

DSDT_sd_card_injected.zip

Link to comment
Share on other sites

Hi FrostyTheSnowman,

 

Great job on this topic!

 

I'm trying to activate the Nvidia 5200M in order to use an external monitor through a docking station using the Display Port connector. I already have this working on Yosemite and I'm trying to enable on El Capitan. Have plans to install Sierra, but not now due to software compatibilities. 

 

I'm facing some issues during the compilation of the DSDT and I'm not sure if I'm doing something wrong.

 

I can understand most of the topics about Hackintosh, but DSDT/SSDT is something very unclear to me. I read lot's of posts related, but the problem is with me and I can't understand clearly.

 

I'm getting a compilation error below because (I suspect) I didn't imported the Nvidia SSDT-7.dsl into DSDT.dsl. In fact, I don't know how to do it. Just merge the files? Is there any specific place in DSDT.dsl to insert the SSDT-7.dsl content? Should I copy part or full SSDT-7 content?

 

DSDT.dsl   6839:     \_SB.PCI0.PEG0.VID._OFF()

Error    6084 -     Object does not exist ^  (\_SB.PCI0.PEG0.VID._OFF)

 

DSDT.dsl   6898:     \_SB.PCI0.PEG0.VID._ON ()

Error    6084 -    Object does not exist ^  (\_SB.PCI0.PEG0.VID._ON)

 
I'm using the RehabMan iasl command with ACPI 6.1 in the terminal to compile.
 
Another doubt that I have is about the _OSI to XOSI. I could insert in the Clover DSDT patch, but I didn't understand how to apply into DSDT. Is just a matter of renaming _OSI to XOSI inside DSDT?
 
This USB3 step is a little bit confusing for me.
 
Another part that I'm in doubt is the "added backlight properties to Nvidia _DSM (not needed for Intel)". And in the other part you mention "- Nvidia _DSM cleared and replaced with injection of backlight properties". Should I remove the _DSM methods via '[syn] Remove _DSM methods' or only remove the method content? Where is the content backlight properties?
 
One thing that I'm curious, you mentioned to extract DSDT with Optimus activated. But I will use it deactivated to use the Nvidia card, is not a problem? Shouldn't extract the DSDT with Optimus unmarked on BIOS?
 
I'm sorry to have all these questions, but I'm failing to enable the Nvidia card.
 
Best regards,
Pablo Iglesias
Link to comment
Share on other sites

  • Administrators

You're getting compilation error for the _OFF and _ON methods you've added because they're not declared in the DSDT but in one of the SSDTs. As such, you must declare these functions as External functions at the very top of your DSDT; you'll see similar code lines for other functions. Just copy/paste existing external declarations and adjust to _OFF/_ON functions.
 
Should be something like:

External (_SB.PCI0.PEG0.VID._OFF, MethodObj)
External (_SB.PCI0.PEG0.VID._ON, MethodObj)

You'll find guidance and samples on this matter here.

Link to comment
Share on other sites

  • Moderators

Pablo, 

 

If you have a working system with Yosemite, you could reuse the same boot pack. Just need to change a couple of things in the Config file.

You need to disable SIP and change Smbios to MBA 6.2.

 

Launch Config.plist file with Clover Configurator, under RT variables tab, enter the following

BooterConfig = 0x28

CsrActiveConfig = 0x67

 

Then under SmBIOS, click on the magic wand and select MacBookAir 6,2.

See here.

Link to comment
Share on other sites

Pablo,

 

Yes, the content from the external Nvidia SSDT was copied into the DSDT to allow me to call the _ON and _OFF methods.

 

I dumped the DSDT/SSDT tables with Optimus enabled to ensure my DSDT had code for both video cards being active, this way it will also work with one card disabled (Optimus disabled in BIOS), as I was having issues with DSDT/SSDT dumps done with Optimus disabled.

 

As Herve was saying above, you can certainly use the 'External' reference to call the _OFF and _ON methods (easiest way) -or- you can copy the code from the Nvidia SSDT into the DSDT, either way works fine. I decided to copy the SSDT code into the DSDT to help keep the DSDT working with future BIOS versions.

 

Here's a quick rundown of the requirements to get Nvidia working on E6430 (and others) under El Capitan/Sierra:

 

  • Optimus Enabled or Disabled in BIOS (either way)
  • Nvidia injection set to 'true' in Clover 'config.plist' to enable Nvidia card in OS X
  • Specified 'ProductName' of 'MacBookPro9,2' and 'Board-ID' of 'Mac-4B7AC7E43945597E' in SMBIOS section in Clover 'config.plist' to get past the black screen issue
  • Added _OFF call to top of _PTS method to disable the Nvidia hardware before entering sleep state, then added _ON call to top of _WAK method to enable the Nvidia hardware when leaving sleep state to fix Nvidia sleep freeze
  • Added 'PNLF' method to DSDT to force LCD screen to identify as built-in, this is needed by OS X to enable sleeping with lid
  • Added RehabMan's 'Poll for LID changes' patch to DSDT and installed RehabMan's 'ACPIPoller.kext' to fix lid sleep on Nvidia
  • Cleared the _DSM method (removed all code inside the _DSM method, original code was used for switching video cards in Windows which won't work on Mac) in the Nvidia SSDT and replaced it with backlight code for Nvidia to fix brightness slider in OS X

 

Here's a quick rundown of the requirements to get USB 3.0 working on E6430 (and others) under El Capitan/Sierra:

 

  • Renamed _OSI to XOSI via Clover patch (this could also be done manually inside the DSDT instead) then created SSDT (or you could also copy this code into DSDT if you wanted to) with XOSI method set for 'Windows 2009' to force the BIOS to enable USB 3.0
  • Set 'USB Ownership' in Clover's 'config.plist' to 'true' to fix USB ownership (required or OS X will freeze on bootup)
  • Renamed EHC1 to EH01 and EHC2 to EH02 via Clover patches (this could also be done manually inside the DSDT instead) to prevent OS X from loading the default USB 3.0 drivers/injection (default driver/injection causes side-effects, RehabMan's 'USBInjectAll.kext' is used instead)
  • Installed RehabMan's 'USBInjectAll.kext', 'fakepciid.kext' and 'fakepciid_xhcimux.kext' to inject USB 3.0 port and routing information to enable USB 3.0 in OS X
  • Applied RehabMan's 'USB3 _PRW 0x0D (instant wake)' patch to DSDT to fix USB properties to allow sleep

 

Let me know if you have any other questions, i'm happy to help. :)

Link to comment
Share on other sites

Hi Hervé, Jake, FrostyTheSnowman,

 

I really appreciate your very quick response, clarifying my doubts.

 

Hervé, will try the approach of declaring an external method, as it's the easiest. But at the same time, I agree with copying SSDT content inside to DSDT so it will be compatible with future version of BIOS. As my display is 1366x768, I'm not planning to update my BIOS, keeping with the first option.

 

Jake, I got the bootpack you referenced and it worked perfectly. Thanks! I did all the changes in the config.plist and it's booting perfectly with external monitor and much better performance! It seems that the sleep is not working, then I disabled for a while.

 

About the SMBIOS MBA 6.2, this is a Haswell cpu and e6430 has an Ivy Bridge. Does it matter when creating the SSDT.aml via ssdtPRGen.sh script?

 

FrostyTheSnowman, I really appreciate your kindness on helping me. May I ask you (and the others too) few more questions?

 

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?

 

2. I was looking around, but I could not find the 'backlight code for Nvidia' to replace the content of the _DSM method in the SSDT-7.dsl. Could you help me to find it? I will continue reading related posts. 

 

3. I could find the _DSM method in SSDT-7.dsl and inside the DSDT.dsl. Should I clean only in the SSDT-7.dsl file, or both including DSDL.dsl.

 

4. About the _OSI to XOSI, I did inside the config.plist via Clover patch. If I create the SSDT with XOSI method to set 'Windows 2009', should I saved in /EFI/CLOVER/ACPI/patched? Which name should I use SSDT-n.aml (where n is a number from 0 to 9)? Does it matter to use any that doesn't exist?

 

Thank you all for the help!

 

Best regards,

Pablo Iglesias

Link to comment
Share on other sites

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