Jump to content

Mojave on Dell Latitude E6410 With Working Sleep


deeveedee
 Share

188 posts in this topic

Recommended Posts

I was looking for more informations about Latitude machines on OSX Latitude forum and feels like nobody was able to make sleep works :worried_anim:. Someone (like Madl0n) says it is an old Dell issue... Some topics says it have some correlation with discrete video cards and nVidia drivers.

I didnt spend much time reading about.

Theres a chance to make it works or it is almost impossible?

Link to comment
Share on other sites

EDIT: I have a working sleep solution (Suspend State S3) later in this thread.  Keeping this post for info.

 

@vbmota Try  "sudo pmset -a hibernatemode 25" and let me know what you find.   You may need to delete /var/vm/sleepimage if you've modified it or changed its permissions, so that a new sleepimage can be created.  Reboot after you make the change and then test sleep.

 

When I first started installing macOS on the Latitude E6410 in June 2019, I was convinced that the sleep problem was due to discrete graphics.  Other Latitude models released soon after the E6410 have sleep fixed by turning the discrete graphics off in _PTS and turning the discrete graphics on in _WAK.  I then tried a different approach and experimented with slight revisions to _PTS and EJD (just search for these in the DSDT), but without success.  After finding the bug in Method GNOT, I now just think that Dell didn't really care much about a complete ACPI implementation (and they probably didn't need to).  Sleep may very well be "fixed" in the NVidia drivers for Windows.  If you research sleep issues with the Latitude E6410, Windows users had sleep issues, too.

 

If changing sleep to hibernate works (hibernatemode 25), I may just call it good enough.

Edited by tonyx86
Link to comment
Share on other sites

For those who now have everything working (except sleep) and want to work on the sleep problem, this thread solves sleep for the Latitude E6430: https://osxlatitude.com/forums/topic/9248-working-sleep-on-intel-hd-and-nvidia-nvs-on-dell-latitude-e6430-optimus-enabled-or-disabled/?_fromLogin=1

 

The solution for the E6430 is to call _OFF() in _PTS() and to call _ON() in _WAK() to turn the discrete NVidia graphics Off and On respectively.  

 

Note that the Latitude E6430 DSDT contains the same GNOT bug that I found in the E6410 DSDT.

Link to comment
Share on other sites

@Hervé Thank you very much for providing this info!  It's good to be able to eliminate this option as a variable and seems to make sleep on the E6410 even more elusive.

 

EDIT: @Hervé Just to complete this thought and provide others with background, this is the thread that lead me to believe that NVidia graphics was the sleep culprit on the E6410.  Look at @amirstep's comment on May 22, 2011.

 

EDIT 2: There are multiple comments by amirstep on May 22, 2011.  I've copied and pasted amirstep's comments here for clarity:

 

Great. I'm glad it is also applicable to the E6410. The sleep issue maybe a bit more challenging. Here are my observations so far:

 

1) When I installed Windows 7 on this E6510, the sleep function is grayed out. The computer would not allow me to sleep until I installed the Nvidia 3100 driver. Once the driver was installed, sleep worked well.

 

2) Looking at DSDT of the E6510, under PCI0.VID (which is for intel HD graphics), there are a bunch of sleep function methods that are not under PCI0.AGP.VID (which is for Nvidia 3100). I think this is why fmac has sleep working natively with minimal edits.

 

3) Looking at DSDT posted by avjos for E6400 in InsanelyMac forum, the sleep functionality methods are all shared (outside of the AGP.VID and VID) devices. He has sleep working with apparent minimal DSDT mods (although original DSDT is not posted) with Nvidia 160 card

 

4) All of this makes me think that the sleep functionality is somehow modulated by the nvidia drivers BUT some degree of functionality should be possible if some of the code under PCI0.VID is used under PCI0.AGP.VID. Actually doing this is no small task - but I'm slowly hacking away at it.

Edited by tonyx86
  • Like 1
Link to comment
Share on other sites

EDIT2: After applying the 10.14.6 supplemental update, I needed to run "sudo kextcache -i /" in order to restore GPU temp and core frequency to HWMonitor.

 

Also, I made a minor tweak to my DSDT to change GFX0.hda-gfx from "onboard-1" to "onboard-2" (to match a real MBP6,2).  No difference in behavior following this change.  My current DSDT is attached to this post.

DSDT.zip

Edited by tonyx86
Link to comment
Share on other sites

@Hervé I re-read the thread that I linked above and found this quote in Post #1 of the thread: 

 

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

 

Am I misreading this, or does the post clearly state that the laptop does not sleep unless _OFF() is called in _PTS and _ON() is called in _WAK?

 

If I am reading this correctly, this quote (combined with my previous post showing amirstep's conclusion that NVidia is the sleep problem) leads me to believe that an NVidia _OFF() / _ON() solution is still in play for the E6410.

 

Do you agree, or is there a reason you still feel that _OFF() and _ON() "does not, in any way, "fix sleep" as you stated?

Link to comment
Share on other sites

On 8/13/2019 at 9:37 AM, Malu said:

Now Mojave works great from SSD(860 EVO) in HDD bay. Windows 10 crashed during boot from SSD installed in modular bay, so the issue is not related to Clover/Mojave.

 

There are checkboxes in bios boot settings. Even if boot priority list only shows the attached devices, make sure you deselect DVD if you have installed a HDD/SSD in the modular bay. Windows booted successfully after I did that. Mojave may also work from modular bay with this setting.

 

@Malu I was checking my BIOS settings and noticed that I have both "Boot from CD/DVD" and "Boot from modular bay HDD" checked.  I'm posting this just in case others are experiencing any problems with dual-booting from the internal and modular drives.  I'm not sure why the required BIOS settings would be different between different Latitude E6410s (maybe something to do with differences between models of the 2nd drive caddy in the modular bay), but if anyone is experiencing problems with booting Windows from the modular bay HDD and MacOS from the internal HDD, it appears that you may need to experiment with the "Boot from CD/DVD" checkbox in BIOS.  Note that I'm running BIOS A17, I have "Boot from CD/DVD" checked in BIOS and my system dual-boots Windows and MacOS without any problems.  Note also that Windows 10 Pro runs great on the E6410.

Link to comment
Share on other sites

Good news!!! I copied the _OFF() and _ON() methods from a Latitude E6430 DSDT to the E6410 DSDT and sleep is partially working.  With these mods (see attached E6410 DSDT), the Latitude E6410 sleeps with a flashing power LED.  I can only wake the E6410 by pressing the power button and it wakes to a dark screen.

 

The two files attached are my modified DSDT for the E6410 and the E6430 DSDT from which I copied the _OFF() / _ON() methods and their supporting methods / memory-mapped registers.

 

I welcome help from others to finish this sleep/wake solution which has been so elusive for almost 10 years.

 

EDIT: With the attached DSDT_E6410, my Latitude E6410 sleeps when on battery or A/C power (which is a big improvement over my other attempts that slept only on A/C power). I think this is on the right track.  Hopefully we can get _WAK working.

 

DSDT_E6430.zip

DSDT_E6410.zip

Edited by tonyx86
  • Thanks 1
Link to comment
Share on other sites

I had to prove to myself that the GFX0._OFF() method was the only required addition to enable sleep on the E6410.  Attached is my E6410 DSDT with minimal edits to Methods _PTS() and _WAK() (adding only _ON and OFF methods and their required supporting methods / memory-mapped registers).  With this attached DSDT, the E6410 sleeps with flashing power LED, but it still wakes to dark screen (wake by pressing power button).  I'm posting this DSDT just in case someone wants to start with minimal DSDT edits in an attempt to get wake working.

 

I suspect that there are more edits required of both methods _PTS and _WAK for this solution.  There may also be CLOVER configuration changes required.  I'm not familiar with the CLOVER Darkwake boot arguments, but those may be in play here as well.

DSDT.zip

Link to comment
Share on other sites

The attached DSDT sleeps and wakes.  I haven't needed to make any changes to CLOVER config.plist.  I played with a few things, but the key seems to have been to move GFX0._ON to the end of the _WAK method.

 

This should be good enough for people to test.  Looks like we may have working sleep and wake on a Dell Latitude E6410 for the first time (and we're running Mojave).

 

I have found two methods to wake from sleep: Press the power button or close the lid and re-open it.  Laptop wakes upon opening lid.

 

 

On 8/21/2019 at 9:55 AM, vbmota said:

Theres a chance to make it works or it is almost impossible?

 

Yes! There is a good chance we'll make it work!

DSDT.zip

Edited by tonyx86
Link to comment
Share on other sites

To help people test my work, here's what I did to get sleep / wake working on the E6410.  Most of the additions to the E6410 DSDT are copied from the E6430 DSDT.  I'm not sure all of this was necessary.

  • Added GFX0._OFF() Method, supporting methods and supporting memory-mapped registers and called it from the _PTS method
  • Added GFX0._ON() Method, supporting methods and supporting memory-mapped registers and called it from the _WAK method
  • Copied much of the E6430 _PTS and _WAK method contents to the E6410 DSDT (trial and error to figure out what worked)
  • Added _S3D methods to PCI0, LPCB, P0P2, GFX0, GIGE, SATA, SAT1, SBUS, HDEF
  • Changed _S3D from 0x02 to 0x03 in EHC1 and EHC2
  • Added GFX0._PS0 and GFX0._PS3
  • Added External declarations of CFGD and NHDA
  • Added PNLF (again afer removing it)

Note that after all these changes, wake still did NOT work.  The final trick was moving GFX0._ON() to the end of the _WAK method.  The E6430 DSDT has GFX0._ON() at the beginning of the _WAK method and I'm not sure how it works that way.

 

I have Wake From USB enabled in BIOS but my Latitude E6410 does not wake on a USB event.  I suspect I'm missing methods for EHC1 in my DSDT.

 

EDIT: For those still interested in how I fixed sleep/wake on this Latitude E6410, I am now using Open Core with OCLP Legacy Patcher.  I found a bug in my ACPI patches that explains my need to move GFX0._ON() to the end of the _WAK method here.

Edited by deeveedee
  • Like 1
Link to comment
Share on other sites

Here's an update on my testing.  Sleep and Wake seems to be working PERFECTLY (on both Mojave and High Sierra).  I should have stuck with my instinct in June 2019 when I first bought my Latitude E6410 (on Ebay for $60 USD) and pursued a discrete graphics solution for sleep - oh well - lesson learned.  My apologies for taking so long to get it working and thanks to those who were patient with my progress.  My suggestion to you?  If you're a hackintosh beginner (and you're confident in your own technical ability), stick with your own gut feeling despite what the experts are telling you and don't be afraid to challenge assumptions.  There is lots of hackintosh content and commentary that is the result of people stuck in a paradigm (rut).  See if you can teach something to the "experts."

 

I can sleep and wake repeatedly and the resume from suspend state S3 is incredibly fast.  If you followed my "hibernatemode 25" suggestion from one of my previous posts, be sure to change hibernatemode back to 0 and delete /var/vm/sleepimage.  There are plenty of posts on sleepimage, so I won't repeat them here.  USB works without any problems after sleep/wake, so it appears that all of my USBInjectAll / SSDT-UAIC / DSDT edits are correct (thank you Rehabman).  I have not found any problems yet.

 

Sleep can be invoked by pressing the Fn-F1 key combination and by selecting sleep from the Apple menu.  As noted before, laptop wakes by closing / opening the lid and by pressing the power button.

 

The laptop does not sleep when closing the lid, but this should be resolvable by using Rehabman's technique. I'm not planning to address this, but for anyone who wants to try, Google "Rehabman lid sleep wake" and post your solution in this thread.

 

I believe that this concludes the research part of this thread and the result is a perfect MBP6,2 hackintosh (that also runs Windows 10 perfectly).  After a bit more testing, I'll update the first post of this thread to make it more of a guide.

Edited by tonyx86
added that sleep works on both Mojave and High Sierra
Link to comment
Share on other sites

Following sleep for an extended period, the laptop may resume with brightness at its highest setting and the Fn-"down" arrow key may not respond.  This is easily remedied by first pressing the Fn-"up" key which restores functionality of the brightness keys.  Brightness is then adjusted normally via the "up" and "down" arrow keys.

Link to comment
Share on other sites

About the brightness issue, I remember I had it too on my E6320 but unfortunately, I haven't documented in my notes how I fixed it. :-(
Might be a more recent FakeSMC or when I got rid of NVidia drivers (I had it erroneously installed in my first trials) or of the NVRAM emulation? Anyway, you did a great job. ;-)

 

Edited by Nodarkthings
Link to comment
Share on other sites

Thanks!  I suspect that the brightness issue would be fixed if we figured out how to get the brightness slider working (currently, brightness can be adjusted only with the Fn-Up / Fn-Down keys).  I tried a few things but didn't spend much time on it.  The brightness keys work very well.

 

EDIT: I am currently running without PNLF in my DSDT.  I had read that it may be required for sleep, but it is not required for the E6410 to sleep/wake.  It will likely be required if we attempt to get the brightness slider working.  I removed it to see if this resolves the brightness issue when resuming (it's not a consistent problem, so I'll just have to wait and see).

My updated DSDT (without PNLF) is attached.

 

DSDT.zip

Link to comment
Share on other sites

@vbmota and @hazem3ly - I'm not sure if you're both still having "disk unrecognized" issues.  I'm not experiencing any issues with dual-booting Windows and MacOS and I don't have any additional kexts installed, so I thought I'd share my disk strategy.  There are other ways to do this, but this is the approach I've taken:

  1. Install new SSD ( Drive A ) in primary drive bay and install macOS (my macOS disk is APFS with Mojave and High Sierra installed).  Install Clover on Drive A and prepare EFI.
  2. Remove Drive A and install new SSD ( Drive B ) in primary drive bay (so that only Drive B is installed and Drive A is not installed)
  3. Install Windows 10 on Drive B leaving unallocated space on Drive B (my Drive B is 256GB SSD with 100GB used by Windows 10)
  4. Use Paragon Partition Manager (free) to format the unallocated drive space on Drive B as HFS+ (note that I created the HFS+ partition on Drive B in Windows 10)
  5. Move Drive B to your 2nd drive caddy and install Drive B in the modular bay
  6. Install Drive A in the primary drive bay

When booting, press F12 to select your disk.  Selecting the primary drive ( Drive A ) runs the Clover bootloader so you can boot macOS.  Selecting the modular drive ( Drive B ) boots Windows 10.  With this strategy, Clover bootloader runs only when booting macOS and not when booting Windows 10.  From macOS, I can use the HFS+ partition on Drive B for macOS storage.

 

Note that I installed both macOS and Windows in the primary drive bay (before moving the Windows drive to the modular drive bay).  I don't like to install Windows 10 when any other drives are installed.  I find that Windows 10 installer behaves much better when there is only one drive in the computer during the install.  I add drives AFTER Windows 10 is fully installed.  You can probably install Windows 10 on Drive B when Drive B is in the modular bay - this is just the way I did it.

Edited by tonyx86
  • Like 1
Link to comment
Share on other sites

@Dr. Monkey Now that everything is working (including sleep), I am still not observing working "speedstep" for the GPU.  I'm content with my E6410 as-is and sleep works great, so I'm not planning to do much more with the E6410 (except to get Catalina working).  Every once in a while, I observe RPM for the GPU fan in HWMonitor (see attached screenshot), so I suspect that HWMonitor is not reading the GPU stats correctly and that we can't trust what HWMonitor reports about the GPU.   If you have a more reliable way to read GPU stats, I'd recommend it.  Maybe there's a better version of HWMonitor (I thought I read about one somewhere).

Screen Shot 2019-09-07 at 12.11.36 PM.png

Edited by tonyx86
Link to comment
Share on other sites

Removing PNLF from the Latitude E6410 DSDT appears to have "fixed" the brightness problem.  Since making this change, I have not observed brightness at MAX after resuming from sleep and brightness keys work fine after resuming from sleep.  This problem was intermittent before, so I'll continue to monitor.

 

Wi-Fi, USB and other components/functions resume without issue following sleep.  I have not found any problems so far.  Would be interested in hearing other sleep test observations.

Link to comment
Share on other sites

Can you share the DSDT with new edits? Thank you!

Edit: nevermind, I found the post above. Will test it.

Answering your suggestion about the disks, I could install the 3 OSes with 2 disks (one for Mavericks and Mojave an second for Windows 10) without any issues now. Thanks again.

Link to comment
Share on other sites

I hope others with Latitude E6410s are having the same experience as I am.  I can't believe that a 2010 laptop is this good and runs Mojave so perfectly.  This laptop is truly a pleasure to use.

Link to comment
Share on other sites

I trying to appling every edit you do in dsdt but i couldn't make it work, and i feel lost, i don't even know if i patshing it correctly, i also apply your dsdt file without edit but the machine is restarting before entering the os without any error message appears in verbose mode.

please if u can share any guide about patching it i will be grateful i already readed RehabMan [Guide] Patching LAPTOP DSDT/SSDTs but i couldn't find out how to do something like what you mentioned in first post like this (LPCB._DSM patched with device-id "3b09") for example,

and if you have any tutorial/guide on how i can diagonisting my machine like what i have to do with blackdragon's report.
and if it is possible to make full guide like the one by @duduclx it will be great help.
and thank you for your help

Link to comment
Share on other sites

@hazem3ly I read through your previous comments to see where we last left things.  When I last looked at your debug files, it appeared to me that you have a system that is the product of multiple installation methodologies.  Adding my DSDT to it is not going to fix the problems.  It will be best if you start from scratch to install macOS using the config.plist from post #1 of this thread, the kexts in post #1 of this thread and the latest DSDT and SSDT-UIAC in this thread (will require you to do a bit of reading of this thread).

 

This is definitely not a beginner hackintosh guide.  I haven't had time to turn this into a guide, and won't for a while.  If you're new to hackintosh, starting with Mojave on an unsupported system is not the best way for you to start.  It would be better for you to perform a fresh install of High Sierra (which works great with the same files discussed/attached in this thread) and High Sierra doesn't require any patching (e.g. does not require dosdude patcher).

 

To summarize, the latest DSDT that I posted to fix sleep will not be helpful to you until you have resolved all the other issues you have described previously, which I believe can only be resolved if you start over and perform a fresh installation of macOS.

 

After you perform the clean installation of High Sierra, we can start to diagnose issues (if any remain).

Edited by tonyx86
Link to comment
Share on other sites

I just noticed that when my laptop resumed from sleep (sleep after idle time-out), the display brightness was at maximum. The good thing is that after removing PNLF from the DSDT, the brightness keys work as they should, so brightness is easily adjusted (if necessary) after resuming from sleep.  The difference that I'm observing in brightness behavior after sleep (occasionally at max brightness and usually not at max brightness) may be based on whether the laptop sleeps automatically after idle time-out or I actively "sleep" my laptop (by pressing Fn-F1 or by selecting Apple Menu > Sleep).  I think it may be that the max brightness after sleep occurs only when the laptop sleeps automatically after idle time-out.

Link to comment
Share on other sites

 Share

×
×
  • Create New...