Jump to content

EAPD/Jack sense Fix (No sound and jack sense issue after sleep)


EMlyDinEsH

Recommended Posts

I'm working on a fix as i got the issue. EAPDHIKeyboardDevice is meant for jack sense fix in old versions  (still keeping it as reference and might be useful in some cases for some one) to simulate Mute/Un-mute bezel pop up to start the audio stream.

 

EDIT: Check your PM for beta test please.

I just PM'ed you.

Tried your Debug#5 version in /L/E and it works.

Audio OK on boot and after sleep.

It seems to fail finding some object in AppleHDA. Check logs I sent. Thanks.

Link to comment
Share on other sites

The script worked for me "Ga-Z97X-UD5H" I was using CodecCommander previously, which gave me sound after sleep 1 out of 10 times the rest of the times it was like a "loose jack sound"

 My computer did crash during sleep last night, but hasnt crashed when i turn the sleep off. If it crash's again I will post my systemLog and my codec dump.

 

 Thanks for the coding  :)

Link to comment
Share on other sites

The script worked for me "Ga-Z97X-UD5H" I was using CodecCommander previously, which gave me sound after sleep 1 out of 10 times the rest of the times it was like a "loose jack sound"

 My computer did crash during sleep last night, but hasnt crashed when i turn the sleep off. If it crash's again I will post my systemLog and my codec dump.

 

 Thanks for the coding   :)

 

PM me for beta testing new version please as i've improved support for Desktop codec in that.

Link to comment
Share on other sites

Hi all,

 

Finally I found that topic that might help me with my sound issues:

 

-  SpeakerSound sometimes disappears out of nowhere (This usually happens, when I do not use sound for a longer time (like watching something on youtube) and when I switch fast from one song to another song) -> this can be fixed when I let the machine sleep and wake again

 

-jacksense sometimes work and sometimes not (you connect your headphone and the os does not recognise it, it just says I am still on internal speakers (It helps when you let the machine sleep and wake again)

 

It seems like your kext may fix that issue, I have some questions:

 

I have a linux codec dump and there are really a lot of nodes, the only one I could recognise for 100% is the headphone, my question:

 

Can you help me to identify my nodes of my codec dump?

 

EDIT

I think I managed to find the right nodes ;) testing the kext right now. Thanks for the great work!!

Link to comment
Share on other sites

Hi

 

I'm unable to get EAPDFix working with HDEFAddress: 1F,3

 

That is the address reported by IOJones (Colossus.zip) and HDEF is present at 0x001F0003 in DSDT.

 

From DSDT:

Device (HDEF)
        {
            Name (_ADR, 0x001F0003)
            OperationRegion (HDAR, PCI_Config, Zero, 0x0100)
            Field (HDAR, WordAcc, NoLock, Preserve)
            {
                VDID,   32, 
                        Offset (0x48), 
                    ,   6, 
                MBCG,   1, 
                        Offset (0x54), 
                        Offset (0x55), 
                PMEE,   1, 
                    ,   6, 
                PMES,   1
            }

            Name (_S0W, 0x03)
            Method (_DSW, 3, NotSerialized)
            {
                Store (Arg0, PMEE)
            }

            Method (_PRW, 0, NotSerialized)
            {
                Return (GPRW (0x6D, 0x04))
            }

            Method (GPEH, 0, NotSerialized)
            {
                If (LEqual (VDID, 0xFFFFFFFF))
                {
                    Return (Zero)
                }

                If (LAnd (PMEE, PMES))
                {
                    ADBG ("HDEF GPEH")
                    Store (One, PMES)
                    Notify (HDEF, 0x02)
                }
            }

            Name (NBUF, ResourceTemplate ()
            {
                QWordMemory (ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, NonCacheable, ReadOnly,
                    0x0000000000000001, // Granularity
                    0x0000000000000000, // Range Minimum
                    0x0000000000000000, // Range Maximum
                    0x0000000000000000, // Translation Offset
                    0x0000000000000000, // Length
                    ,, , AddressRangeACPI, TypeStatic)
            })
            Method (AUWA, 0, Serialized)
            {
                If (LEqual (PCHS, One))
                {
                    If (LEqual (^^LPCB.CRID, Zero))
                    {
                        Return (One)
                    }
                }
                Else
                {
                    If (LEqual (^^LPCB.CRID, Zero))
                    {
                        Return (One)
                    }

                    If (LEqual (^^LPCB.CRID, One))
                    {
                        Return (One)
                    }

                    If (LEqual (^^LPCB.CRID, 0x09))
                    {
                        Return (One)
                    }
                }

                Return (Zero)
            }

            Method (_INI, 0, NotSerialized)
            {
                ADBG ("HDEF _INI")
                If (LGreaterEqual (OSYS, 0x07D6))
                {
                    CreateQWordField (NBUF, 0x0E, NBAS)
                    CreateQWordField (NBUF, 0x16, NMAS)
                    CreateQWordField (NBUF, 0x26, NLEN)
                    Store (NHLA, NBAS)
                    Add (NHLA, Subtract (NHLL, One), NMAS)
                    Store (NHLL, NLEN)
                    If (LEqual (AUWA (), One))
                    {
                        Store (Zero, MBCG)
                    }
                }
            }

            Method (_DSM, 4, Serialized)
            {
                Name (_T_0, Zero)
                ADBG ("HDEF _DSM")
                If (PCIC (Arg0))
                {
                    Return (PCID (Arg0, Arg1, Arg2, Arg3))
                }

                If (LEqual (Arg0, Buffer (0x10)
                        {
                            /* 0000 */    0x6E, 0x88, 0x9F, 0xA6, 0xEB, 0x6C, 0x94, 0x45, 
                            /* 0008 */    0xA4, 0x1F, 0x7B, 0x5D, 0xCE, 0x24, 0xC5, 0x53
                        }))
                {
                    While (One)
                    {
                        Store (Arg2, _T_0)
                        If (LEqual (_T_0, Zero))
                        {
                            Return (Buffer (One)
                            {
                                0x0F
                            })
                        }
                        Else
                        {
                            If (LEqual (_T_0, One))
                            {
                                ADBG ("_DSM Fun 1 NHLT")
                                Return (NBUF)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x02))
                                {
                                    ADBG ("_DSM Fun 2 FMSK")
                                    Return (ADFM)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x03))
                                    {
                                        ADBG ("_DSM Fun 3 PPMS")
                                        Return (Zero)
                                    }
                                    Else
                                    {
                                        ADBG ("_DSM Fun NOK")
                                        Return (Buffer (One)
                                        {
                                            0x00
                                        })
                                    }
                                }
                            }
                        }

                        Break
                    }
                }

                ADBG ("_DSM UUID NOK")
            }
        }

 

My config in EAPDFix.kext:

<key>LaptopCodecValues</key>
<dict>
	<key>ExternalMic</key>
	<integer>25</integer>
	<key>Headphones</key>
	<integer>27</integer>
	<key>HpHasEAPD</key>
	<true/>
	<key>InternalMic</key>
	<integer>24</integer>
	<key>Speakers</key>
	<integer>20</integer>
	<key>SpkHasEAPD</key>
	<true/>
</dict>
<key>Preferences</key>
<dict>
	<key>BootFixDelay</key>
	<integer>30000</integer>
	<key>CodecAddress</key>
	<integer>0</integer>
	<key>FixType</key>
	<integer>1</integer>
	<key>HDEFAddress</key>
	<string>1F,3</string>
	<key>JackSenseFix</key>
	<false/>
	<key>SkipBootBgCheck</key>
	<true/>
	<key>SleepFixDelay</key>
	<integer>1500</integer>
	<key>StatusCheckInterval</key>
	<integer>1500</integer>
	<key>VerbSendCount</key>
	<integer>2</integer>
</dict>

This is all on a GA-Z170X-UD3 (ALC1150)

Link to comment
Share on other sites

Hi

 

I'm unable to get EAPDFix working with HDEFAddress: 1F,3

 

That is the address reported by IOJones (attachicon.gifColossus.zip) and HDEF is present at 0x001F0003 in DSDT.

 

From DSDT:

Device (HDEF)
        {
            Name (_ADR, 0x001F0003)
            OperationRegion (HDAR, PCI_Config, Zero, 0x0100)
            Field (HDAR, WordAcc, NoLock, Preserve)
            {
                VDID,   32, 
                        Offset (0x48), 
                    ,   6, 
                MBCG,   1, 
                        Offset (0x54), 
                        Offset (0x55), 
                PMEE,   1, 
                    ,   6, 
                PMES,   1
            }

            Name (_S0W, 0x03)
            Method (_DSW, 3, NotSerialized)
            {
                Store (Arg0, PMEE)
            }

            Method (_PRW, 0, NotSerialized)
            {
                Return (GPRW (0x6D, 0x04))
            }

            Method (GPEH, 0, NotSerialized)
            {
                If (LEqual (VDID, 0xFFFFFFFF))
                {
                    Return (Zero)
                }

                If (LAnd (PMEE, PMES))
                {
                    ADBG ("HDEF GPEH")
                    Store (One, PMES)
                    Notify (HDEF, 0x02)
                }
            }

            Name (NBUF, ResourceTemplate ()
            {
                QWordMemory (ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, NonCacheable, ReadOnly,
                    0x0000000000000001, // Granularity
                    0x0000000000000000, // Range Minimum
                    0x0000000000000000, // Range Maximum
                    0x0000000000000000, // Translation Offset
                    0x0000000000000000, // Length
                    ,, , AddressRangeACPI, TypeStatic)
            })
            Method (AUWA, 0, Serialized)
            {
                If (LEqual (PCHS, One))
                {
                    If (LEqual (^^LPCB.CRID, Zero))
                    {
                        Return (One)
                    }
                }
                Else
                {
                    If (LEqual (^^LPCB.CRID, Zero))
                    {
                        Return (One)
                    }

                    If (LEqual (^^LPCB.CRID, One))
                    {
                        Return (One)
                    }

                    If (LEqual (^^LPCB.CRID, 0x09))
                    {
                        Return (One)
                    }
                }

                Return (Zero)
            }

            Method (_INI, 0, NotSerialized)
            {
                ADBG ("HDEF _INI")
                If (LGreaterEqual (OSYS, 0x07D6))
                {
                    CreateQWordField (NBUF, 0x0E, NBAS)
                    CreateQWordField (NBUF, 0x16, NMAS)
                    CreateQWordField (NBUF, 0x26, NLEN)
                    Store (NHLA, NBAS)
                    Add (NHLA, Subtract (NHLL, One), NMAS)
                    Store (NHLL, NLEN)
                    If (LEqual (AUWA (), One))
                    {
                        Store (Zero, MBCG)
                    }
                }
            }

            Method (_DSM, 4, Serialized)
            {
                Name (_T_0, Zero)
                ADBG ("HDEF _DSM")
                If (PCIC (Arg0))
                {
                    Return (PCID (Arg0, Arg1, Arg2, Arg3))
                }

                If (LEqual (Arg0, Buffer (0x10)
                        {
                            /* 0000 */    0x6E, 0x88, 0x9F, 0xA6, 0xEB, 0x6C, 0x94, 0x45, 
                            /* 0008 */    0xA4, 0x1F, 0x7B, 0x5D, 0xCE, 0x24, 0xC5, 0x53
                        }))
                {
                    While (One)
                    {
                        Store (Arg2, _T_0)
                        If (LEqual (_T_0, Zero))
                        {
                            Return (Buffer (One)
                            {
                                0x0F
                            })
                        }
                        Else
                        {
                            If (LEqual (_T_0, One))
                            {
                                ADBG ("_DSM Fun 1 NHLT")
                                Return (NBUF)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x02))
                                {
                                    ADBG ("_DSM Fun 2 FMSK")
                                    Return (ADFM)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x03))
                                    {
                                        ADBG ("_DSM Fun 3 PPMS")
                                        Return (Zero)
                                    }
                                    Else
                                    {
                                        ADBG ("_DSM Fun NOK")
                                        Return (Buffer (One)
                                        {
                                            0x00
                                        })
                                    }
                                }
                            }
                        }

                        Break
                    }
                }

                ADBG ("_DSM UUID NOK")
            }
        }

 

My config in EAPDFix.kext:

<key>LaptopCodecValues</key>
<dict>
	<key>ExternalMic</key>
	<integer>25</integer>
	<key>Headphones</key>
	<integer>27</integer>
	<key>HpHasEAPD</key>
	<true/>
	<key>InternalMic</key>
	<integer>24</integer>
	<key>Speakers</key>
	<integer>20</integer>
	<key>SpkHasEAPD</key>
	<true/>
</dict>
<key>Preferences</key>
<dict>
	<key>BootFixDelay</key>
	<integer>30000</integer>
	<key>CodecAddress</key>
	<integer>0</integer>
	<key>FixType</key>
	<integer>1</integer>
	<key>HDEFAddress</key>
	<string>1F,3</string>
	<key>JackSenseFix</key>
	<false/>
	<key>SkipBootBgCheck</key>
	<true/>
	<key>SleepFixDelay</key>
	<integer>1500</integer>
	<key>StatusCheckInterval</key>
	<integer>1500</integer>
	<key>VerbSendCount</key>
	<integer>2</integer>
</dict>

This is all on a GA-Z170X-UD3 (ALC1150)

 

Sorry for late reply. I have added support for skylake chipsets in version 2.3.5. Please try and let me know. 

 

Thanks

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...