Contribute
Register

[Guide] ASUS Zenbook UX310UA (& UX310UQK) macOS Mojave / Catalina with Clover (& Big Sur / Monterey using OpenCore EFI) Installation Guide

Status
Not open for further replies.
There are no errors in the DSDT.dsl you attached.
Hi, Master, I dare not question you ( you have to tell me to kneeling down or stand ovation:crazy:), but when I ran it yesterday and just now, on my Asus laptop, it always gave me the 5 errors, I now attached the png files of the screenshots, I'm running Maciasl 1.4
 

Attachments

  • asus360caerror1.png
    asus360caerror1.png
    467.8 KB · Views: 201
  • asus360caerror2.png
    asus360caerror2.png
    253.5 KB · Views: 189
  • asus360caerror3.png
    asus360caerror3.png
    425 KB · Views: 182
I wanted to add encouragement here! I also tried decompiling using iasl last night (which worked great) and then recompiling ... which didn't work. I was using the wrong version of MaciASL - and this is super important. Upon downloading the right version and making sure to compile using 6.1 it corrected the previous errors.
 
The attached DSDT has no errors, as RehabMan said. Which patches did you apply after you saved this DSDT so the errors appeared?

What happens when you load VoodooI2C? Are you using the ELAN1200 version?
Also, better to change your XDSM methods back to _DSM under I2C0 and ETPD (If you're not using the fixed kext)

Under TPL0 device's _STA method, change 'Return (0x0F)' to 'Return (Zero)'
This would disable your touchscreen, but fix VoodooI2C's problem with multiple devices on the same bus (to be fixed in the rewrite)

I don't know why, but I got the errors and I posted the screenshots, I didn't load the voodooI2C this time round, but last time, I tried all options, no luck. I beleive I used the Elan1200 version,
I don't know how to switch XDSM back to DSM, but I think I can re do the thing to avoid it. I will digist your suggest of TPLO modification as well, see if I can understand it and make it work, that sounds a vitial step now ( to me), thanks a lot.
here is what I had last time:
Last login: Fri Sep 8 10:42:09 on console
Users-MacBook-Air:~ User$ cd "desktop"
Users-MacBook-Air:desktop User$ sudo chown -R root:wheel VoodooI2C.kext
Password:

Users-MacBook-Air:desktop User$ sudo kextutil -v VoodooI2C.kext
Defaulting to kernel file '/System/Library/Kernels/kernel'
Diagnostics for VoodooI2C.kext:
Code Signing Failure: not code signed
VoodooI2C.kext appears to be loadable (not including linkage for on-disk libraries).
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext "VoodooI2C.kext"
kext signature failure override allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext "/Users/User/Desktop/VoodooI2C.kext"
Loading VoodooI2C.kext.
VoodooI2C.kext successfully loaded (or already loaded).

But not working, when I use the trackpad
 
I wanted to add encouragement here! I also tried decompiling using iasl last night (which worked great) and then recompiling ... which didn't work. I was using the wrong version of MaciASL - and this is super important. Upon downloading the right version and making sure to compile using 6.1 it corrected the previous errors.
Yes, man!, you're right on point,thanks for the sharing:clap:
 
I don't know why, but I got the errors and I posted the screenshots, I didn't load the voodooI2C this time round, but last time, I tried all options, no luck. I beleive I used the Elan1200 version,
I don't know how to switch XDSM back to DSM, but I think I can re do the thing to avoid it. I will digist your suggest of TPLO modification as well, see if I can understand it and make it work, that sounds a vitial step now ( to me), thanks a lot.
here is what I had last time:
Last login: Fri Sep 8 10:42:09 on console
Users-MacBook-Air:~ User$ cd "desktop"
Users-MacBook-Air:desktop User$ sudo chown -R root:wheel VoodooI2C.kext
Password:

Users-MacBook-Air:desktop User$ sudo kextutil -v VoodooI2C.kext
Defaulting to kernel file '/System/Library/Kernels/kernel'
Diagnostics for VoodooI2C.kext:
Code Signing Failure: not code signed
VoodooI2C.kext appears to be loadable (not including linkage for on-disk libraries).
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext "VoodooI2C.kext"
kext signature failure override allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext "/Users/User/Desktop/VoodooI2C.kext"
Loading VoodooI2C.kext.
VoodooI2C.kext successfully loaded (or already loaded).

But not working, when I use the trackpad
Please upload the current DSDT you're using, and a copy of IOReg :)
Also, if you may, upload your original unpatched DSDT.
 
Please upload the current DSDT you're using, and a copy of IOReg :)
Also, if you may, upload your original unpatched DSDT.
Thank you, I attached the files, for the patched, I didn't apply [syn] rename _DSM methods to XDSM (as you suggested) and [sys] Skylake LPC ( which gave me more errors),
Any insights? thanK you again.
 

Attachments

  • DSDT origin.aml
    152.3 KB · Views: 177
  • DSDT patched.aml
    155.4 KB · Views: 168
  • MacBook Air.ioreg
    3.8 MB · Views: 198
  • DSDT origin.dsl
    1.1 MB · Views: 197
  • DSDT patched.dsl
    1.2 MB · Views: 193
Thank you, I attached the files, for the patched, I didn't apply [syn] rename _DSM methods to XDSM (as you suggested) and [sys] Skylake LPC ( which gave me more errors),
Any insights? thanK you again.
You can try to undo the Windows 2012 patch and apply the Windows 2015 patch instead (see VoodooI2C patches repo). I think it would be more suitable for your machine.

Was this IOReg captured with VoodooI2C loaded?
When loaded, any panic occurs?

Also, you may try to change the _STA under TPL0 to return Zero, as suggested (not sure if it can help when there's no panic, but it doesn't hurt to try!)

Another option is to modify I2C0 in your DSDT from this:
Code:
    Scope (_SB.PCI0)
    {
        Device (I2C0)
        {
            Name (LINK, "\\_SB.PCI0.I2C0")
            Method (_PSC, 0, NotSerialized)  // _PSC: Power State Current
            {
                Return (GETD (SB10))
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                LPD0 (SB10)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                LPD3 (SB10)
            }
        }
    }

    If (LNotEqual (SMD0, 0x02))
    {
        Scope (_SB.PCI0.I2C0)
        {
            Name (_HID, "INT3442")  // _HID: Hardware ID
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (LHRV (SB10))
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Return (LCRS (SMD0, SB00, SIR0))
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (LSTA (SMD0))
            }
        }
    }

    If (LEqual (SMD0, 0x02))
    {
        Scope (_SB.PCI0.I2C0)
        {
            Name (_ADR, 0x00150000)  // _ADR: Address
            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
            {
                If (PCIC (Arg0))
                {
                    Return (PCID (Arg0, Arg1, Arg2, Arg3))
                }

                Return (Zero)
            }
        }
    }

To this:
Code:
    Scope (_SB.PCI0)
    {
        Device (I2C1)
        {
            Name (LINK, "\\_SB.PCI0.I2C1")
            Method (_PSC, 0, NotSerialized)  // _PSC: Power State Current
            {
                Return (GETD (SB11))
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                LPD0 (SB11)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                LPD3 (SB11)
            }

            If (LNotEqual (SMD1, 0x02))
            {
                Name (_HID, "INT3443")  // _HID: Hardware ID
                Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
                {
                    Return (LHRV (SB11))
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Return (LCRS (SMD1, SB01, SIR1))
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (LSTA (SMD1))
                }
            }

            If (LEqual (SMD1, 0x02))
            {
                Name (_ADR, 0x00150001)  // _ADR: Address
                Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
                {
                    If (PCIC (Arg0))
                    {
                        Return (PCID (Arg0, Arg1, Arg2, Arg3))
                    }

                    Return (Buffer (One)
                    {
                         0x00                                          
                    })
                }
            }
        }
    }
 
You can try to undo the Windows 2012 patch and apply the Windows 2015 patch instead (see VoodooI2C patches repo). I think it would be more suitable for your machine.

Was this IOReg captured with VoodooI2C loaded?
When loaded, any panic occurs?

Also, you may try to change the _STA under TPL0 to return Zero, as suggested (not sure if it can help when there's no panic, but it doesn't hurt to try!)

Another option is to modify I2C0 in your DSDT from this:
Code:
    Scope (_SB.PCI0)
    {
        Device (I2C0)
        {
            Name (LINK, "\\_SB.PCI0.I2C0")
            Method (_PSC, 0, NotSerialized)  // _PSC: Power State Current
            {
                Return (GETD (SB10))
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                LPD0 (SB10)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                LPD3 (SB10)
            }
        }
    }

    If (LNotEqual (SMD0, 0x02))
    {
        Scope (_SB.PCI0.I2C0)
        {
            Name (_HID, "INT3442")  // _HID: Hardware ID
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (LHRV (SB10))
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Return (LCRS (SMD0, SB00, SIR0))
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (LSTA (SMD0))
            }
        }
    }

    If (LEqual (SMD0, 0x02))
    {
        Scope (_SB.PCI0.I2C0)
        {
            Name (_ADR, 0x00150000)  // _ADR: Address
            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
            {
                If (PCIC (Arg0))
                {
                    Return (PCID (Arg0, Arg1, Arg2, Arg3))
                }

                Return (Zero)
            }
        }
    }

To this:
Code:
    Scope (_SB.PCI0)
    {
        Device (I2C1)
        {
            Name (LINK, "\\_SB.PCI0.I2C1")
            Method (_PSC, 0, NotSerialized)  // _PSC: Power State Current
            {
                Return (GETD (SB11))
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                LPD0 (SB11)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                LPD3 (SB11)
            }

            If (LNotEqual (SMD1, 0x02))
            {
                Name (_HID, "INT3443")  // _HID: Hardware ID
                Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
                {
                    Return (LHRV (SB11))
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Return (LCRS (SMD1, SB01, SIR1))
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (LSTA (SMD1))
                }
            }

            If (LEqual (SMD1, 0x02))
            {
                Name (_ADR, 0x00150001)  // _ADR: Address
                Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
                {
                    If (PCIC (Arg0))
                    {
                        Return (PCID (Arg0, Arg1, Arg2, Arg3))
                    }

                    Return (Buffer (One)
                    {
                         0x00                                         
                    })
                }
            }
        }
    }
Thank you again, Ben, for your patience and constant advice,
1 when I modify the DSDT as above, it gave me 7 erros, so I didn't save it.
2 That return (Zero) touch seems working and cure only part of the problem I have, it secures me to use the internal keyboard to type ( otherwise as soon as I KU/load the VoodooI2C in the s/l/e, the keyboard will be lost.
3 whenever I add the VoodooI2C, the booting is extremely long, and mouse is snailing and OS less responsive.
4 If with DSDT, there will be no Kernel panic when loading/KU I2C.kext.
5 I always do the DSDT first and install the VoodooI2C afterwards, I will reverse and try again ( Voodoo first, cache rebuilding, patch afterward)
6 The IOreg I uploaded last time is without the Voodoo I2C injection, now I upload it again with the kext.
7 The DSDT I patched this time:

[bat] Asus N55SL/VivoBook Battery (requires ACPIBatteryManager.kext)

[igpu] Brightness fix

[sys] add IMEI

[sys] Fix _WAK Argo v2

[sys] Fix Mutex with non-zero SyncLevel

[sys] HPET Fix

VoodooI2C repo: window 2015 patch, not the 2012

[sys] RTC Fix

[sys] Skylake LPC ( I didn't do this)

[sys] SMBUS Fix

[usb] 7-series/8-series USB

[usb] USB3 _PRW 0x6D Skylake (instant wake)

8 my understanding is: in general, load the kext in Clover, if not working, then use Kext utility to install into S/L/E or L/E. Do the DSDT patch before adding any new Kext.

Pardon me if I still didn't get it working. and appreciate your assist always.
 

Attachments

  • MacBook Air.ioreg
    3.8 MB · Views: 191
Status
Not open for further replies.
Back
Top