Jump to content

Mojave on Dell Latitude E6410 With Working Sleep


188 posts in this topic

Recommended Posts

*** 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. ***

 

About the broken links: An InsanelyMac website update has broken intra-site links.  If you click on a link and observe a '404 Not Found' error, replace 'www.insanelymac.com/topic' in the link with 'www.insanelymac.com/forum/topic' (add /forum to the link). 

 

*** 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

Spoiler

Screen Shot 2019-06-08 at 10.19.59 AM.png

 

Screen Shot 2019-06-08 at 12.11.23 PM.png

 

 

 

 

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

Edited by tonyx86
Added a note about broken links; fixed broken links in this first post

EDIT: I found the suggestion mentioned by @duduclx here but it does not resolve the sleep problem for me.  The suggested solution was to apply Rehabman's PRW 0x0D patch.  This patch did not change the behavior of my laptop and did not resolve the sleep problem.  Still looking for a sleep solution.

Edited by tonyx86

Changed audio solution to VoodooHDA (from AppleALC) to resolve slow boot issue.  Updated Post #1 to reflect change.  Only remaining issue is Sleep.  Mojave 10.14.5 is OUTSTANDING on this laptop.  Will be PERFECT when sleep is resolved.

@hackintoshmalang my EFI is shared as an attachment to the first post in this thread.  Battery life is OUTSTANDING.  With Mac Model set to MacBookPro 6,2 and LPCB._DSM.Name set to "3b09," power management works great with no CLOVER configs.  CLOVER Enable C and Enable P states actually screws up speedstep. Note my clover config.plist attached to post 1 (in the Zip file).  No CPU configs necessary.

 

Have you solved sleep?

Edited by tonyx86

@hackintoshmalang I noticed that AGPM (AppleGraphicsPowerManagement) was not loading for my GPU.  Closer inspection of the IORegistry shows that the Nvidia 3100m GPU has a device ID of 0x0a6c which does not have an entry in AppleGraphicsPowerManagement.kext for MacPro 6,2.  Injecting device-id of 0x0a29 (a device that does exist in the AGPM.kext/config.plist) causes AGPM to load.  The other device to try is 0x0a34 (it is the only other device listed in AGPM.kext for MacBookPro 6,2.  Do you know enough to experiment with DSDT injection of these device IDs?  If so, experiment with them to see if they help increase your battery life. 

 

I also renamed ECDV to EC in my DSDT to cause AppleBusPowerController to load (wasn't loading before).  Based on what I've observed of other patched DSDTs for the E6410, a lot is missing.  All the patched DSDTs that I've found for the E6410 include only applications of the basic, well-known patches (except for @duduclx 's very clever shutdown fix which I'd love to know how he figured that out).  I've only started looking at the E6410 a couple of days ago and I'm out of time for now, but will continue experimenting.  Please post your findings here.

 

EDIT: A benefit of manually patching the DSDT for Nvidia Graphics is that the Display Brightness slider now appears in the Display Preferences (see attached screenshot).  The slider doesn't work, so I have some homework to do.  Still controlling brightness with the keyboard.  I have the display brightness slider working on my Thinkpad T61 running Mojave 10.14.5, so I'm looking at my Thinkpad to see if I can figure out why the Latitude E6410 slider is visible but sliding it does not change brightness.

 

Screen Shot 2019-06-11 at 3.19.42 PM.png

Edited by tonyx86
Added comment about shutdown fix
On 6/11/2019 at 12:34 AM, hackintoshmalang said:

@tonyx86...hi how is about battery consumption ? and core frequency GPU ...my dell 6410 nvidia stuck at 405 mhz gpu frequency, cause my battery drain out prety fast...do you mind share your EFI ?, thanks

@hackintoshmalang I've been working on my E6410 for 3:20 and just realized my laptop is unplugged.  Battery indicator shows 23% remaining. Over 3 hours on battery from 2010 - not bad.

 

@hackintoshmalang I'm running again without the A/C adapter to get a better feel for battery life.  It appears that these items made the difference:

  • Inject device-id 0x3b09 for LPCB (in concert with selecting Mac Model MacBookPro 6,2)
  • Do not add any CLOVER CPU configs (e.g. don't enable Generate P and Generate C states)
  • ECDV -> EC rename (to get AppleBusPowerController to load)
  • injecting the device-id for Nvidia graphics (0x0a29) (to get AGPM to load)
  • Follow performance management tips I provided in Post #1 of this thread

 

My laptop fan hardly runs and battery life is outstanding.

Edited by tonyx86
Changed Nvidia graphics device-id to 0a29

My E6410 is similar in build to yours. Mine is: Dell Latitude E6410 (i5-520m, NVS 3100M, 8GB DDR3 -- Dual 4GB Sticks, 1x OCZ-Vertex 120GB SSD -- MacOS & 1x Corsair Force GT 120GB SSD -- Windows 10 1903/Ubuntu Desktop 18.04, 1440x900 display, BIOS: A17, Wi-Fi: Broadcom  BCM4322 -- Dell Wireless 1510, Bluetooth: BCM92046DG-CL1ROM -- Broadcom 2046 -- Targus). Any suggestions as to things I would have to change (Kexts/Settings/Etc) from your install guide of Mojave to make it work?

 

Thanks for your help in keeping this awesome little laptop current!

Our systems look almost identical, except for Wi-Fi and CPU.  The CPU shouldn't make a difference.  I can't be certain that your BIOS settings are the same, so I'd strongly recommend that you extract your own ACPI files (CLOVER-F4) and patch according to @duduclx 's guide and then my changes (LPCB._DSM, ECDV rename) and inject device-id "0a29" for the Nvidia 3100m so that AppleGraphicsPowerManagement loads.  You might want to google solutions for your BCM4322 wi-fi.  It's possible that Lilu and AirportBrcmFixup 2.0.0 will work for you, too.  Use my CLOVER config.plist.  Keep me posted and definitely let me know if you get sleep to work. I'm getting ready to post an updated set of config files, so get started on yours and then we can compare notes.

Ok. Will be grateful to attempt MacOS Mojave install on my E6410. (Also) To accommodate for testing/(fixing) sleep issues, I have a spare HDD to put in place of the SSD. [For sake of testing will also replace modular bay with optical drive -- thus dealing with only 1 storage drive and 1 optical drive]. My WiFi card was previously an almost vanilla card, so if it works great -- if not can replace to match yours (assuming it will work on Ubuntu when finished playing with Mojave install).

 

However for the remainder of this endeavor please treat me as a noob (my apologies). While I have been building computers since '97 and am extremely proficient within Windows, decently proficient within Linux, I am a beginner to "advanced" Hackintosh. I've used Apple OS nearly all my life, however most "Hackintosh" I've built have been nearly vanilla or using a simple fix method like the beast (which cannot apply here).

 

That said, what steps did you take differently from steps #1-#9 of the aforementioned El Capitan guide? (I've never done ACPI extraction before -- I assume this guide "Patching LAPTOP DSDT/SSDTs" is still a good resource?)

 

Any (& all) guidance you would be willing to lend would be appreciated! I look forward to getting the E6410 on Mojave (and with sleep/hibernate working as should be on a HDD -- sorry, still unsure of doing it on a SSD), and eventually end up with a very solid triple-boot system with all the latest OS' installed and flawlessly working.

Also a bit of research into sleep/hibernate on a SSD led me to this: http://bit.ly/2WHOmjm

(I was using Win 7 -- prior to final release; with a first gen Kingston 30GB SSD. While this SSD has come back to life, I've never ventured into sleep/hibernate with a SSD again)

So once we can figure out the install (with a simplified installation guide for Mojave) on similar hardware E6410s and find/fix the sleep/hibernate issue, I will be more than happy to attempt replication of said on a fresh install to a SSD rather than a HDD.

 

And to be clear as crystal -- you are booting clover from UEFI not legacy right? (As current, my El Capitan is booting from Clover only in legacy; everything else is an EFI boot -- even within clover).

I'm booting CLOVER Legacy.  I have updated Post #1 to include CLOVER (Legacy) as part of my system configuration and I have added new EFI files with updated DSDT.aml (includes HDAU device).

 

Follow duduclx's original guide referenced in post #1 (great instructions!) and then apply my changes here to create your own EFI.

 

EDIT: @MadHatter806 If you're new, I'd suggest installing High Sierra first, since it still supports MacBookPro 6,2 without any Mojave patches.  After you get your system working with High Sierra, then we can talk about Mojave.

This thread was not intended to be an installation guide.  I have a long way to go to match the outstanding instructions presented by duduclx in his original guide for install El Capitan on the E6410.  While most of my comments will remain most suitable for intermediate to advanced hackintoshers (not claiming any expertise of my own), I have added basic installation steps to post #1 of this thread.

On 6/11/2019 at 12:34 AM, hackintoshmalang said:

@tonyx86...hi how is about battery consumption ? and core frequency GPU ...my dell 6410 nvidia stuck at 405 mhz gpu frequency, cause my battery drain out prety fast...do you mind share your EFI ?, thanks

 

@hackintoshmalang I'm not ignoring your "stuck at 405 mhz" comment - it just hasn't been a priority for me.  My method of injecting the device-id for Nvidia gets AGPM loaded, but it's probably not the correct solution.  I re-read duduclx original El Capitan thread and saw some work on this.  See here for this analysis.  I haven't tried any of it yet.

Edited by tonyx86

EDIT3: I researched the hackintosh history of the E6410 / E6510 and found that actual credit for the revised NVCAP belongs here.

EDIT2: updated Clover.zip with new NVCAP is now attached to Post #1.

 

EDIT: It turns out that I only needed NVCAP.  It appears that I had the wrong NVCAP in my Nvidia config.  Once I changed my NVCAP to match the one specified by plutdelic, my second display started working.  I was using the NVCAP that was automatically injected by CLOVER R4961, so it looks like CLOVER was injecting the wrong NVCAP for the 3100m in the Latitude E6410.

 

Originally posted before EDIT above:

I needed a second display on my E6410 and found that external VGA wasn't working.  Take a look at this.  I copied his config.plist configuration exactly into my config.plist and my external VGA is now working.  I have more work/experimentation to do in order to see exactly what change(s) is/are required, but for now, just copying plutodelic's config works.

Edited by tonyx86
Changed credit for NVCAP

EDIT: This thread references the shutdown fix for E6410/E6510.

 

EDIT: I found this guide for Yosemite that includes the _PTS shutdown patch in the patched DSDT.  Still no indication of how this patch was determined.

 

FYI - I'm starting to track down the sleep issue.  The _PTS patch (for shutdown) is incomplete for sleep in High Sierra and Mojave (not sure about previous MacOS versions).  If anyone know's how he arrived at his _PTS patch, I might be able to determine the necessary changes to get working sleep.  A clue for others who want to help find the sleep solution is that the following modification to his shutdown patch (removing the conditional if/else) enables sleep, but the laptop then wakes immediately with a black screen.  I'm fairly certain that the black screen is because we need to modify _WAK as well.  I've applied Rehabman's PRW 0x0D patch (I think I applied it correctly if someone wants to check the DSDT I attached to Post #1) which was supposed to address the immediate wake from sleep, so I'm not sure why it wakes immediately.

 

    Method (_PTS, 1, NotSerialized) 
    {
            Store (Zero, SLPE)
            Sleep (0x10)
    }
Edited by tonyx86
Changed history of shutdown fix

I traced the _PTS shutdown fix back to the beginning of Hackintosh time here.  The patch was only ever intended to resolve shutdown (to be conditional on LEqual (Arg0, 0x05)), where Arg0 to _PTS is the sleep state.  SLPE (short for SLP_EN) appears to be a register for enabling a sleep state.  There is another register, SLP_TYPx, that defines the sleep state to assume after SLP_EN is enabled.  Somehow, SLP_TYPx must be set to 0x05 (shutdown) prior to calling _PTS.  I wonder if SLP_TYPx needs to be set to 0x03 for suspend?

 

The same _PTS shutdown patch is required for the Thinkpad T61 for those who are curious (although SLPE is at a different location on the Thinkpad T61 (NVS 140m): OperationRegion (PMRS, SystemIO, 0x1030, One) ).  Looks like sleep on the Latitude E6410 is going to be a challenge.

 

EDIT: For the interested reader, here's more about SLPE and shutdown / sleep.

Edited by tonyx86
Added link with more info...

I noticed that AAPL,clock-id and device_type are absent from the IORegistry for EHC1 (EH01).  I don't see anything wrong with my DSDT rename/_DSM for EH01 (in DSDT.aml) and USB ports work correctly, but I'd like to eliminate any potential USB issues in order to resolve this sleep problem.  The only fix I found (thanks to @feartech) was to use CLOVER on-the-fly rename/fix for USB.  I have changed this on my system and tested it.  Unfortunately it does not resolve the sleep problem (no change in sleep behavior).  I haven't updated the attached files in Post #1 to reflect this change.

Alps trackpad performance is lousy with the "standard" VoodooPS2Controller.kext (a known issue).  Switching to the "Refined ALPS Touchpad driver" is a big improvement.  I made the switch, but haven't updated the attached files in Post #1 to reflect this change.

 

EDIT: The "Refined VoodooPS2Controller.kext" switches keys on the keyboard.  Annoying.

 

EDIT2: Key remapping in "System Preferences > Keyboard > Modifier Keys" may do the trick.  Switch the Option and Command keys.  See attached screenshot and reply with your own suggestions.

Screen Shot 2019-06-15 at 5.17.31 PM.png

Edited by tonyx86
Having trouble attaching the screenshot

I found that switching the Command and Option keys wasn't the only fix required to compensate for the Refined Alps Touchpad driver (VoodooPS2Controller.kext).  I needed to change the keyboard type to ISO European (instead of ANSI) to fix the [ ` ~ ] key to the left of the "1" (one).  With these two changes (switch modifier keys and change keyboard type to ISO European, it appears that the Latitude E6410 keyboard is back to normal after taking advantage of the improved ALPS Touchpad performance with the new VoodooPS2Controller.kext.

Also been looking at this and wanted to share some observations/tool ideas
I found that you can follow along with sleep in the system logging if you first generate a system log like this:
log show --last 1h --debug > /tmp/boot2.log

then search for:

ScreenOn changed: on -> off

Regarding the _WAK function,  I did notice that it seems to be calling a series of EV methods.  I wonder if we switched what EV function it was calling into, if we could see more success.  
Further I noticed that if search for the Sleep() command elsewhere in my DSDT, it seems it can also be called with the parameter 

Sleep (0x01F4)

 

Haven't had any success yet but wanted to share my results before I lost track of them

 

It's great to have some else on the E6410/Mojave team!  From what I've gathered about Sleep(), the parameter is the sleep duration (which I imagine means that the higher the number, the longer the sleep.  The Sleep() command in DSDT.aml is not the laptop sleep, but is a time to wait before execution continues.  If someone knows differently, please chime in.

 

EDIT: Also, take a look a this. @itsworking has edited his DSDT to log events as they are executed in the DSDT.  Looks tedious, but may be an option.  Note that my display name is "deeveedee" in this other forum.  You'll see my question that I asked - not sure who's still following that other thread.

Do you know how I would check what the permissible values to SLPE would be?

 

I also wanted to ask if you were able to get speedstepping going on Nvidia 3100m?  I can’t help but wonder if there is a relation between sleep and GPU power management and it would be good to rule that out

×
×
  • Create New...