Contribute
Register

[Guide] ASUS Vivobook X542UA

Status
Not open for further replies.
Ben, thank you for helping me.

You did not patch _CRS for GPIO interrupts. Is your trackpad working? Anyway, it'll work better with GPIO...
Still not patched this. Planning to do it in 2-3 days.

VoodooI2CSynaptics does not attach to any device on your system,, see the IONameMatch it has... The source if the problem is somewhere else, you should be able to remove it with 0 harm.
Removed. VoodooI2C updated.

Why do you have SSDT.aml? Usually you only need the PluginType injection in your config.plist. Remove it...
Removed.

Clover is not latest - update it
Updated.

You cannot have both AptioMemoryFix-64.efi and OsxAptioFix3Drv-64.efi. Remove OsxAptio...
DataHubDxe-64.efi is usually not needed. Try booting without it.
Removed both.

You have the VirtualSMC sensors in Clover, but they cannot be used without VirtualSMC itself. If you want to use it, remove FakeSMC and the FakeSMC sensors (From both Clover and /L/E), also remove SMCHelper-64.efi.
Install VirtualSMC to both Clover and /L/E, keep the sensors in /L/E only (they are not necessary for booting...)
Done. And one more thing: ACPIBatteryManager.kext also must be removed - VirtualSMC do this too.
If ACPIBatteryManager.kext not removed, we got
kext stall[0], (60s): 'SMCSMBusController'
403883


Once again - when you have kexts in both Clover and /L/E (the correct approach), you need InjectKexts=Detect. See how it goes after applying all changes above.
Still not working. When InjectKexts=Detect, booting stuck between progress bar = 100% and showing login screen. I see semi-transparent Apple logo with progress bar at 100%, and semi-transparent login screen over . System does not responds after this.
403884
 

Attachments

  • debug_26683.zip
    3.7 MB · Views: 186
Ben, thank you for helping me.


Still not patched this. Planning to do it in 2-3 days.


Removed. VoodooI2C updated.


Removed.


Updated.


Removed both.


Done. And one more thing: ACPIBatteryManager.kext also must be removed - VirtualSMC do this too.
If ACPIBatteryManager.kext not removed, we got
kext stall[0], (60s): 'SMCSMBusController'
View attachment 403883


Still not working. When InjectKexts=Detect, booting stuck between progress bar = 100% and showing login screen. I see semi-transparent Apple logo with progress bar at 100%, and semi-transparent login screen over . System does not responds after this.
View attachment 403884
Yes, ACPIBatteryManager will conflict with SMCBatteryManager, so you need to remove it as you said. Seems like there are some issues with ACPIBatteryManager + VoodooI2C for some users anyway, so SMCBatteryManager is a good replacement.

AsusFnKeys.kext is deprecated, use AsusSMC.kext instead.

If you don't have an ALS (Ambient Light Sensor), remove SMCLightSensor.kext.
I guess you don't have a device that's usable with SMCSuperIO.kext, so I'd remove this one too.
Both are installed to /L/E.

FakePCIID.kext serves no purpose alone ,remove it from Clover.

When using InjectKexts=Detect, the kext installation process is as follows:
*All* of the kexts you need should be installed to /L/E.
Mandatory kexts for booting and basic usability should be in Clover/kexts/Other, while you still have them in /L/E.
Make sure you follow it. For example, VoodooI2C + VoodooI2CHID + VoodooPS2Controller are missing from /L/E. AppleALC + CodecCommander are missing too, but they are not necessary for booting, so you shouldn't have them in Clover.

Make sure all of your kexts are up-to-date, both in Clover and /L/E :)
 
Notice you're using polling mode for VoodooI2C, that's not recommended. Patch ETPD._CRS to using GPIO interrupts.
Ben, help me, please!

After I do this, touchpad doesn't work.
I do as written, but no result. What I do wrong?
KabyLake-R processor, FTE1200 touchpad

Снимок экрана 2019-05-08 в 10.12.34.png


Code:
    Scope (_SB.PCI0.I2C1)
    {
        Device (ETPD)
        {
            Name (_ADR, One)  // _ADR: Address
            Name (ETPH, Package (0x16)
            {
                "ELAN1200",
                "ELAN1201",
                "ELAN1203",
                "ELAN1200",
                "ELAN1201",
                "ELAN1300",
                "ELAN1301",
                "ELAN1300",
                "ELAN1301",
                "ELAN1000",
                "ELAN1200",
                "ELAN1200",
                "ELAN1200",
                "ELAN1200",
                "ELAN1200",
                "ELAN1203",
                "ELAN1203",
                "ELAN1201",
                "ELAN1300",
                "ELAN1300",
                "ELAN1200",
                "ELAN1300"
            })
            Name (FTPH, Package (0x05)
            {
                "FTE1001",
                "FTE1200", //  <<<<<<<<<<<<===============  this one is my
                "FTE1200",
                "FTE1300",
                "FTE1300"
            })
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                If (And (TPDI, 0x04))
                {
                    Return (DerefOf (Index (ETPH, TPHI)))
                }

                If (And (TPDI, 0x10))
                {
                    Return (DerefOf (Index (FTPH, TPHI)))
                }

                Return ("ELAN1010")
            }

            Name (SBFG, ResourceTemplate ()
            {
                GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
                    "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0055 //6D was in IORegistryExplorer
                    }
            })
            Name (_CID, "PNP0C50")  // _CID: Compatible ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg0, ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
                {
                    If (LEqual (Arg2, Zero))
                    {
                        If (LEqual (Arg1, One))
                        {
                            Return (Buffer (One)
                            {
                                 0x03                                         
                            })
                        }
                        Else
                        {
                            Return (Buffer (One)
                            {
                                 0x00                                         
                            })
                        }
                    }

                    If (LEqual (Arg2, One))
                    {
                        Return (One)
                    }
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                         
                    })
                }
            }

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

            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                Name (SBFB, ResourceTemplate ()
                {
                    I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80,
                        AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                        0x00, ResourceConsumer, , Exclusive,
                        )
                })
                Return (ConcatenateResTemplate (SBFB, SBFG))
            }
        }
    }
 
Ben, help me, please!

After I do this, touchpad doesn't work.
I do as written, but no result. What I do wrong?
KabyLake-R processor, FTE1200 touchpad

View attachment 404303

Code:
    Scope (_SB.PCI0.I2C1)
    {
        Device (ETPD)
        {
            Name (_ADR, One)  // _ADR: Address
            Name (ETPH, Package (0x16)
            {
                "ELAN1200",
                "ELAN1201",
                "ELAN1203",
                "ELAN1200",
                "ELAN1201",
                "ELAN1300",
                "ELAN1301",
                "ELAN1300",
                "ELAN1301",
                "ELAN1000",
                "ELAN1200",
                "ELAN1200",
                "ELAN1200",
                "ELAN1200",
                "ELAN1200",
                "ELAN1203",
                "ELAN1203",
                "ELAN1201",
                "ELAN1300",
                "ELAN1300",
                "ELAN1200",
                "ELAN1300"
            })
            Name (FTPH, Package (0x05)
            {
                "FTE1001",
                "FTE1200", //  <<<<<<<<<<<<===============  this one is my
                "FTE1200",
                "FTE1300",
                "FTE1300"
            })
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                If (And (TPDI, 0x04))
                {
                    Return (DerefOf (Index (ETPH, TPHI)))
                }

                If (And (TPDI, 0x10))
                {
                    Return (DerefOf (Index (FTPH, TPHI)))
                }

                Return ("ELAN1010")
            }

            Name (SBFG, ResourceTemplate ()
            {
                GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
                    "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0055 //6D was in IORegistryExplorer
                    }
            })
            Name (_CID, "PNP0C50")  // _CID: Compatible ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg0, ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
                {
                    If (LEqual (Arg2, Zero))
                    {
                        If (LEqual (Arg1, One))
                        {
                            Return (Buffer (One)
                            {
                                 0x03                                        
                            })
                        }
                        Else
                        {
                            Return (Buffer (One)
                            {
                                 0x00                                        
                            })
                        }
                    }

                    If (LEqual (Arg2, One))
                    {
                        Return (One)
                    }
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                        
                    })
                }
            }

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

            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                Name (SBFB, ResourceTemplate ()
                {
                    I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80,
                        AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                        0x00, ResourceConsumer, , Exclusive,
                        )
                })
                Return (ConcatenateResTemplate (SBFB, SBFG))
            }
        }
    }
You'll need to attach a new troubleshooting archive :)
 

Attachments

  • debug_28770.zip
    3.6 MB · Views: 178
  • DSDT.dsl
    1.3 MB · Views: 68
Files attached
Kexts are not installed correctly, that can lead to issues.
Install all kexts to /L/E.
Install just mandatory kexts (for booting and basic I/O) to Clover, while you still have them in /L/E.
Set InjectKexts=Detect.

Make sure you rebuild your kextcache after every change to /L/E, system update, etc.
Note: Audio is not mandatory for booting, nor hibernation. LiluFriend not needed when kexts are injected from Clover.
See if you can omit VoodooTSCSync without issues.

You're using an old version of VoodooI2C, update VoodooI2C + VoodooI2CHID.
If you have updates to other kexts - update those too.
 
Last edited:
So, after 8 hours of dancing with tambourine

Set InjectKexts=Detect.
See if you can omit VoodooTSCSync without issues.
Done, boot ok. Reason was VoodooTSCSync.kext in Clover - I leave it only in /L/E.
If I remove it from /L/E, I cannot boot.

You're using an old version of VoodooI2C, update VoodooI2C + VoodooI2CHID.
Updated. Kextcache rebuilds.

So, after GPIO pinning touchpad still doesn't work. And I cannot revert to polling mode - if I restore Device(ETPD) section in DSDT, there is no effect.
 

Attachments

  • DSDT.dsl
    1.3 MB · Views: 59
  • debug_13195.zip
    3.6 MB · Views: 182
  • DSDT original unpatched.dsl
    1.3 MB · Views: 61
So, after 8 hours of dancing with tambourine


Done, boot ok. Reason was VoodooTSCSync.kext in Clover - I leave it only in /L/E.
If I remove it from /L/E, I cannot boot.


Updated. Kextcache rebuilds.

So, after GPIO pinning touchpad still doesn't work. And I cannot revert to polling mode - if I restore Device(ETPD) section in DSDT, there is no effect.
If you need VoodooTSCSync to boot, have it in Clover as well for update/install cases.

You need to add CoolStar's 2 patches to your config.plist, otherwise VoodooI2C will not load.
 
You need to add CoolStar's 2 patches to your config.plist, otherwise VoodooI2C will not load.

CoolStar's patches added, nothing changes. Touchpad still doesn't work.
 

Attachments

  • debug_26187.zip
    3.7 MB · Views: 183
CoolStar's patches added, nothing changes. Touchpad still doesn't work.
You did not set those as info.plist patches, have a look at the linked config again.
 
Status
Not open for further replies.
Back
Top