Jump to content
gygabyte666

HP Envy 17t-j000 Quad (Haswell) + 10.8.5/10.9.5/10.10.x/10.11.x/10.12.x/10.13.x/10.14.x

1,321 posts in this topic

Recommended Posts

I recommend you use iasl on OS X.  But there is Windows builds of iasl on Windows too.  You might look here for Windows builds: https://www.acpica.org/

For Ubuntu boot, use a USB, no need for optical.

 

System Info does not show ig-platform-id.  You can see that only in ioreg (use IORegistryExplorer).  For injecting ig-platform-id it is easier to use the bootloader mechanisms.

 

Changing from GFX0 to IGPU gives you GPU power management.

 

i have already renamed GFX0 to IGPU, but how could i check if GPU pm works? i couldn't even get any gpu informations from HWSensor.

Share this post


Link to post
Share on other sites
Advertisement

i have already renamed GFX0 to IGPU, but how could i check if GPU pm works? i couldn't even get any gpu informations from HWSensor.

Look closely in ioreg and you'll see the differences between GFX0 and IGPU.

 

There is some GPU pstate reporting in Pike's AppleIntelCPUPowerManagementInfo.kext.

Share this post


Link to post
Share on other sites

First of all I would like to thank you all for your great effort!

 

I got 10.9.1 working on my Envy 15-j001, but I have one problem with the HD4600:

When I insert InjectIntel-ig with value 0600260a into org.Chameleon.Boot.plist to get the graphics fully working I can only boot with "-f" or else the spinning circle at the boot screen will spin forever and sometimes overlay itself. In verbose mode this will result in a white cursor in the top left corner after the boot sequence is completed (when there should be the login screen).

Is there any way to fix this or should I just boot without Caches?

 

Thank you!

Share this post


Link to post
Share on other sites

First of all I would like to thank you all for your great effort!

 

I got 10.9.1 working on my Envy 15-j001, but I have one problem with the HD4600:

When I insert InjectIntel-ig with value 0600260a into org.Chameleon.Boot.plist to get the graphics fully working I can only boot with "-f" or else the spinning circle at the boot screen will spin forever and sometimes overlay itself. In verbose mode this will result in a white cursor in the top left corner after the boot sequence is completed (when there should be the login screen).

Is there any way to fix this or should I just boot without Caches?

 

Thank you!

Rebuild cache being certain to check for errors in system.log.

Share this post


Link to post
Share on other sites

Rebuild cache being certain to check for errors in system.log.

 

Rebuilding caches didn't change anything, still have to boot with "-f" to get to the login screen. I reproduced the error a few times and it seems that system.log shows "ReportCrash[234] Metadata.framework [Error]: couldn't get the client port" when I boot without "-f", any idea?

Share this post


Link to post
Share on other sites

Rebuilding caches didn't change anything, still have to boot with "-f" to get to the login screen. I reproduced the error a few times and it seems that system.log shows "ReportCrash[234] Metadata.framework [Error]: couldn't get the client port" when I boot without "-f", any idea?

Did you check for errors in the cache rebuild?

Share this post


Link to post
Share on other sites

Did you check for errors in the cache rebuild?

 

Oh you are right, I totally missed that there were warnings (but no errors). E.g. Invalid signature for AppleIntelFramebufferAzul.kext, which might be related to the problems, right?

Share this post


Link to post
Share on other sites

Oh you are right, I totally missed that there were warnings (but no errors). E.g. Invalid signature for AppleIntelFramebufferAzul.kext, which might be related to the problems, right?

If you patched AppleIntelFramebufferAzul, that would be normal.

 

I'm referring to errors that prevent a new kernel cache being created.

Share this post


Link to post
Share on other sites

If you patched AppleIntelFramebufferAzul, that would be normal.

 

I'm referring to errors that prevent a new kernel cache being created.

 

Just to be sure I am doing it right: kextcache -system-prelinked-kernel  and kextcache -system-caches are the commands I have to execute, right? If so, there are no errors :)

Share this post


Link to post
Share on other sites

Just to be sure I am doing it right: kextcache -system-prelinked-kernel  and kextcache -system-caches are the commands I have to execute, right? If so, there are no errors :)

I would use Kext Wizard and monitor output in system.log.

 

If there are no errors, then you should boot verbose so you can determine more about what is wrong. Maybe it is VT-d related and you need dart=0 (very common).

Share this post


Link to post
Share on other sites

I would use Kext Wizard and monitor output in system.log.

 

If there are no errors, then you should boot verbose so you can determine more about what is wrong. Maybe it is VT-d related and you need dart=0 (very common).

 

Hm...I used Kext Wizard and there were no errors in system.log during the procedure, however the problem is still there - even worse: I can see the login screen when booting with "-f", but if I login the login screen will "reload" and wants me to login again and again. It's similar to the symptom when booting without -f only that with the cache enabled there is no login screen at all, only a blinking white cursor. If I type some letters they will disappear after a second or two (seems like it is refreshing?).

Share this post


Link to post
Share on other sites

Hm...I used Kext Wizard and there were no errors in system.log during the procedure, however the problem is still there - even worse: I can see the login screen when booting with "-f", but if I login the login screen will "reload" and wants me to login again and again. It's similar to the symptom when booting without -f only that with the cache enabled there is no login screen at all, only a blinking white cursor. If I type some letters they will disappear after a second or two (seems like it is refreshing?).

Without knowing more about how you installed, I can't offer any further information. It sounds like your install is pretty screwed up.

Share this post


Link to post
Share on other sites

Without knowing more about how you installed, I can't offer any further information. It sounds like your install is pretty screwed up.

 

Patched DSDT and SSDT using your patches, used kexts provided by gigabyte. In my opionion my installation is not screwed up, but I'll reinstall. Thank you for your help.

Share this post


Link to post
Share on other sites

Patched DSDT and SSDT using your patches, used kexts provided by gigabyte. In my opionion my installation is not screwed up, but I'll reinstall. Thank you for your help.

Vanilla install from Mac App Store?

Share this post


Link to post
Share on other sites

Hi RehabMan,

 

my shutdown problem has troubled me for two months.

the laptop can't shutdown exactly(screen, fan are off, but the hdd is still on). tried all the shutdown fixes, but didn't work for me.

i have compared _PTS method of my dsdt with others. i found that _PTS of others is totally clean and brief. is it possiable that i transplant the codes from other laptops?(for example this Envy 17t)

 

the _PTS method of mine:

Method (_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
    {
        If (LEqual (Arg0, 0x05)) {}
        Else
        {
            Store (Zero, P80D)
            P8XH (Zero, Arg0, Zero)
            Store (Arg0, SLPS)
            Store (Zero, GO55)
            If (And (ICNF, 0x10))
            {
                If (CondRefOf (\_SB.IAOE.PTSL))
                {
                    Store (Arg0, \_SB.IAOE.PTSL)
                }
            }

            If (LEqual (Arg0, 0x03))
            {
                P8XH (0x04, 0x53, Zero)
                P8XH (0x04, 0x53, One)
                If (LAnd (DTSE, LGreater (TCNT, One)))
                {
                    TRAP (TRTD, 0x1E)
                }

                If (And (ICNF, One))
                {
                    If (LAnd (And (ICNF, 0x10), LEqual (\_SB.IAOE.ITMR, Zero)))
                    {
                        If (LAnd (CondRefOf (\_SB.PCI0.LPCB.EC0.AWT0), CondRefOf (\_SB.IAOE.ECTM)))
                        {
                            If (LGreater (\_SB.IAOE.ECTM, Zero))
                            {
                                Store (And (\_SB.IAOE.ECTM, 0xFF), \_SB.PCI0.LPCB.EC0.AWT0)
                                Store (ShiftRight (And (\_SB.IAOE.ECTM, 0xFF00), 0x08), \_SB.PCI0.LPCB.EC0.AWT1)
                                Store (ShiftRight (And (\_SB.IAOE.ECTM, 0x00FF0000), 0x10), \_SB.PCI0.LPCB.EC0.AWT2)
                                Store (\_SB.PCI0.LPCB.EC0.WTMS, Local0)
                                Store (Or (0x81, Local0), \_SB.PCI0.LPCB.EC0.WTMS)
                            }
                        }
                    }

                    If (LAnd (And (ICNF, 0x10), CondRefOf (\_SB.IFFS.FFSS)))
                    {
                        If (And (\_SB.IFFS.FFSS, One))
                        {
                            Store (One, \_SB.IAOE.FFSE)
                            If (LAnd (CondRefOf (\_SB.PCI0.LPCB.EC0.WTMS), LEqual (\_SB.IAOE.PTSL, 0x03)))
                            {
                                Store (\_SB.PCI0.LPCB.EC0.WTMS, Local0)
                                Store (Or (0x02, Local0), \_SB.PCI0.LPCB.EC0.WTMS)
                            }
                        }
                        Else
                        {
                            Store (Zero, \_SB.IAOE.FFSE)
                        }
                    }
                }

                Store (One, \_SB.PCI0.LPCB.EC0.FLS3)
                If (LAnd (And (\_SB.PCI0.LPCB.EC0.IBT1, 0x02), LEqual (GI70, Zero)))
                {
                    Store (Zero, DPS3)
                }
                Else
                {
                    Store (One, DPS3)
                }
            }

            If (LEqual (Arg0, 0x04))
            {
                P8XH (0x04, 0x54, Zero)
                P8XH (0x04, 0x54, One)
                Store (One, \_SB.PCI0.LPCB.EC0.FLS4)
                If (LAnd (And (\_SB.PCI0.LPCB.EC0.IBT1, 0x04), LEqual (GI70, One)))
                {
                    Store (One, \_SB.PCI0.LPCB.EC0.WLPH)
                }
                Else
                {
                    Store (Zero, \_SB.PCI0.LPCB.EC0.WLPH)
                }
            }

            Store (\_SB.PCI0.LPCB.EC0.WLAN, \_SB.PTWL)
            Store (\_SB.PCI0.LPCB.EC0.BLTH, \_SB.PTBT)
            Store (\_SB.PCI0.LPCB.EC0.ST3G, \_SB.PT3G)
            Store (\_SB.PCI0.LPCB.EC0.WLST, \_SB.RDWL)
            Store (\_SB.PCI0.LPCB.EC0.BLTS, \_SB.RDBT)
            Store (\_SB.PCI0.LPCB.EC0.ED3G, \_SB.RD3G)
            If (LEqual (Arg0, 0x05))
            {
                P8XH (0x04, 0x55, Zero)
                P8XH (0x04, 0x55, One)
            }
        }
    }

the _PTS method of Envy 17t


    Method (_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
    {
        Store (Arg0, \_SB.PCI0.LPCB.H_EC.SLPT)
        Store (Zero, P80D)
        P8XH (Zero, Arg0, Zero)
        Store (Arg0, SLPS)
        If (And (ICNF, 0x10))
        {
            If (CondRefOf (\_SB.IAOE.PTSL))
            {
                Store (Arg0, \_SB.IAOE.PTSL)
            }
        }

        If (LEqual (Arg0, 0x03))
        {
            P8XH (0x04, 0x53, Zero)
            P8XH (0x04, 0x53, One)
            If (LAnd (DTSE, LGreater (TCNT, One)))
            {
                TRAP (TRTD, 0x1E)
            }
        }

        If (LEqual (Arg0, 0x04))
        {
            P8XH (0x04, 0x54, Zero)
            P8XH (0x04, 0x54, One)
            CMSW (0x60, 0x60)
        }

        If (LEqual (Arg0, 0x05))
        {
            P8XH (0x04, 0x55, Zero)
            P8XH (0x04, 0x55, One)
        }

        GLSD ()
        Store (One, AOAL)
        GLRS ()
        If (CondRefOf (\_SB.TPM.PTS))
        {
            \_SB.TPM.PTS (Arg0)
        }

        If (LEqual (\_SB.PCI0.RP07.PSPX, One))
        {
            Store (One, \_SB.PCI0.RP07.PSPX)
            Store (One, \_SB.PCI0.RP07.PSPX)
            Store (One, \_SB.PCI0.RP07.PMSX)
        }
    }

yeah they both look similar, is it possiable to transplant the code? and i wonder if it works... any suggestions? 

 

thanks in advance

 

 

 

------------------ update ------------------

 

and i also found that my laptop(v5-573g) couldn't shutdown under Linux, but this problem is already fixed by patching the linux kernel.  see here

 

yeah it would be a huge project if i try to modify the osx kernel and build it. 

 

According to your experience, is it possiable to be fixed by editting the dsdt? or i can only do something to the kernel :{ 

Share this post


Link to post
Share on other sites

Hi RehabMan,

 

my shutdown problem has troubled me for two months.

the laptop can't shutdown exactly(screen, fan are off, but the hdd is still on). tried all the shutdown fixes, but didn't work for me.

i have compared _PTS method of my dsdt with others. i found that _PTS of others is totally clean and brief. is it possiable that i transplant the codes from other laptops?(for example this Envy 17t)

 

the _PTS method of mine:

Method (_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
    {
        If (LEqual (Arg0, 0x05)) {}
        Else
        {
            Store (Zero, P80D)
            P8XH (Zero, Arg0, Zero)
            Store (Arg0, SLPS)
            Store (Zero, GO55)
            If (And (ICNF, 0x10))
            {
                If (CondRefOf (\_SB.IAOE.PTSL))
                {
                    Store (Arg0, \_SB.IAOE.PTSL)
                }
            }

            If (LEqual (Arg0, 0x03))
            {
                P8XH (0x04, 0x53, Zero)
                P8XH (0x04, 0x53, One)
                If (LAnd (DTSE, LGreater (TCNT, One)))
                {
                    TRAP (TRTD, 0x1E)
                }

                If (And (ICNF, One))
                {
                    If (LAnd (And (ICNF, 0x10), LEqual (\_SB.IAOE.ITMR, Zero)))
                    {
                        If (LAnd (CondRefOf (\_SB.PCI0.LPCB.EC0.AWT0), CondRefOf (\_SB.IAOE.ECTM)))
                        {
                            If (LGreater (\_SB.IAOE.ECTM, Zero))
                            {
                                Store (And (\_SB.IAOE.ECTM, 0xFF), \_SB.PCI0.LPCB.EC0.AWT0)
                                Store (ShiftRight (And (\_SB.IAOE.ECTM, 0xFF00), 0x08), \_SB.PCI0.LPCB.EC0.AWT1)
                                Store (ShiftRight (And (\_SB.IAOE.ECTM, 0x00FF0000), 0x10), \_SB.PCI0.LPCB.EC0.AWT2)
                                Store (\_SB.PCI0.LPCB.EC0.WTMS, Local0)
                                Store (Or (0x81, Local0), \_SB.PCI0.LPCB.EC0.WTMS)
                            }
                        }
                    }

                    If (LAnd (And (ICNF, 0x10), CondRefOf (\_SB.IFFS.FFSS)))
                    {
                        If (And (\_SB.IFFS.FFSS, One))
                        {
                            Store (One, \_SB.IAOE.FFSE)
                            If (LAnd (CondRefOf (\_SB.PCI0.LPCB.EC0.WTMS), LEqual (\_SB.IAOE.PTSL, 0x03)))
                            {
                                Store (\_SB.PCI0.LPCB.EC0.WTMS, Local0)
                                Store (Or (0x02, Local0), \_SB.PCI0.LPCB.EC0.WTMS)
                            }
                        }
                        Else
                        {
                            Store (Zero, \_SB.IAOE.FFSE)
                        }
                    }
                }

                Store (One, \_SB.PCI0.LPCB.EC0.FLS3)
                If (LAnd (And (\_SB.PCI0.LPCB.EC0.IBT1, 0x02), LEqual (GI70, Zero)))
                {
                    Store (Zero, DPS3)
                }
                Else
                {
                    Store (One, DPS3)
                }
            }

            If (LEqual (Arg0, 0x04))
            {
                P8XH (0x04, 0x54, Zero)
                P8XH (0x04, 0x54, One)
                Store (One, \_SB.PCI0.LPCB.EC0.FLS4)
                If (LAnd (And (\_SB.PCI0.LPCB.EC0.IBT1, 0x04), LEqual (GI70, One)))
                {
                    Store (One, \_SB.PCI0.LPCB.EC0.WLPH)
                }
                Else
                {
                    Store (Zero, \_SB.PCI0.LPCB.EC0.WLPH)
                }
            }

            Store (\_SB.PCI0.LPCB.EC0.WLAN, \_SB.PTWL)
            Store (\_SB.PCI0.LPCB.EC0.BLTH, \_SB.PTBT)
            Store (\_SB.PCI0.LPCB.EC0.ST3G, \_SB.PT3G)
            Store (\_SB.PCI0.LPCB.EC0.WLST, \_SB.RDWL)
            Store (\_SB.PCI0.LPCB.EC0.BLTS, \_SB.RDBT)
            Store (\_SB.PCI0.LPCB.EC0.ED3G, \_SB.RD3G)
            If (LEqual (Arg0, 0x05))
            {
                P8XH (0x04, 0x55, Zero)
                P8XH (0x04, 0x55, One)
            }
        }
    }

the _PTS method of Envy 17t


    Method (_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
    {
        Store (Arg0, \_SB.PCI0.LPCB.H_EC.SLPT)
        Store (Zero, P80D)
        P8XH (Zero, Arg0, Zero)
        Store (Arg0, SLPS)
        If (And (ICNF, 0x10))
        {
            If (CondRefOf (\_SB.IAOE.PTSL))
            {
                Store (Arg0, \_SB.IAOE.PTSL)
            }
        }

        If (LEqual (Arg0, 0x03))
        {
            P8XH (0x04, 0x53, Zero)
            P8XH (0x04, 0x53, One)
            If (LAnd (DTSE, LGreater (TCNT, One)))
            {
                TRAP (TRTD, 0x1E)
            }
        }

        If (LEqual (Arg0, 0x04))
        {
            P8XH (0x04, 0x54, Zero)
            P8XH (0x04, 0x54, One)
            CMSW (0x60, 0x60)
        }

        If (LEqual (Arg0, 0x05))
        {
            P8XH (0x04, 0x55, Zero)
            P8XH (0x04, 0x55, One)
        }

        GLSD ()
        Store (One, AOAL)
        GLRS ()
        If (CondRefOf (\_SB.TPM.PTS))
        {
            \_SB.TPM.PTS (Arg0)
        }

        If (LEqual (\_SB.PCI0.RP07.PSPX, One))
        {
            Store (One, \_SB.PCI0.RP07.PSPX)
            Store (One, \_SB.PCI0.RP07.PSPX)
            Store (One, \_SB.PCI0.RP07.PMSX)
        }
    }

yeah they both look similar, is it possiable to transplant the code? and i wonder if it works... any suggestions? 

 

thanks in advance

 

and i found also that my laptop can't shutdown under Linux, but this problem is already fixed by patching the linux kernel.  see here

 

yeah it would be a huge project if i try to modify the osx kernel and build it. 

 

According to your experience, is it possiable to be fixed by editting the dsdt? or i can only do something to the kernel :{

 

Not a good idea to transplant.

 

Have you attempted to debug your _PTS with ACPIDebug.kext? First step is to verify it executes from beginning to end.

Share this post


Link to post
Share on other sites

Not a good idea to transplant.

 

Have you attempted to debug your _PTS with ACPIDebug.kext? First step is to verify it executes from beginning to end.

 

i just intended to have a try, but i'm not sure, which argument and which branch should i observe when i shutdown my laptop?  "If (LEqual (Arg0, 0x05))"? should i debug if it enters into this branch?

Share this post


Link to post
Share on other sites

i just intended to have a try, but i'm not sure, which argument and which branch should i observe when i shutdown my laptop?  "If (LEqual (Arg0, 0x05))"? should i debug if it enters into this branch?

I would be surprised that the Arg0==5 case didn't complete start to finish... it does nothing.

 

The question is what is Arg0 in the shutdown case. I would have to read ACPI spec: https://www.acpica.org/

Maybe different iasl? I'm using the latest version here:

http://www.osx86.net/files/download/3680-iasl-intel-acpi-tools-x64/

 

And it works with this:

./iasl -e *.aml -d DSDT.AML
but this will gives me error AE_Already_Exists

./iasl -e *.aml -d ./DSDT.AML

 

BTW, the '-da' option seems to work pretty well...

iasl -da *.aml
Note: You must have no other *.aml files present in the directory when you execute iasl -da other than SSDTs/DSDT. If you have the other common ACPI files (APIC, BOOT, FACS, MCFG, ASF!, DBGP, etc.) iasl will produce an error.

Share this post


Link to post
Share on other sites

I would be surprised that the Arg0==5 case didn't complete start to finish... it does nothing.

 

The question is what is Arg0 in the shutdown case. I would have to read ACPI spec: https://www.acpica.org/

 

BTW, the '-da' option seems to work pretty well...

iasl -da *.aml

 

thanks i'll have a try

Share this post


Link to post
Share on other sites

Is it even possible to get all 4 speakers including the subwoofer to work with AppleHDA, instead of only two? 

Share this post


Link to post
Share on other sites
Is it even possible to get all 4 speakers including the subwoofer to work with AppleHDA, instead of only two?

 

If it is, no one has come forward with the method they used to fix it. So for the time being, I have to say no.

Share this post


Link to post
Share on other sites

It works for me too.

I added a note to my post... It works if you have only SSDT*.aml and DSDT*.aml in the directory (or specify SSDT*.aml DSDT.aml). The other files should be disassembled independently (if you want).

Share this post


Link to post
Share on other sites

@gygabyte666,

 

If you want to see if you can make actual brightness keys work... I've implemented a new feature in the latest build of my VoodooPS2 keyboard driver. It allows you to push keystrokes from ACPI. This allows you to turn ACPI keys into normal keys delivered as if they were PS2 keys.

 

To use it, you need to find out what code in DSDT is called when the keys are pressed.

 

 

Your first step would be to determine which EC query methods are called when you press the keys. A handy way is to instrument all _Qxx methods, then press the keys.

 

On my Lenovo U430, I instrumented all the EC query methods:

# instrument EC query methods
into method label _Q09 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q09 enter")\n
%1\n
\\rmdt.p1("EC0._Q09 exit")\n
end;

into method label _Q26 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q26 enter")\n
%1\n
\\rmdt.p1("EC0._Q26 exit")\n
end;

into method label _Q27 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q27 enter")\n
%1\n
\\rmdt.p1("EC0._Q27 exit")\n
end;

into method label _Q27 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q27 enter")\n
%1\n
\\rmdt.p1("EC0._Q27 exit")\n
end;

into method label _Q60 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q60 enter")\n
%1\n
\\rmdt.p1("EC0._Q60 exit")\n
end;

into method label _Q69 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q69 enter")\n
%1\n
\\rmdt.p1("EC0._Q69 exit")\n
end;

into method label _Q70 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q70 enter")\n
%1\n
\\rmdt.p1("EC0._Q70 exit")\n
end;

into method label _Q71 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q71 enter")\n
%1\n
\\rmdt.p1("EC0._Q71 exit")\n
end;

into method label _Q8F parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q8F enter")\n
%1\n
\\rmdt.p1("EC0._Q8F exit")\n
end;

into method label _Q90 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q90 enter")\n
%1\n
\\rmdt.p1("EC0._Q90 exit")\n
end;

into method label _Q91 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q91 enter")\n
%1\n
\\rmdt.p1("EC0._Q91 exit")\n
end;

into method label _Q92 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q92 enter")\n
%1\n
\\rmdt.p1("EC0._Q92 exit")\n
end;

into method label _Q93 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q93 enter")\n
%1\n
\\rmdt.p1("EC0._Q93 exit")\n
end;

into method label _Q94 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q94 enter")\n
%1\n
\\rmdt.p1("EC0._Q94 exit")\n
end;

into method label _QE0 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE0 enter")\n
%1\n
\\rmdt.p1("EC0._QE0 exit")\n
end;

into method label _QE2 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE2 enter")\n
%1\n
\\rmdt.p1("EC0._QE2 exit")\n
end;

into method label _QE4 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE4 enter")\n
%1\n
\\rmdt.p1("EC0._QE4 exit")\n
end;

into method label _QE5 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE5 enter")\n
%1\n
\\rmdt.p1("EC0._QE5 exit")\n
end;

into method label _QE6 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE6 enter")\n
%1\n
\\rmdt.p1("EC0._QE6 exit")\n
end;

into method label _QE7 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE7 enter")\n
%1\n
\\rmdt.p1("EC0._QE7 exit")\n
end;

into method label _QE8 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE8 enter")\n
%1\n
\\rmdt.p1("EC0._QE8 exit")\n
end;

into method label _QE9 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE9 enter")\n
%1\n
\\rmdt.p1("EC0._QE9 exit")\n
end;

into method label _Q41 parent_label _SB.PCI0.LPCB.EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q41 enter")\n
%1\n
\\rmdt.p1("EC0._Q41 exit")\n
end;
You would need to modify such that they match your _Qxx methods in the EC. Then apply the patches to your DSDT.

 

You will need the RMDT device patch and ACPIDebug. See: https://github.com/RehabMan/OS-X-ACPI-Debug.

 

Press the keys... output will be in system.log. Once you know which _Qxx methods are called for each of your brightness up/down keys, you can implement a patch to push keystrokes into the driver. Mine were at _Q90 and _Q91, so I implemented these patches:

 

# Make EC-based brightness up/down work with RehabMan VoodooPS2 ACPI keyboard mechanism
into method label _Q90 parent_label EC0 replace_content
begin
    // Dell code for brightness up\n
    Notify (PS2K, 0x0206)\n
    Notify (PS2K, 0x0286)\n
end;

into method label _Q91 parent_label EC0 replace_content
begin
    // Dell code for brightness down\n
    Notify (PS2K, 0x0205)\n
    Notify (PS2K, 0x0285)\n
end;
Your keyboard is a little different in that the keys generate a ps2 code, but same code for the two separate keys. Hopefully each key generates a different EC query.

 

Let me know what you find out... I don't have the Envy any more, but am curious as to what the result is.

Share this post


Link to post
Share on other sites
@gygabyte666,

 

If you want to see if you can make actual brightness keys work... I've implemented a new feature in the latest build of my VoodooPS2 keyboard driver. It allows you to push keystrokes from ACPI. This allows you to turn ACPI keys into normal keys delivered as if they were PS2 keys.

 

To use it, you need to find out what code in DSDT is called when the keys are pressed.

 

 

Your first step would be to determine which EC query methods are called when you press the keys. A handy way is to instrument all _Qxx methods, then press the keys.

 

On my Lenovo U430, I instrumented all the EC query methods:

# instrument EC query methods
into method label _Q09 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q09 enter")\n
%1\n
\\rmdt.p1("EC0._Q09 exit")\n
end;

into method label _Q26 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q26 enter")\n
%1\n
\\rmdt.p1("EC0._Q26 exit")\n
end;

into method label _Q27 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q27 enter")\n
%1\n
\\rmdt.p1("EC0._Q27 exit")\n
end;

into method label _Q27 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q27 enter")\n
%1\n
\\rmdt.p1("EC0._Q27 exit")\n
end;

into method label _Q60 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q60 enter")\n
%1\n
\\rmdt.p1("EC0._Q60 exit")\n
end;

into method label _Q69 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q69 enter")\n
%1\n
\\rmdt.p1("EC0._Q69 exit")\n
end;

into method label _Q70 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q70 enter")\n
%1\n
\\rmdt.p1("EC0._Q70 exit")\n
end;

into method label _Q71 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q71 enter")\n
%1\n
\\rmdt.p1("EC0._Q71 exit")\n
end;

into method label _Q8F parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q8F enter")\n
%1\n
\\rmdt.p1("EC0._Q8F exit")\n
end;

into method label _Q90 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q90 enter")\n
%1\n
\\rmdt.p1("EC0._Q90 exit")\n
end;

into method label _Q91 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q91 enter")\n
%1\n
\\rmdt.p1("EC0._Q91 exit")\n
end;

into method label _Q92 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q92 enter")\n
%1\n
\\rmdt.p1("EC0._Q92 exit")\n
end;

into method label _Q93 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q93 enter")\n
%1\n
\\rmdt.p1("EC0._Q93 exit")\n
end;

into method label _Q94 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q94 enter")\n
%1\n
\\rmdt.p1("EC0._Q94 exit")\n
end;

into method label _QE0 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE0 enter")\n
%1\n
\\rmdt.p1("EC0._QE0 exit")\n
end;

into method label _QE2 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE2 enter")\n
%1\n
\\rmdt.p1("EC0._QE2 exit")\n
end;

into method label _QE4 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE4 enter")\n
%1\n
\\rmdt.p1("EC0._QE4 exit")\n
end;

into method label _QE5 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE5 enter")\n
%1\n
\\rmdt.p1("EC0._QE5 exit")\n
end;

into method label _QE6 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE6 enter")\n
%1\n
\\rmdt.p1("EC0._QE6 exit")\n
end;

into method label _QE7 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE7 enter")\n
%1\n
\\rmdt.p1("EC0._QE7 exit")\n
end;

into method label _QE8 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE8 enter")\n
%1\n
\\rmdt.p1("EC0._QE8 exit")\n
end;

into method label _QE9 parent_label EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._QE9 enter")\n
%1\n
\\rmdt.p1("EC0._QE9 exit")\n
end;

into method label _Q41 parent_label _SB.PCI0.LPCB.EC0 code_regex ([\s\S]*) replace_matched
begin
\\rmdt.p1("EC0._Q41 enter")\n
%1\n
\\rmdt.p1("EC0._Q41 exit")\n
end;
You would need to modify such that they match your _Qxx methods in the EC. Then apply the patches to your DSDT.

 

You will need the RMDT device patch and ACPIDebug. See: https://github.com/RehabMan/OS-X-ACPI-Debug.

 

Press the keys... output will be in system.log. Once you know which _Qxx methods are called for each of your brightness up/down keys, you can implement a patch to push keystrokes into the driver. Mine were at _Q90 and _Q91, so I implemented these patches:

 

# Make EC-based brightness up/down work with RehabMan VoodooPS2 ACPI keyboard mechanism
into method label _Q90 parent_label EC0 replace_content
begin
    // Dell code for brightness up\n
    Notify (PS2K, 0x0206)\n
    Notify (PS2K, 0x0286)\n
end;

into method label _Q91 parent_label EC0 replace_content
begin
    // Dell code for brightness down\n
    Notify (PS2K, 0x0205)\n
    Notify (PS2K, 0x0285)\n
end;
Your keyboard is a little different in that the keys generate a ps2 code, but same code for the two separate keys. Hopefully each key generates a different EC query.

 

Let me know what you find out... I don't have the Envy any more, but am curious as to what the result is.

 

Thanks for the info. I will look into this and report back.

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

  • Recently Browsing   0 members

    No registered users viewing this page.

Announcements

  • Similar Content

    • By tonyx86
      **********************************************************************************
      In this thread, I have fully documented the installation of macOS Catalina on my HP EliteDesk 800 G4 Mini. It is a PERFECT HackMini8,1 and is running very well for me without any issues. I hope this documentation helps you to install macOS on your hack. Please leave feedback if you think there is anything I can improve and let me know if you have any questions.
      **********************************************************************************
       
      Background
      This is my first "modern" hack supporting UEFI and my first hack using Clover "on-the-fly" patches.  My previous hacks
      Laptop: Thinkpad T61 / Nvidia NVS 140m Laptop: Dell Latitude E6410 / Nvidia G3100m Desktop: Gigabyte G31 / GeForce 9600 Desktop: Biostar TH55HD / Sapphire Pulse RX580 (Google "Catalina Biostar TH55HD" and look for user name deeveedee)  
      are all perfectly running Catalina and I patched them all "manually" - all DSDT patches applied with MaciSL with virtually no Clover on-the-fly patching and all booted Legacy Clover.  This UEFI hack was MUCH easier and took about 20 hours vs. a combined hundreds of hours for the old hacks.  I wanted a hack that was a little more future proof and I think this is it.  I hope you enjoy this as much as I am enjoying it.  It is a perfect MacMini8,1.
       

       
      My system specs
      HP EliteDesk 800 G4 Mini (I7-8700T / UHD 630 / Q370 Chipset / 32GB DDR4 RAM) 3 x DP Ports (connected to monitors using DP -> DVI adapters) 6 x USB 3.1 1 x USB Type-C 3.1 2 x NVMe SSD (M.2 PCIe x4 2280/2230 combo ports) 1 x SATA6 SSD 1 x Intel Ethernet RJ-45 Conexant CX20632 Audio Codec Unsupported M.2 PCIe x1 2230 Intel Wi-Fi (currently disabled in BIOS).  I may replace this with Brcm, but am using only Ethernet (IntelMausi) for now.  
      macOS Installation
      See macOS installation steps here See CLOVER (UEFI) installation later in this first post
      See BIOS configuration in attached BIOS configuration PDF document
      See EFI and /L/E kexts in attached EliteDesk.zip archive See how I developed my installation methodology here See references here See instructions here for installing two M.2 2280 NVMe SSDs and one SATA HD / SSD  
      What is not working
      Wi-Fi / Bluetooth (intentional since I have not yet replaced my Intel card).  
      What is not tested
      USB c 3.1 port (I have partially tested the USB 3 functionality of the port and it seems to be working fine with the SSDT-UIAC.aml here) Microphone port  
      What is working
      Everything not mentioned above Sleep / Wake Multiple displays with IGPU graphics acceleration, hot pluggable display ports and DP->DVI adapters USB 3.1 ports Audio (internal speaker and headphone jack) Ethernet Auto-sensing headphone jack automatically switches to internal speaker when headphones removed  
      Known Issues and their solutions - see here
       
      BIOS Version / Configuration
      Version: 02.11.01 Rev.A See attached BIOS configuration in PDF document "HP EliteDesk 800 G4 Mini BIOS Configuration.pdf" Intel ME must be enabled for proper sleep / wake of UHD 630
       
      Clover Configuration
      Clover for UEFI booting only Install Clover in the ESP UEFI Drivers Recommended drivers DataHubDxe FSInject SMCHelper File System drivers ApfsDriverLoader VBoxHfs Memory fix drivers AptioMemoryFix Additional drivers NvmExpressDxe Install RC scripts on target volume Themes Choose your desired theme Install Clover Preference Pane (option not available when installing on USB thumb drive)  
      UHD 630 Framebuffer Patching
      See here and here  
      Current Versions
      Catalina 10.15.5.02 Clover (UEFI) r5119 Lilu.kext 1.4.5 WhateverGreen.kext 1.4.0 AppleALC.kext 1.5.0 IntelMausi 1.0.3 (Not IntelMausiEthernet)  
      Credits To be provided
       
       







      HP EliteDesk 800 G4 Mini BIOS Configuration.pdf
      EliteDesk800 G4 Mini - Rev 0.91.zip
    • By Fantome1S
      Finaly Success to boot on Sierra 10.12.6 (16G29) with Touchscreen working theres still things to fix but everything is almost working. During the Corvid StayAtHome Period I was able and have time to make this laptop boot on MacOS after a lot of attemps before going back to job. It was the hardest laptop hackintosh install attemp i've done so far and Sierra OS is the only that works. I tried El Capitan and Mojave and its never boot so I not even tested Catalina. I searched on the web and theres no install guide for this specific laptop or no Success install post on this laptop its look like a not very well supported laptop by hackintosh. Maybe some of you can help me correct the things that still not work. Audio work but with voodo (low sound and low quality) I want to make it work with AppleALC to get better quality sound. Thanks in advance
       
      Things that work:
       
      -Touchscreen
      -Trackpad (not the gesture for now) - Backlight Keyboard
      -EthernetPort and Wireless (with a wifi dongle. I will change to a broadcom wifi mini-pci chip)
      -Brightness Controls with FN key
      -Audio Voodoo ''low sound'' (will tried to change to AppleALC or AppleHDA fix method) 
      -USB 3.0
       
      Things that not work or need to be fixed:
       
      -Weird double long booting screen-first loading bar on the right. after real loading bar is visible ?
      -Audio (Voodoo) work but with low volume sound- still not success to make work AppleALC.kext method
      -SENSORS -CPU-HDD Temperatures, BATTERY LEVEL, ETC…
      - Sleep (Disabled): USB ports not works after wake from sleep
      -Trackpad Gestures
       
      Hardware:
       
      CPU: Intel Core i7-3687U, 2100 MHz
      GPU: Intel HD Graphics 4000
      RAM: 12 GB (4GB soldered + 8 GB Samsung DDR3 1600)
      Motherboard/Laptop model: Intel Panther Point QM77, Intel Ivy Bridge - (HP Revolve 810 G1)
      Audio Codec: IDT 92HD91BXX @ Intel Panther Point PCH - High Definition Audio Controller
      Ethernet Card: Intel(R) 82579LM Gigabit Network Connection
      Wifi/BT Card: Intel(R) Centrino(R) Advanced-N 6235
      HP hs2350 HSPA+ MobileBroadband Network Adapter
    • By Donw35
      Catalina update 10.15.5 without issues, make sure you update your kexts before hand and clover 5118
      Catalina update 10.15.4 without issues, make sure you update your kexts before hand and clover 5107
      Catalina update 10.15.3 without issues, make sure you update your kexts before hand.
      Catalina update 10.15.2 without issues, make sure you update your kexts before hand.
      Catalina update 10.15.1 without issue although you may have to make sure clover boots from the right partition.
      HP 840 G2/G3, working with OS X 10.15 Catalina, for this to work you will need the SSDT-ECUSBX.aml and place that  EFI/CLOVER/ACPI/Patched. 
      Make sure you remove Remove all patches about renaming acpi of EC or H_EC, revert all ACPI renaming in ACPI DSDT.
       
      My method to install OS X on the SSD from a working real Mac via SSD to USB converter. I then install Clover and add my kexts and set the config.plist
       
      Not working
      SD Card reader
      Finger Print device
       
      Working
      Video - screen looks better in OS X then it does in Windows 10
      Display port
      VGA port
      WiFi and BlueTooth working OOO using the below hack
      Battery status with Rehabman's DSDT patch
      Brightness controls
      Sounds - using VoodooHDA
      * Microphone - cannot turn it off or mute
      Keyboard backlight - controlled though BIOS anyways
      touchpad - using VoodooPS2Controller
      USB3 - this laptop has two on board only and I haven't test them using the docking station
      USB3.1 C
      Ethernet - using IntelMausiEthernet
      Sleep - kind of, closing the lid doesn't go to sleep but goes to sleep over time.
      Web Cam, works but I covered it up.
       
       

       
      SSDT-ECUSBX.aml
      CLOVER.zip
      CLOVER_HP_840_G3_02032020.zip
    • By mavifree
      Sir 
      I am new in this, i try to make my hp laptop in hackintosh but i facing some error in clover boot manager while installing but unable to understand it. I really try hard but not able to get there, something i noticed that i facing same kind of error every time. I just watched youtube and visitied so forum like tonymac86, InsanelyMac, Noobsplanate and so on but nothing solved. So Please Please I Request All of You If you can help me to resolve my problem.
      Here Is my Laptop Specs:
      --------------------------------------------------------------------
      Laptop : HP cs2082tx
      Mobo : HP84C1
      Southbridge : Coffee Lake-U/Y PCH
      CPU : Intel Core i5 8265U @ 1.60GHz Kaby Lake- U/Y
      Ram : 8 Gb
      HDD : 256GB SSD & 1TB HDD
      Graphics : Intel UHD Graphic 620 with nvidia MX250
      ----------------------------------------------------------------------
       
      I even don't is my laptop is compatible or not, and don't have MacBook or Mac Desktop so if you can provide important driver and other stuff for installation. I really be very thankful to you.
      Please Reply me if any other information about my laptop hardware i will attached it i only have this info right now. 
       
      and i here attached my screenshot while installation error in clover.
      Sorry for my English.
       
      Please Help Me 
       



×