Jump to content

Mojave on Dell Latitude E6410 With Working Sleep


deeveedee
 Share

188 posts in this topic

Recommended Posts

@Dr. Monkey I'm correcting an old answer now that I know more.  SLPE is a 1-bit R/W register, so values are 0 and 1.  0 enables the sleep state defined in another register.  See my explanation of this later in this thread.

 

From a previous post in this thread:   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 some work on this.  See here for this analysis.  I haven't tried any of it yet.

Link to comment
Share on other sites

You made more progress than I did.  I just tried the suggestion (if I read it correctly).  I created a new entry for Device 10de,0a6c under MacBookPro 6,2 in AppleGraphicsPowerManagement.kext/Contents/info.plist and I set control-id to 18 (I also tried control-ids 16 and 17).  I don't see GPU Core/Memory clock changing at all - stuck on 405MHz.  What was your method for getting the frequency to make the "extreme infrequent dip to 250MHz?"

 

Note that I confirmed that AGPM loaded with the control-id I specified in info.plist for each of the cases control-id = 16, 17 and 18.  HWMonitor doesn't show any GPU Core/Mem clock changes.  

 

Could it be that HWMonitor isn't showing the GPU state changes?

Link to comment
Share on other sites

@Dr. Monkey I found one of your original discussions here.  I can see that you've looked at the AGPM throttling issue much more than I have, so I'll defer to you on this. After a bit of reading, I am using the FakeSMC.kext method to inject AGPM properties for the 10de,0a6c.  If you have anything you'd like me to try, let me know.  If you can post your DSDT.aml, config.plist and kexts for comparison, that would be very helpful.  Thanks!  

Link to comment
Share on other sites

EDIT: IOHWControl does not load properly under AGPM.  There's something "wrong" with my _DSM for discrete graphics (AGP.GFX0._DSM) in my DSDT.  If I enable "Inject NVidia" in CLOVER config plist, IOHWControl loads immediately.  Still testing this and have not updated the files attached to Post #1.

 

IOHWControl should load under AGPM as shown in the attached HighSierraAGPM.png.

HighSierraAGPM.png

MojaveAGPM.png

Edited by tonyx86
Link to comment
Share on other sites

I found a bug in the E6410 DSDT for BIOS A17.  In Method (GNOT), the expression 

 

    If (LOr (LGreater (OSYS, 0x07D0), LLess (OSYS, 0x07D6)))

 

always evaluates to TRUE regardless of the value of OSYS (so the first branch ( Notify (\_SB.PCI0, Arg1) ) is always executed.  I suspect that LOr should be LAnd so that the expression reads

 

    If (LAnd (LGreater (OSYS, 0x07D0), LLess (OSYS, 0x07D6)))

 

which executes the first branch ( Notify (\_SB.PCI0, Arg1) ) if the Operating System is a Windows 2001 variant and the second branch ( Notify (\_SB.PCI0.VID, Arg1) ) for any other operating system.

 

While this bug may have no affect on MacOS (especially since the patched Method (HPET) has no dependency on OSYS), the real problem with this bug is that it's obvious, should never have made it through Dell QA and should not be in BIOS version A17.  This same bug appears in the BIOS for other Latitude models.

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

@MadHatter806  - I'd like to try UEFI booting my E6410.  I've tried creating a UEFI-bootable USB drive with CLOVER, but my E6410 doesn't appear to recognize the USB as bootable.  Do you have any advice for creating a UEFI-bootable device for the E6410?  Here's what I tried:

  • Format USB (GUID partition map)
  • Install CLOVER on USB in ESP (UEFI boot)
  • Configure E6410 BIOS for UEFI boot (Change mode from Legacy to UEFI, don't configure a boot file)
  • Attempt to boot from USB (F12 -> Boot Menu -> UEFI USB)

My E6410 doesn't boot from the USB.  Instead, it shows a strange boot screen.  

 

Any advice for getting the E6410 to UEFI boot would be appreciated.  Thanks!

Link to comment
Share on other sites

It appears that I incorrectly applied the patch that duduclx referred to as "Intel GMA Ready," because in my DSDT, the patch contents are in Device (IGPU) instead of in Method (_DSM) within Device (IGPU).  MaciASL didn't complain about this and it doesn't appear to have had any affect.  I made this correction to my DSDT but haven't updated the files in Post #1.

Edited by tonyx86
Link to comment
Share on other sites

Sorry I've been out of town and didn't take this laptop with me to play with.

 

However, when I initially asked it was because I could never get clover to work UEFI, and was thinking maybe you had. (It seems perhaps some of the issues might be easier to resolve with UEFI as it gives the OS more information to work with for the components.)

 

I did however try a Yosemite (Only full installer I had available at the time) install USB formatted GPT with Clover (EFI -- Fat32).

Booting, was unable to boot from it. Had to use El Capitan Legacy boot to clover. In clover chose Yosemite install. When it came to reboot, the legacy clover was unable to launch from HDD (didn't have spare SSD to install to). Still could not get Yosemite USB to initialize clover.

 

Tried this:

Removed all drives

Left Yosemite (UEFI) & El Capitan (Legacy) plugged in.

Launched clover from Legacy USB -- launched shell -- removed Legacy USB.

Listed all disks, found the efi partition. Created a boot config for it. Rebooted, tried to f12 launch, no success. Then tried adding boot option in BIOS (manually point to clover efi). Also no bootable device detected.

 

From research it appears due to EFI being second partition on the drive, unlike Linux or Windows where it is generally first.

Did find an article where someone claimed to get UEFI boot working on an E6410. Will edit this post and link article later (if I can find it again) as maybe you will understand what steps they might have taken based on the comments in order to replicate results.

 

https://www.reddit.com/r/hackintosh/comments/74xhka/latitude_e6410_with_1013_booting_from_filevaulted/

Link to comment
Share on other sites

EDIT: I have a working sleep solution later in this thread.  Keeping this post for info.

 

Interesting that Windows 10 users have sleep / shutdown issues:  https://www.dell.com/community/Windows-10/Solved-Laptop-won-t-shutdown-completely-in-Windows-10/td-p/4624985/page/14

 

According to this thread which is linked in the above thread: 

 

https://www.dell.com/community/Windows-10/E6410-Win-10-1803-update-UEFI/m-p/6141447

 

the Windows 10 shutdown issue is resolved by switching from UEFI to Legacy boot and using an MBR disk format instead of GPT.  I don't have any experience with UEFI booting on the E6410, but the Windows 10 problems suggest that staying with Legacy boot is preferable.

Edited by tonyx86
Link to comment
Share on other sites

I made statement #2 below before learning about how to override _OSI with XOSI via a custom SSDT (credit Rehabman).  I suspect that creating a custom SSDT-XOSI is a better way to patch OS identification in the Latitude E6410 DSDT. I'm still learning about XOSI and will provide more details as I learn.  If anyone has used the XOSI / _OSI override on their Dell Latitude E6410 or similar laptop, please comment.  Thank you.

 

I noticed a couple of "errors" in my DSDT that I corrected, but don't appear to have had any affect on system behavior:

  1. The devices IDs of the EHCI devices are wrong in the DSDT (according to the Intel Series 5 Chipset specification).  Since the DSDT defines only the EHCI device-id (and not "name" or "compatible," Mojave is still correctly discovering the device identity (ignoring the device-id defined in the DSDT).  The detected device identifier for EHC1 and EHC2 can be observed in IORegistryExplorer.  I corrected the device-ids in my DSDT. EHC1: 3b34.  EHC2: 3b3c.
  2. The value of ACOS depends on _OSI, but is missing a conditional for "Darwin."  I set the conditional for "Darwin" to be equivalent to Linux (same as I did for OSYS).

Neither of these "fixes" appear to have had any affect (on sleep or otherwise). My system is currently running with these fixes which are not yet reflected in the files attached to Post #1.

Edited by tonyx86
Link to comment
Share on other sites

EDIT: I noticed that my CPU temps were climbing (not a lot, but a few degrees) after performing the procedure below.  I removed the heatsink only to find that the AS5 compound was still applied to both surfaces (the die and the copper heatsink pad), so there isn't any pressure being applied by the copper pad directly on the CPU die.  I added a .3mm copper shim on the CPU and also a .3mm copper shim on the 3100m die (which now has a copper shim on the die and a Fujipoly pad on the heatsink) and will report back after the surfaces have a chance to mate and the AS5 settles / spreads.

 

EDIT 2: Copper shims have restored temps back to the ranges that I was observing before.  I suspect temps will get better as surfaces mate.

 

EDIT 3: After about a week with the copper shims, the laptop fan hardly runs and when it does run, it's very quiet.  I suspect that the heat transfer from the CPU and Graphics dies is much better.

 

I removed the heatsink/heatpipe to thoroughly clean my fan / heatsink fins.  While at it, I replaced the CPU thermal pad with Arctic Silver 5 and replaced the GPU thermal pad with a Fujipoly 11w/mk thermal pad.  Temps for the CPU and GPU are now lower by a few degrees C.

Screen Shot 2019-07-06 at 9.22.26 AM.png

Edited by tonyx86
Added copper shim
Link to comment
Share on other sites

EDIT: I'm still learning about ACPI and DSDT patching and just learned about overriding _OSI with an XOSI SSDT (credit Rehabman).  My comments/observations below do not reflect this new knowledge of XOSI as evidenced by my rather naive statement about Methods IINI and OSID.  I don't know enough about the use of XOSI to apply it to the Dell Latitude E6410, but I suspect that a custom XOSI SSDT is the best way to "patch" _OSI in the E6410 DSDT.  Will provide more detail as I learn about this and I welcome any comments, especially from others who have used the XOSI / _OSI override on their Latitude E6410 or similar laptops.

 

After further review of the Dell Latitude E6410 DSDT (BIOS A17), I'm noticing a programming style that is inconsistent ( see OS Identification differences in Method (IINI) and Method (OSID) ) and flawed (note coding error in Method (GNOT) ), so I'm suspicious of the code's quality.  Call me paranoid.  I would appreciate other opinions on these suspicious items in the DSDT that may actually be nothing to worry about - just checking:

  1. Not a problem, but Method (ECR1) and Method (ECW1) each include a series of IF conditions, such that the methods always evaluate every IF condition, even if the first evaluates to TRUE.  It would have been very easy to return immediately upon a TRUE IF condition.
  2. ACOS is used in Method (ECIN) without first initializing ACOS.  Note the way ACOS is used in Method (STOS)
  3. Mutex (WMIX) is acquired in Method (WSVP) and Method (WVCU) and is never released at the end of the methods.  All other methods that acquire a mutex release the mutex before exiting.
  4. Method (ECW1) does not support writing to every EC register (note that ECR1 supports reading from every EC register).

I have addressed each of these in my DSDT and am currently running with these updates as I continue to look for reasons why the E6410 does not sleep.  So far, I haven't noticed any difference in behavior.

Edited by tonyx86
Link to comment
Share on other sites

Hi guys.

 

Just installed Mojave at my Dell Latitude E6510 (almost the same hardware and identical graphics - Core i7-620m, Nvidia 3100M, 8GB DDR3, 480GB SSD, 1920x1080p display, BIOS A16).

 

Id follow the duduclx guide for El Capitan and Sierra with success but without edit DSDT etc. (very complex to me) and the performance was nice.

 

But now, inside Mojave, theres something with my nVidia 3100m that shows me some artifacts and slows animations.

Someone can help here?

Edited by vbmota
hardware update
Link to comment
Share on other sites

@vbmota Welcome to the discussion!  You mentioned Sierra - did you also try High Sierra?  If your graphics worked fine in High Sierra, my first guess would be that you didn't apply Dosdude's legacy graphics patch (or you did and it didn't install correctly for some reason).  Also, are you running HWMonitor and if so, can you see your GPU temps?

 

EDIT: Also, did you follow my performance improvement tips listed in the first post of this thread?

 

If you're confident in the legacy graphics patch, GPU temps are reasonable and you followed my performance improvement tips in the first post of this thread, are you able to post the following items for review (in a single zip file)?  If you don't know how to produce these items, Google 'GENERATE PROPER PROBLEM REPORTING FILES BlackDragon' to use Black Dragon's problem reporting tool and post the zip file in this forum.  The files you should post are:

  • DSDT (I'd prefer your DSDT.dsl, but DSDT.aml is ok)
  • IORegistryExplorer dump
  • CLOVER config.plist
  • list of kexts in your CLOVER/kexts/Other folder
  • output of 'sudo kextcache -i /'
  • CLOVER preboot.log (generated by pressing F2 in CLOVER bootloader screen. File located in EFI/CLOVER/misc)

 

 

Edited by tonyx86
Link to comment
Share on other sites

No I didnt try High Sierra.

Thank you for answer. As soon as possible I will post the results.

By the way, I installed the nvidia webdrivers following some kind of youtube guide and appears to be ok.

I will get some time to see the dosdudes post install and be back here. 

Cheers!

Link to comment
Share on other sites

@vbmota If you didn't apply Mojave patches for legacy graphics, that's your issue.  Do the following:

 

  1. BACKUP YOUR DISK!!!
  2. Remove the NVidia Web Drivers
  3. Create a patched Mojave installer USB using Dosdude's latest Mojave patcher
  4. Boot your laptop from the patched Mojave installer USB
  5. When you reach the installer GUI, ignore the Mojave install dialog (you've already installed Mojave) and select "macOS Post Install" from the Utilities menu
  6. Set your Mac Model to 6,2.  This will select the patches for your laptop and should include the Legacy Graphics Patch
  7. Review the patches to see if you don't need any of them and uncheck those you don't need (I'm not sure what you have already applied to your laptop).  I'm not looking at the macOS Post Installer at the moment, so I'm going by memory, but I think you'll want to uncheck anything to do with SIP (I suspect you're already handling that with CLOVER) and USB (I suspect you already have your own preferred USB kext).  If there's any doubt about what options to enable, uncheck everything except for Legacy Graphics so that you have only the Legacy Graphics patch checked.
  8. Follow instructions to apply the patch(es) and reboot.
  9. You should now have working graphics.
Edited by tonyx86
Link to comment
Share on other sites

After reviewing IORegistryExplorer, I noticed that the portType of the Internal USB Port 5 on hub EHC1 is wrong.  It is portType =  0 which is an external USB port instead of portType = 2 which is an internal USB port.  I never knew that the HUB1 and HUB2 definitions in Rehabman's SSDT-UIAC-All.dsl applied to the USB ports on the EHCx hubs.  By including the definition of HUB1 in my custom SSDT-UIAC.dsl and setting the portType of HP15 to 2, I was able to change the Bluetooth USB port type from external to internal.

 

This does not appear to have had any affect on sleep, but may be important to prevent instant wake when sleep is finally working.

 

This change is not yet reflected in the files that are attached to Post #1 in this thread.  I have attached my new custom SSDT-UIAC.dsl to this post.

 

EDIT: I uploaded a newer SSDT-UIAC.dsl that includes the UsbConnector values for each EHC1 USB port.

SSDT-UIAC.zip

Edited by tonyx86
Attached custom SSDT-UIAC.dsl
  • Thanks 1
Link to comment
Share on other sites

@Dr. Monkey I have been experimenting with different OS identification equivalents to "Darwin" and believe that my laptop runs coolest (indicating lower power consumption) when I emulate "Linux" for _OSI("Darwin").  Do you know enough about editing your DSDT, so that your laptop is emulating "Linux" when running macOS?  I haven't worked on an XOSI SSDT to override _OSI (still learning about it), so you would need to manually edit your DSDT to patch Methods IINI()  and OSID().  I'm curious to know if you see a temp difference.  I compared Linux and Win7.

 

The screen shot I snapped in an earlier post (showing CPU core idle temps in the 40s) was when my DSDT emulated "Linux" for "Darwin."  When I emulate Win7, my CPU core idle temps are in the 50s.

Edited by tonyx86
Link to comment
Share on other sites

Off topic: @tonyx86 I was running OSX and Windows at the same SSD on my Latitude E series when it had Sierra.

But now, with Mojave, I unified the partition for error proof in the install process.

Theres something new with this OSX or I can simply split one drive, restore OSX at the partition 1 and install Windows in another?

Thanks again.

Link to comment
Share on other sites

@vbmota I am not sure how to dual-boot Windows and MacOS on the same disk while preserving MacOS ability to perform updates.  I have a replacement drive caddy that lets me install a second SSD in the DVD slot.  I press F12 at boot to select the drive that I want to boot from.  This allows me to have Windows on one drive and CLOVER/MacOS on the other.  Note that my MacOS partition is formatted APFS and I dual-boot Mojave 10.14.5 and High Sierra 10.13.6 from the same SSD (each MacOS in its own APFS container).

 

When you ran OSX and Windows on the same SSD, were you booting legacy or UEFI?  Was your SSD partitioned MBR or GPT?

Edited by tonyx86
Link to comment
Share on other sites

 Share

×
×
  • Create New...