Jump to content
acquarius.13

DSDT Latitude E7450

Recommended Posts

Hi @Jake Lo and @viking1304

 

no way in having a better result. 

Hack doesn't go to sleep when plugged into AC and I have to take the charger off to put it to sleep.

When I wake it, I have only a black screen.

Furthermore, boot time is still so high (it is external, but it is an SSD)

Share this post


Link to post
Share on other sites

Dear @Jake Lo and @viking1304,

major contributors to this topic.

I appreciated so much your big effort in understanding what's wrong in my DSDT but I feel I make you waste a lot of precious time.

The original intent of this topic was to check if I were able to patch a "known" DSDT by my own, in order to make a step further and try to patch another system.

Unfortunately, I have much more to know and to study. 

Since Jake has patched and made an efficient guide for the E7450 with HD 5500, I think I will follow the next updates about this powerful machine but now we can even stop with this topic, if you agree. 

I'm still available as "beta tester" if you need an user with this kind of machine to see how your patches and hacks work on another machine. 

I hope you can understand the general intent of this post, even if english is not my mother tongue.

 

Thank you so much guys! 

 

I will wait for a stable guide for the next step..Mojave!

 

Cheers,

Marco

Share this post


Link to post
Share on other sites

UPDATE

Since my internal SSD has many boot problems (see the topic I started in E7xxx), I booted again with external SSD and EFI folder modified as Jake's recommendations.

I booted in verbose mode and I found what makes the boot so slow:

Disabled turbo Boost: 850009 --> 4000050009 (this took up to 40 seconds)

kextd stall[0], (60s): 'SMCSMBusController'

kextd stall[1], (60s): 'SMCSMBusController'

kextd stall[2], (60s): 'SMCSMBusController' which took up to 4 minutes and then boot accomplish

 

Any idea about these?

 

Thanks a lot

 

Marco

 

Share this post


Link to post
Share on other sites

@Jake Lo I finally managed to properly apply USB3 _PRW 0x6D (instant wake) hotpatch alternative.

 

SSDT-GPRW.dsl and SSDT-UPRW.dsl are basically same. Only difference is that one replaces GPRW method and other replaces UPRW method. That's was clear from the beginning, but I overlooked some very important things.

 

Static patch actually have 4 parts. First part is related to patching of _PRW calls and other 3 parts are related to injection of some Apple USB properties into EHC1, EHC2 and XHC. Hotpatch alternative to those 3 parts are SSDT-EH01.dsl, SSDT-EH02.dsl and SSDT-XHC.dsl.


So, we need those 4 files in patched folder: SSDT-GPRW.amlSSDT-EH01.amlSSDT-EH02.aml and SSDT-XHC.aml.

 

SSDT-EH01.aml and SSDT-EH02.aml needs two additional patches in Clover - change EHC1 to EH01 and change EHC2 to EH02. That's easy part.

 

Critical and a little tricky part is replacing GPRW with XPRW method. Tricky part (at lest when you do it for the first time) is that we need to change method itself, but not calls to the method. This part is BIOS dependent, so it's not universal and needs to be found.

 

DSDT should be decompiled with -l option in oder to get mixed view.

$ iasl -l DSDT.aml

You need to find GPRW method. In A20 BIOS that I installed tonight, this looks like this

        Method (GPRW, 2, NotSerialized)
        {
            PRWP [Zero] = Arg0
            Local0 = 
  B728: 14 40 06 47 50 52 57 02 70 68 88 50 52 57 50 00  // .@.GPRW.ph.PRWP.
  B738: 00 70                                            // .p

Method calls stats with 0x14, so we need to replace 14400647 505257 with 14400658 505257 in Clover.

 

If I open MaciASL from Launcpad it will open system DSDT. If I search for XPRW, it is changes just in one place, where it should be changed.

    Scope (\)
    {
        Name (PICM, Zero)
        Name (PRWP, Package (0x02)
        {
            Zero, 
            Zero
        })
        Method (XPRW, 2, NotSerialized)
        {
            Store (Arg0, Index (PRWP, Zero))
            Store (ShiftLeft (SS1, One), Local0)
            Or (Local0, ShiftLeft (SS2, 0x02), Local0)
            Or (Local0, ShiftLeft (SS3, 0x03), Local0)
            Or (Local0, ShiftLeft (SS4, 0x04), Local0)
            If (And (ShiftLeft (One, Arg1), Local0))
            {
                Store (Arg1, Index (PRWP, One))
            }
            Else
            {
                ShiftRight (Local0, One, Local0)
                FindSetLeftBit (Local0, Index (PRWP, One))
            }

            Return (PRWP)
        }
    }

Sleep now works even when I am on power adapter, not only when I am on battery. Same as with static patch version.

 

Share this post


Link to post
Share on other sites
1 hour ago, viking1304 said:

@Jake Lo I finally managed to properly apply USB3 _PRW 0x6D (instant wake) hotpatch alternative.

 

SSDT-GPRW.dsl and SSDT-UPRW.dsl are basically same. Only difference is that one replaces GPRW method and other replaces UPRW method. That's was clear from the beginning, but I overlooked some very important things.

 

Static patch actually have 4 parts. First part is related to patching of _PRW calls and other 3 parts are related to injection of some Apple USB properties into EHC1, EHC2 and XHC. Hotpatch alternative to those 3 parts are SSDT-EH01.dsl, SSDT-EH02.dsl and SSDT-XHC.dsl.


So, we need those 4 files in patched folder: SSDT-GPRW.amlSSDT-EH01.amlSSDT-EH02.aml and SSDT-XHC.aml.

 

SSDT-EH01.aml and SSDT-EH02.aml needs two additional patches in Clover - change EHC1 to EH01 and change EHC2 to EH02. That's easy part.

 

Critical and a little tricky part is replacing GPRW with XPRW method. Tricky part (at lest when you do it for the first time) is that we need to change method itself, but not calls to the method. This part is BIOS dependent, so it's not universal and needs to be found.

 

DSDT should be decompiled with -l option in oder to get mixed view.


$ iasl -l DSDT.aml

You need to find GPRW method. In A20 BIOS that I installed tonight, this looks like this


        Method (GPRW, 2, NotSerialized)
        {
            PRWP [Zero] = Arg0
            Local0 = 
  B728: 14 40 06 47 50 52 57 02 70 68 88 50 52 57 50 00  // .@.GPRW.ph.PRWP.
  B738: 00 70                                            // .p

Method calls stats with 0x14, so we need to replace 14400647 505257 with 14400658 505257 in Clover.

 

If I open MaciASL from Launcpad it will open system DSDT. If I search for XPRW, it is changes just in one place, where it should be changed.


    Scope (\)
    {
        Name (PICM, Zero)
        Name (PRWP, Package (0x02)
        {
            Zero, 
            Zero
        })
        Method (XPRW, 2, NotSerialized)
        {
            Store (Arg0, Index (PRWP, Zero))
            Store (ShiftLeft (SS1, One), Local0)
            Or (Local0, ShiftLeft (SS2, 0x02), Local0)
            Or (Local0, ShiftLeft (SS3, 0x03), Local0)
            Or (Local0, ShiftLeft (SS4, 0x04), Local0)
            If (And (ShiftLeft (One, Arg1), Local0))
            {
                Store (Arg1, Index (PRWP, One))
            }
            Else
            {
                ShiftRight (Local0, One, Local0)
                FindSetLeftBit (Local0, Index (PRWP, One))
            }

            Return (PRWP)
        }
    }

Sleep now works even when I am on power adapter, not only when I am on battery. Same as with static patch version.

 

Dear viking1304: please share your updated EFI folder, thank you very much.

Share this post


Link to post
Share on other sites

Sure, no problem, but you need to be aware that some things in my Clover folder are system dependent. I have E7450 with nVidia and I have A20 BIOS (released two days ago). What is your system? I do not see that info.

 

In patched folder I have those AML files:

SSDT-PNLF.aml is same as the one that you already have - needed for Intel brightness control

SSDT-GPRW.aml, SSDT-EH01.aml, SSDT-EH02.aml and SSDT-XHC.aml - those 4 are needed to fix instant wake issues

SSDT-DDGPU.aml is needed only on model with nVidia - this patch will disable nVidia 

SSDT-DDGPU is not same as in Rehabman's repo. This one is for RP05, not for PEG0.

 

I am using WhateverGreen with 32MB framebuffer patch (the one from WG Intel FAQ). This one fully replace IntelGraphicsDVMTFixup. Since I have 16GB of RAM, I am also using patch to increase VRAM to 2560MB.

 

Patch in config that is required in order to replace GPRW with XPRW method (for wake issues) is dependent on A20 version of E7450 BIOS for nVidia model.

 

I am using AppleBacklightFixup.kext, so I do not need to patch com.apple.driver.AppleBacklight in config. 

 

I am using Legacy_Sierra_QMI.kext that I made. It's for DW5809e LTE.

 

I am using MacBookAir7,2, but I consider switching to MacBookPro12,1 SMBIOS.

 

Everything else is same as it would be for any other similar laptop.

 

Since I need to replace my serials with new generated ones before send,  send me your origin and I will also fix wake patch to match your DSDT, so you do not have to do that yourself.

 

EDIT:

 

Almost forgot. I am also using USBPorts.kext created with FBPatcher. This one is for MacBookAir7,2 and will not work on any other SMBIOS. For MacBookPro12,1, new kext should be created. If your ports are different than mine, you might also need to create this kext again.

 

You need to add USBInjectAll.kext before using FBPatcher, but USBInjectAll.kext SHOULD BE REMOVED before using generated kext.

 

Do not use Clover USB port patches. FakePCIID_XHCIMux.kext is not needed with USBPorts.kext.

 

Do not combine those kexts in any way, this only can make your life a living Hell.

Share this post


Link to post
Share on other sites

I had a copy of A19 origin folder from your model, so I checked DSDT and it turns out that required patch for XPRW should be same as mine.

 

I removed SSDT-DDGPU.aml, since you do not have nVidia. I also removed Legacy_Sierra_QMI.kext and all sensors kexts. You can add any of those later if you need them.

 

This should work just fine, but if it turns out that you have any problem related to USB ports, remove USBPorts.kext from kexts/Other folder. 

 

Even iMessage and FaceTime should work if your account is not one of those that require genuine MLB/ROM.

 

Only thing that really require your attention is your Wi-Fi. I am using external TP link USB Wi-Fi device, so I do not have kext for Broadcom Wi-Fi. You need to add those yourself.

 

BT kexts are there and those works fine.

 

Let me know if it works for you.

 

CLOVER E7450.zip

 

btw. when you are replying to the last post in any thread, do not quote that whole message. That will just make reading harder, not easier as you probably wanted.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×