Jump to content

Bluetooth Device is not detecting after using only DSDT (Also need to disable EC0)


Recommended Posts

Hi @MaLd0n,

Thank you for your Fully Patched DSDT. It fixed so many things on my hackintosh.

But Bluetooth Device is not detecting after using you DSDT. (I have followed your USB Patching Video Guide (USBPorts.kext) which you have added on 4th August)

I searched on Internet regarding this and found that I need to use SSDT-EC-USBX.aml.

I checked your DSDT and found that you have already added USBX and Device(EC) in my DSDT.

I figure out that, in my case bluetooth is only detected only if I disable EC0 using SSDT-EC.aml.

Please find the attached SSDT-EC.aml and USBPorts.kext file.SSDT-EC.amlUSBPorts.zip

I have also created RunMe file for both cases (With and without SSDT-EC.aml). Please find below the links of RunMe files.

Bluetooth Detecting/Working (DSDT + SSDT-EC.aml): https://wetransfer.com/downloads/86315a96f05dec4fff63e891bdb5162b20200813065359/22d38a/grid

Bluetooth not Detecting/Working (Only DSDT): https://wetransfer.com/downloads/9f11152228836ec5ce06168cced6de0620200813092704/a03985/grid

Could you please add SSDT-EC.aml thing in my patched DSDT. 🙂

Or is there any other way available.

Note: After using SSDT-EC.aml, battery status is not updating instantly (update after 30-40sec, if plug and unplug power source from my laptop).

[Battery Status is working fine by using only DSDT].

Please HELP!!!!!!! 🙏

 

Thank you very much for your work. 🙂

Edited by Vijay Kumar Vishwakarma
Link to post
Share on other sites
5 hours ago, MaLd0n said:

start from zero with ec0 to ec and _sta rtc fix with no dsdt/ssdt

System booted with EC0 to EC and _STA RTC Fix [No DSDT/SSDT]. 🤩

But Bluetooth is not detected in this case too. 😔

RunMe file: https://filebin.net/1c8z1zvbbtpgbrff

Note: While playing with my system, I have noted some points which may help you to figure out the problem/solution:

  1. If the below code is executed (code under EC0), bluetooth not detected, if I disable EC0 with Method (_STA), bluetooth detected.
  2. In case of EC0 disabled, bluetooth detect only if I first boot Windows 10. After that, macOS Big Sur.

In my opinion, some code under EC0 is restricting Bluetooth to enable. [Need to remove if possible].

        Device (EC0)
        {
            Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */)  // _HID: Hardware ID
            Name (_GPE, 0x14)  // _GPE: General Purpose Events
            Name (OKEC, One)
            Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
            {
                IO (Decode16,
                    0x0062,             // Range Minimum
                    0x0062,             // Range Maximum
                    0x01,               // Alignment
                    0x01,               // Length
                    )
                IO (Decode16,
                    0x0066,             // Range Minimum
                    0x0066,             // Range Maximum
                    0x01,               // Alignment
                    0x01,               // Length
                    )
            })
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If ((Arg0 == 0x03))
                {
                    OKEC = Arg1
                    OSTP ()
                    ECFG (One)
                    MSFG = (S0ID & One)
                    PBOV = (PB1E & One)
                }
            }

            OperationRegion (ECMM, SystemMemory, 0xFC7E0800, 0x1000)
            Field (ECMM, AnyAcc, Lock, Preserve)
            {
                CDPR,   1, 
                LCDS,   1, 
                    ,   5, 
                ISEN,   1, 
                HTBN,   8, 
                HTBT,   8, 
                LMEN,   1, 
                    ,   4, 
                RFEN,   1, 
                Offset (0x04), 
                ADAP,   3, 
                Offset (0x05), 
                CORE,   2, 
                Offset (0x06), 
                Offset (0x07), 
                    ,   5, 
                IOAC,   1, 
                PTPS,   1, 
                Offset (0x08), 
                Offset (0x0A), 
                DNLV,   8, 
                Offset (0x0D), 
                GC6F,   1, 
                NGPS,   1, 
                Offset (0x13), 
                C1FR,   16, 
                G1FR,   16, 
                Offset (0x20), 
                DNBF,   1, 
                    ,   2, 
                BBMS,   1, 
                    ,   3, 
                Offset (0x2A), 
                S1TV,   8, 
                Offset (0x2D), 
                DISM,   1, 
                Offset (0x2E), 
                CLCD,   1, 
                Offset (0x30), 
                    ,   7, 
                WAMK,   1, 
                KBLK,   1, 
                Offset (0x32), 
                DSTP,   8, 
                RH2T,   8, 
                RH1T,   8, 
                Offset (0x3B), 
                ALTO,   1, 
                HSAS,   1, 
                Offset (0x3E), 
                GPUE,   1, 
                VGAO,   1, 
                GC6O,   1, 
                    ,   1, 
                    ,   1, 
                    ,   1, 
                    ,   1, 
                Offset (0x3F), 
                FCTR,   1, 
                FCMP,   1, 
                PWOK,   1, 
                Offset (0x40), 
                GPUD,   1, 
                Offset (0x41), 
                BNEI,   1, 
                Offset (0x42), 
                BNEO,   1, 
                Offset (0x43), 
                Offset (0x5D), 
                ERIB,   16, 
                Offset (0x61), 
                SMST,   8, 
                SMAD,   8, 
                SMCM,   8, 
                SMD0,   256, 
                BCNT,   8, 
                SMAA,   24, 
                SMBN,   8, 
                Offset (0xA0), 
                Offset (0xA1), 
                    ,   1, 
                VIDO,   1, 
                TOUP,   1, 
                Offset (0xA2), 
                ODTS,   8, 
                OSTY,   4, 
                    ,   1, 
                PBOV,   1, 
                ECRD,   1, 
                ADPT,   1, 
                PWAK,   1, 
                MWAK,   1, 
                LWAK,   1, 
                RWAK,   1, 
                WWAK,   1, 
                UWAK,   1, 
                KWAK,   1, 
                TWAK,   1, 
                CCAC,   1, 
                AOAC,   1, 
                BLAC,   1, 
                PSRC,   1, 
                BOAC,   1, 
                LCAC,   1, 
                AAAC,   1, 
                ACAC,   1, 
                S3ST,   1, 
                S3RM,   1, 
                S4ST,   1, 
                S4RM,   1, 
                S5ST,   1, 
                S5RM,   1, 
                CSST,   1, 
                CSRM,   1, 
                OSTT,   8, 
                OSST,   8, 
                THLT,   8, 
                TCNL,   8, 
                MODE,   1, 
                    ,   2, 
                INIT,   1, 
                FAN1,   1, 
                FAN2,   1, 
                FANT,   1, 
                SKNM,   1, 
                SDTM,   8, 
                FSSN,   4, 
                FANU,   4, 
                PCVL,   6, 
                SWTO,   1, 
                TTHR,   1, 
                TTHM,   1, 
                THTL,   1, 
                TFCT,   1, 
                NPST,   5, 
                CTMP,   8, 
                CTML,   8, 
                EST3,   8, 
                SKTB,   8, 
                SKTC,   8, 
                DPOT,   8, 
                EST1,   8, 
                EST2,   8, 
                    ,   1, 
                LIDF,   1, 
                PMEE,   1, 
                PWBE,   1, 
                RNGE,   1, 
                BTWE,   1, 
                Offset (0xB9), 
                BRTS,   8, 
                S35M,   1, 
                S35S,   1, 
                    ,   1, 
                MSFG,   1, 
                FFEN,   1, 
                FFST,   1, 
                Offset (0xBB), 
                WLAT,   1, 
                BTAT,   1, 
                WLEX,   1, 
                BTEX,   1, 
                KLSW,   1, 
                WLOK,   1, 
                AT3G,   1, 
                EX3G,   1, 
                PJID,   8, 
                CPUJ,   3, 
                CPNM,   3, 
                GATY,   2, 
                Offset (0xC0), 
                BTY0,   1, 
                BAM0,   1, 
                BAL0,   1, 
                    ,   1, 
                BMF0,   4, 
                BST0,   8, 
                BRC0,   16, 
                BSN0,   16, 
                BPV0,   16, 
                BDV0,   16, 
                BDC0,   16, 
                BFC0,   16, 
                GAU0,   8, 
                BAT0,   8, 
                BPC0,   16, 
                BAC0,   16, 
                BCG0,   16, 
                BFCB,   16, 
                BTPB,   16, 
                BOL0,   1, 
                BFS0,   1, 
                Offset (0xDB), 
                ORRF,   1, 
                Offset (0xDC), 
                Offset (0xDD)
            }

            OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
            Field (ERAM, ByteAcc, Lock, Preserve)
            {
                Offset (0x5F), 
                ERBD,   8, 
                SMPR,   8, 
                Offset (0x62)
            }

            OperationRegion (CCLK, SystemIO, 0x1810, 0x04)
            Field (CCLK, DWordAcc, NoLock, Preserve)
            {
                    ,   1, 
                DUTY,   3, 
                THEN,   1, 
                Offset (0x01), 
                FTT,    1, 
                    ,   8, 
                TSTS,   1
            }

            Method (FANG, 1, NotSerialized)
            {
                Local0 = EIDR (Arg0)
                Return (Local0)
            }

            Method (FANW, 2, NotSerialized)
            {
                EIDW (Arg0, Arg1)
                Return (Arg1)
            }

            Method (TUVR, 1, NotSerialized)
            {
                Return (0x05)
            }

            Method (THRO, 1, NotSerialized)
            {
                ITHR (Arg0)
            }

            Method (CLCK, 1, NotSerialized)
            {
                If ((Arg0 == Zero))
                {
                    THEN = Zero
                    FTT = Zero
                }
                Else
                {
                    DUTY = Arg0
                    THEN = One
                }

                Return (THEN) /* \_SB_.PCI0.LPCB.EC0_.THEN */
            }

            Method (PCLK, 0, NotSerialized)
            {
                IPCL ()
            }

            Method (ITHR, 1, NotSerialized)
            {
                If ((Arg0 == Zero))
                {
                    Return (0xFF)
                }
                ElseIf ((Arg0 == One))
                {
                    Return (DUTY) /* \_SB_.PCI0.LPCB.EC0_.DUTY */
                }
                ElseIf ((Arg0 == 0x02))
                {
                    Return (TTHR) /* \_SB_.PCI0.LPCB.EC0_.TTHR */
                }
                Else
                {
                    Return (0xFF)
                }
            }

            Method (IPCL, 0, NotSerialized)
            {
                Local0 = PCVL /* \_SB_.PCI0.LPCB.EC0_.PCVL */
                CPPC = Local0
                PNOT ()
            }

            Method (_Q11, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Notify (PS2K, 0x0405)
            }

            Method (_Q12, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Notify (PS2K, 0x0406)
            }

            Method (_Q37, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_37====="
                ^^^WMID.FEBC [Zero] = 0x08
                ^^^WMID.FEBC [One] = ADPT /* \_SB_.PCI0.LPCB.EC0_.ADPT */
                Notify (WMID, 0xBC) // Device-Specific
                Notify (ACAD, 0x80) // Status Change
                Sleep (0x03E8)
                Notify (BAT1, 0x80) // Status Change
                PWRS = ADPT /* \_SB_.PCI0.LPCB.EC0_.ADPT */
                POWS = ADPT /* \_SB_.PCI0.LPCB.EC0_.ADPT */
                PNOT ()
            }

            Method (_Q41, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====PROJECT_QUERY_41====="
                ^^^WMID.FEBC [Zero] = One
                ^^^WMID.FEBC [One] = 0x8A
                ^^^WMID.FEBC [0x02] = One
                Notify (WMID, 0xBC) // Device-Specific
            }

            Method (_Q44, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====PROJECT_QUERY_44====="
                If ((DNLV == One))
                {
                    Notify (^^^PEG0.PEGP, 0xD1) // Hardware-Specific
                }
                ElseIf ((DNLV == 0x02))
                {
                    Notify (^^^PEG0.PEGP, 0xD2) // Hardware-Specific
                }
                ElseIf ((DNLV == 0x03))
                {
                    Notify (^^^PEG0.PEGP, 0xD3) // Hardware-Specific
                }
                ElseIf ((DNLV == 0x04))
                {
                    Notify (^^^PEG0.PEGP, 0xD4) // Hardware-Specific
                }
                ElseIf ((DNLV == 0x05))
                {
                    Notify (^^^PEG0.PEGP, 0xD5) // Hardware-Specific
                }
                Else
                {
                    Notify (^^^PEG0.PEGP, 0xD1) // Hardware-Specific
                }
            }

            Method (_Q45, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                ^^^WMID.FEBC [Zero] = One
                ^^^WMID.FEBC [One] = HTBN /* \_SB_.PCI0.LPCB.EC0_.HTBN */
                Notify (WMID, 0xBC) // Device-Specific
            }

            Method (_Q46, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                ^^^WMID.FEBC [Zero] = 0x02
                ^^^WMID.FEBC [One] = HTBN /* \_SB_.PCI0.LPCB.EC0_.HTBN */
                Notify (WMID, 0xBC) // Device-Specific
            }

            Method (_Q48, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                SGOV (0x03010001, Zero)
            }

            Method (_Q49, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                SGOV (0x03010004, One)
            }

            Method (_Q4C, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                SMID = 0x4C
                SMIC = 0xB2
                Stall (0xFF)
                Stall (0xFF)
            }

            Method (_Q5A, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====PROJECT_QUERY_5A====="
                ^^^WMID.FEBC [Zero] = 0x09
                ^^^WMID.FEBC [One] = BBMS /* \_SB_.PCI0.LPCB.EC0_.BBMS */
                Notify (WMID, 0xBC) // Device-Specific
            }

            Method (_Q63, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Notify (AAMC, 0x80) // Status Change
            }

            OperationRegion (PRT0, SystemIO, 0x80, 0x04)
            Field (PRT0, ByteAcc, Lock, Preserve)
            {
                P80H,   8
            }

            Method (_Q10, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_Q15, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_15====="
                P80H = 0x15
                If (IGDS)
                {
                    Local0 = LIDF /* \_SB_.PCI0.LPCB.EC0_.LIDF */
                    Local0 = ~Local0
                    Local0 &= One
                    Local0 += 0x02
                    If (^^^GFX0.GLID (Local0))
                    {
                        ^^^GFX0.CLID |= 0x80000000
                    }
                }

                Notify (LID0, 0x80) // Status Change
            }

            Method (_Q1D, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_1D====="
                P80H = 0x1D
                PCLK ()
            }

            Method (_Q1E, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_1E====="
                P80H = 0x1E
                If (CTUR)
                {
                    If ((TFCT == Zero))
                    {
                        CSMI (0xDA, Zero)
                    }
                    Else
                    {
                        CSMI (0xDA, One)
                    }
                }
            }

            Method (_Q24, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_24====="
                P80H = 0x24
                Sleep (0x03E8)
                Notify (BAT1, 0x80) // Status Change
            }

            Method (_Q25, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Debug = "=====QUERY_25====="
                P80H = 0x25
                Sleep (0x03E8)
                Notify (BAT1, 0x81) // Information Change
                Sleep (0x03E8)
                Notify (BAT1, 0x80) // Status Change
            }

            Name (CTSL, Package (0x19)
            {
                0x10, 
                0x12, 
                0x13, 
                0x14, 
                0x15, 
                0x16, 
                0x17, 
                0x20, 
                0x21, 
                0x22, 
                0x24, 
                0x25, 
                0x26, 
                0x28, 
                0x90, 
                0x91, 
                0xFE, 
                0x92, 
                0x93, 
                0x94, 
                0x95, 
                0x96, 
                0x97, 
                0x98, 
                0x99
            })
            Mutex (CFMX, 0x00)
            Method (CFUN, 4, Serialized)
            {
                Name (ESRC, 0x05)
                If ((DerefOf (Arg0 [Zero]) == 0x15))
                {
                    CreateWordField (Arg1, Zero, SFUN)
                    If ((SFUN == 0x9001)){}
                    ElseIf ((SFUN == 0x9002))
                    {
                        STDT = Zero
                        BFDT = Zero
                        BFDT = Zero
                        STDT = One
                    }
                    ElseIf ((SFUN == 0x9000))
                    {
                        ESMC (Arg2)
                        If ((ESMS != 0xFF))
                        {
                            Local1 = Buffer (0x80){}
                            Local1 [Zero] = 0x80
                            Local1 [One] = ESMS /* \ESMS */
                            Local3 = ESMB /* \ESMB */
                            Local1 [0x02] = DerefOf (Local3 [Zero])
                            Local1 [0x03] = DerefOf (Local3 [One])
                            Local1 [0x04] = DerefOf (Local3 [0x02])
                            Local1 [0x05] = DerefOf (Local3 [0x03])
                            Local1 [0x06] = DerefOf (Local3 [0x04])
                            Local1 [0x07] = DerefOf (Local3 [0x05])
                            Local1 [0x08] = DerefOf (Local3 [0x06])
                            Local1 [0x09] = DerefOf (Local3 [0x07])
                            Local1 [0x0A] = DerefOf (Local3 [0x08])
                            Local1 [0x0B] = DerefOf (Local3 [0x09])
                            Local1 [0x0C] = DerefOf (Local3 [0x0A])
                            Local1 [0x0D] = DerefOf (Local3 [0x0B])
                            Local1 [0x0E] = DerefOf (Local3 [0x0C])
                            Local1 [0x0F] = DerefOf (Local3 [0x0D])
                            Local1 [0x10] = DerefOf (Local3 [0x0E])
                            Local1 [0x11] = DerefOf (Local3 [0x0F])
                            Local1 [0x12] = DerefOf (Local3 [0x10])
                            Local1 [0x13] = DerefOf (Local3 [0x11])
                            Local1 [0x14] = DerefOf (Local3 [0x12])
                            Local1 [0x15] = DerefOf (Local3 [0x13])
                            Local1 [0x16] = DerefOf (Local3 [0x14])
                            Local1 [0x17] = DerefOf (Local3 [0x15])
                            Local1 [0x18] = DerefOf (Local3 [0x16])
                            Local1 [0x19] = DerefOf (Local3 [0x17])
                            Local1 [0x1A] = DerefOf (Local3 [0x18])
                            Local1 [0x1B] = DerefOf (Local3 [0x19])
                            Local1 [0x1C] = DerefOf (Local3 [0x1A])
                            Local1 [0x1D] = DerefOf (Local3 [0x1B])
                            Local1 [0x1E] = DerefOf (Local3 [0x1C])
                            Local1 [0x1F] = DerefOf (Local3 [0x1D])
                            Local1 [0x20] = DerefOf (Local3 [0x1E])
                            Local1 [0x21] = DerefOf (Local3 [0x1F])
                            BFDT = Local1
                            STDT = One
                        }
                        Else
                        {
                            STDT = 0x8000
                        }
                    }
                    Else
                    {
                        SFNO = Arg1
                        BFDT = Arg2
                        CSMI (0xCE, Arg0)
                    }
                }
                ElseIf ((Match (CTSL, MEQ, DerefOf (Arg0 [Zero]), 
                    MTR, Zero, Zero) != Ones))
                {
                    SFNO = Arg1
                    BFDT = Arg2
                    CSMI (0xCE, Arg0)
                }
                Else
                {
                    STDT = 0x8000
                }
            }

            Name (OCSL, Package (0x03)
            {
                0x80, 
                0x81, 
                0x82
            })
            Method (PFUN, 4, Serialized)
            {
                SFNO = Arg1
                BFDT = Arg2
                CSMI (0xCF, Arg0)
                STDT = Zero
            }

            Method (CMFC, 4, Serialized)
            {
                Name (RTVL, Package (0x04)
                {
                    Zero, 
                    Zero, 
                    Zero, 
                    Zero
                })
                Debug = "=== In CMFC method ==="
                If ((ObjectType (Arg0) == One))
                {
                    RTVL [Zero] = 0x8000
                }
                ElseIf ((DerefOf (Arg0 [Zero]) < 0xFF))
                {
                    Local1 = Buffer (0x82){}
                    CreateWordField (Local1, Zero, RTST)
                    CreateField (Local1, 0x10, 0x0400, RTDT)
                    If (((ToInteger (Arg0) <= 0x8F) && (ToInteger (Arg0
                        ) >= 0x80)))
                    {
                        PFUN (Arg0, Arg1, Arg2, Arg3)
                    }
                    Else
                    {
                        CFUN (Arg0, Arg1, Arg2, Arg3)
                    }

                    RTST = STDT /* \STDT */
                    RTDT = BFDT /* \BFDT */
                    Return (Local1)
                }
                Else
                {
                    RTVL [Zero] = 0x8000
                }

                Return (RTVL) /* \_SB_.PCI0.LPCB.EC0_.CMFC.RTVL */
            }

            Mutex (FAMX, 0x00)
            Method (EIDR, 1, Serialized)
            {
                Acquire (FAMX, 0xFFFF)
                ERIB = Arg0
                Local0 = ERRD (0x5F)
                Release (FAMX)
                Return (Local0)
            }

            Method (EIDW, 2, Serialized)
            {
                Acquire (FAMX, 0xFFFF)
                ERIB = Arg0
                ERWT (0x5F, Arg1)
                Release (FAMX)
            }

            OperationRegion (ECCD, SystemMemory, 0xFC7E0800, 0x1000)
            Field (ECCD, AnyAcc, Lock, Preserve)
            {
                Offset (0x580), 
                Offset (0x582), 
                ECTB,   1, 
                ECTE,   1, 
                Offset (0x583), 
                ERN1,   8, 
                ERN2,   8, 
                ERN3,   8, 
                ERN4,   8, 
                ERN5,   8, 
                ERN6,   8, 
                ERN7,   8, 
                ERN8,   8, 
                ECMD,   8, 
                EDT1,   8, 
                EDT2,   8, 
                EDT3,   8, 
                EDT4,   8, 
                EDT5,   8, 
                    ,   1
            }

            Method (ERWT, 2, Serialized)
            {
                Local0 = Buffer (0x08){}
                Local0 [Zero] = 0xB1
                Local0 [One] = Arg0
                Local0 [0x02] = Arg1
                ERCD (Local0)
            }

            Method (ERRD, 1, Serialized)
            {
                Local0 = Buffer (0x08){}
                Local0 [Zero] = 0xB0
                Local0 [One] = Arg0
                Return (ERCD (Local0))
            }

            Mutex (CSMX, 0x00)
            Method (ERCD, 1, Serialized)
            {
                Acquire (CSMX, 0xFFFF)
                Name (ESRC, 0x64)
                ECTB = One
                ECMD = DerefOf (Arg0 [Zero])
                EDT1 = DerefOf (Arg0 [One])
                EDT2 = DerefOf (Arg0 [0x02])
                ECTE = One
                While (((ESRC != Zero) && (ECTE != Zero)))
                {
                    Sleep (0x0A)
                    ESRC -= One
                }

                Local0 = ERN1 /* \_SB_.PCI0.LPCB.EC0_.ERN1 */
                ECTB = Zero
                Release (CSMX)
                Return (Local0)
            }

            Method (SBAT, 2, NotSerialized)
            {
                Local0 = Buffer (0x08){}
                Local0 [Zero] = Arg0
                Local0 [One] = 0x16
                Local0 [0x02] = Arg1
                Local0 [0x03] = Zero
                Local0 [0x04] = Zero
                ESMC (Local0)
            }

            Method (SBA2, 2, NotSerialized)
            {
                Local0 = Buffer (0x08){}
                Local0 [Zero] = Arg0
                Local0 [One] = 0x36
                Local0 [0x02] = Arg1
                Local0 [0x03] = Zero
                Local0 [0x04] = Zero
                ESMC (Local0)
            }

            Mutex (ESCX, 0x00)
            Method (ESMC, 1, NotSerialized)
            {
                Acquire (ESCX, 0xFFFF)
                Name (ESRC, 0x05)
                SMD0 = Zero
                SMAD = DerefOf (Arg0 [One])
                SMCM = DerefOf (Arg0 [0x02])
                SMBN = DerefOf (Arg0 [0x03])
                Local4 = DerefOf (Arg0 [0x04])
                Local5 = Zero
                BCNT = Local4
                If ((Local4 != Zero))
                {
                    Local1 = SMD0 /* \_SB_.PCI0.LPCB.EC0_.SMD0 */
                    While (~(Local4 == Local5))
                    {
                        Local1 [Local5] = DerefOf (Arg0 [(0x05 + Local5)]
                            )
                        Local5 += One
                    }

                    SMD0 = Local1
                }

                SMPR = DerefOf (Arg0 [Zero])
                While ((~(ESRC == Zero) && ~((SMST & 0x80
                    ) == 0x80)))
                {
                    Sleep (0x14)
                    ESRC -= One
                }

                If ((SMST == 0x80))
                {
                    ESMB = SMD0 /* \_SB_.PCI0.LPCB.EC0_.SMD0 */
                    ESMS = BCNT /* \_SB_.PCI0.LPCB.EC0_.BCNT */
                }
                Else
                {
                    Debug = "====== Sent EC SMBus command time out. ======"
                    ESMS = 0xFF
                }

                Release (ESCX)
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If ((Arg2 == Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                             // .
                    })
                }

                Return (Package (0x02)
                {
                    "acpi-wake-gpe", 
                    0x6F
                })
            }

 

Link to post
Share on other sites
46 minutes ago, MaLd0n said:

DSDT.aml.zip 42.33 kB · 4 downloads

 

use usbinjectall with xhci port limit and check

No Luck still bluetooth not detecting (only detect if I disable EC (manufacturer) code)

RunMe link: https://filebin.net/o613wwzp90zv1jap

Note: I have already tried this, renaming EC0 to EC manually in DSDT.

I have tried all things as per my knowledge. 😭

Please Help to fix my bluetooth. 🙏

1 Query: What's the use of below code which is present under Device (EC):

OperationRegion (ECMM, SystemMemory, 0xFC7E0800, 0x1000)
Field (ECMM, AnyAcc, Lock, Preserve)
{
 ...
}

Thanks!

Edited by Vijay Kumar Vishwakarma
Added my Query
Link to post
Share on other sites
19 hours ago, MaLd0n said:

no idea what happens

Hi @MaLd0n,

Good News😄. Now, Bluetooth detected with Device (EC0) code enabled.

Actually, I have updated my BIOS from A25 to A26 Version.

Could you please patch my new DSDT file (extracted with only EC0 to EC rename)

Note: Please do not patch battery in DSDT file. Battery status is working fine. 

 

RunMe file: https://we.tl/t-DgL9ccOvar

Edited by Vijay Kumar Vishwakarma
Link to post
Share on other sites
3 hours ago, MaLd0n said:

Thanks a lot!

All things are working now even bluetooth with EC0 device enabled.☺️

But this DSDT broke my I2C Trackpad. 😭

Boot Error: 

VoodooI2CHIDDevice: :SYNA7D85 Could not find suitable _DSM or XDSM method in ACPI tables
VoodooI2CHIDDevice: :SYNA7D85 Could not get HID descriptor

I am using Latest version of VoodooI2C, VoodooI2CHID, VoodooInput and VoodooPS2Controller (VoodooPS2Keyboard & VoodooPS2Mouse only).

RunMe file: https://we.tl/t-b3lwhK8DcS

Edited by Vijay Kumar Vishwakarma
Added Boot Error
Link to post
Share on other sites
3 hours ago, MaLd0n said:

use VoodooI2CSynaptics.kext and add name SYNA7DB5

u dont need voodooinput, voodooi2c project have this plugin

Trackpad is still not working with VoodooI2CSynaptics.kext (added SYNA7DB5).

Kext Folder contains: VoodooI2C.kext, VoodooI2CHID.kext, and VoodooI2CSynaptics.kext.

Got this while booting:

ACPI Error: [_DSM] Namespace lookup failure, AE_ALREADY_EXISTS (20160930/dswload-462)
ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (20160930/psobject-310)
ACPI Exception: AE_ALREADY_EXISTS, (SSDT:ACRPRDCT) while loading table (20160930/tbxfload-319)
ACPI Error: 1 table load failures, 10 successful (20160930/tbxfload-342)

I think, there is something wrong in DSDT.

Previously, Trackpad was working fine with only VoodooI2c and VoodooI2CHID kexts using OLD DSDT (Old BIOS Version).

I have compared both DSDTs and found that:

New DSDT has no _DSM method under I2C but your old DSDT contains _DSM methods under I2C.

Is there any difference in this?

RunMe File: https://we.tl/t-R2koS1VGCd

Link to post
Share on other sites
3 hours ago, MaLd0n said:

Thank you for the DSDT 🙂

After adding this DSDT to ACPI folder, system starts normally (trackpad working) with below error codes.

But on 2nd boot onwards, trackpad is not working and system bootup time increases due to slow loading of bootup lines (Please Check Start & End Video (approx 30-40sec) in attached link).

This happens may be due to Kernel Panic, I got 🚫  icon on screen after 2min (check on attached [Video] End.mp4).

ACPI Error: [_DSM] Namespace lookup failure, AE_ALREADY_EXISTS (20160930/dswload-462)
ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (20160930/psobject-310)
ACPI Exception: AE_ALREADY_EXISTS, (SSDT:ACRPRDCT) while loading table (20160930/tbxfload-319)
ACPI Error: 1 table load failures, 10 successful (20160930/tbxfload-342)

I figure out why I am getting this ACPI Error.

My system's SSDT-9-ACRPRDCT.amlis conflicting with your patched DSDT.aml through _DSM Method (PEGP).

RunMe files and Videos link: https://we.tl/t-PI6hMWlRIE

Link to post
Share on other sites
22 hours ago, MaLd0n said:

this problem is about i2c, many users report some problems

check github

Thanks a lot for your support.

Yes, you are correct. Whenever I remove VoodooI2C Kexts from Kext folder, system boots normally (30sec) with no TPAD working.

Sometimes, TPAD works (1 in 20 times) :-(

 

Currently, macOS Big Sur is not supported by VoodooI2C.

I need to raise an issue ticket on Voodoo Github.

Could you please provide me the name of patches that you have applied to my DSDT (This will be helpful for me).

 

Do you have any forum link for this issue?

Please share with me 🙏, I haven't got much.

 

 

 

Link to post
Share on other sites
  • Administrators
47 minutes ago, Vijay Kumar Vishwakarma said:

Currently, macOS Big Sur is not supported by VoodooI2C.

very fine here in Lenovo mobiles. work perfect.

check here, list of common patches

https://www.olarila.com/topic/6874-olarila-hackbook-lenovo-ideapad-s145-mojave-catalina-big-sur-full-dsdt-patches-clover-and-opencore/#comments

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


×
×
  • Create New...

:cap-Please Disable Your ADBlocker-:cap