Contribute
Register

VoodooI2C Help and Support

Status
Not open for further replies.
Sorry for repeating question, but is there a way to switch trackpad (ELAN1000) on/off via some hotkey? (via hotkey kext and/or DSDT edits)?

Also option in accessibility to disable trackpad when mouse connected doesn't work.
 
Last edited:
I have a problem with my Surface Pro 4 and VoodooI2C, the trackpad works great but the keyboard is not working at all. I use VoodooPS2 for the keyboard but as soon as I use also VoodooI2C, the keyboard stops working.
 

Attachments

  • SP4.zip
    769.8 KB · Views: 102
Help patching dsdt. Issue an error (syntax error, unused $ end and premature end of file)
 

Attachments

  • DSDT.aml
    115.7 KB · Views: 264
Hi Alex thanks for confirming that, or I would have spent months trying GPIO pinning with wrong version VoodooI2C. :crazy:

It took me many many tries and reading every post on this thread at least 3 times, but I am now successfully running trackpad ELAN1300 on ASUS UX430 : VoodooI2C + VoodooI2CHID v2.0.1. NOTE: that in my case under _STA method of my 'ETPD' I had to replace its contents to only contain 'Return (0x0F)'

Thanks so much everyone!
:headbang:

ACPI ID: ETPD / KABY LAKE R / hexadecimal APIC pin number 6D / hexadecimal GPIO pin 0x55

Can you write what gestures work in new version of kext?
Currently i'm using older version of Voodooi2c.kext(elan1200) and most works fine (pointing, scrolling, two fingers etc) but for example swipe between pages not working.

Can you write what did you do step by step to run new version of kext?


Thx
 
Pls help me with ELAN1300, I can't even make it work :(..
Currently i'm running 10.13.3 in 8250u cpu
 

Attachments

  • config.plist
    10.5 KB · Views: 236
  • DSDT.aml
    175 KB · Views: 248
  • Ioreg.zip
    4.4 MB · Views: 93
Can you write what gestures work in new version of kext?
Currently i'm using older version of Voodooi2c.kext(elan1200) and most works fine (pointing, scrolling, two fingers etc) but for example swipe between pages not working.

Can you write what did you do step by step to run new version of kext?

Under sys. pref -> trackpad it says none found. Im not sure if I have install problem or not at this point, but at least the track pad works. :/ @RehabMan do you know what is this issue?

So at this point until I find out if with newer kext I should have more capability; I have click, two finger scroll, three finger mission control, four finger swipe but I have no swiping between pages (I also wish I had this). For me this solution works far better then the older Voodooi2c.kext. you seem to be running.

Steps to patch files are outlined quite well here in this link: https://voodooi2c.github.io/#Installation/Installation.

But this is a very tricky patch to get installed mainly because of GPIO pinning steps where patch steps are based on the system's specific values. So there is a chance even with my files etc. they will not work for you even if we have similar machine. Here is the guide for GPIO pinning which is how you determine the values you need to know and what you will change in DSDT. https://voodooi2c.github.io/#GPIO Pinning/GPIO Pinning

You will need to install VoodooI2C and VoodooI2CHID kexts. For my UX430 I applied windows 10 and GPIO Controller Enable patches in DSDT. I did not use the I2C Controller patch. (it caused error when I applied it so I omitted it).

@gulios do you have ETPD in your IOReg and are first two digits of IOInterruptSpecifiers 6D? If so you are in luck and you can skip the next paragraph and jump straight to the patch that will get your trackpad to work.

You may need Windows to determine your ACPI ID. I don't know if you kept your system dual boot or not but on my UX430 under Windows 10 the ACPI ID was ETPD. There is a good chance it is the same for you but again no guarantee. Search for this ACPI ID in your IOreg and the first two digital of your IOInterruptSpecifiers is your device's hexadecimal APIC pin number. You will use this to determine your hexadecimal GPIO pin. My value was 6D. After using the table look ups I determine my GPIO pin is 0x55. This value is used later in patching DSDT.

Perhaps if you try this out you can figure out why trackpad is not detected under system prefs - perhaps then if we can get that fixed it will be possible to do more gestures!


Code below ONLY FOR ACPI ID: ETPD, hexadecimal APIC pin number 6D!! Do not use without knowing yours!

Code:
    Scope (_SB.PCI0.I2C1)
    {
        Device (ETPD)
        {
            Name (SBFG, ResourceTemplate ()
            {
                GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
                    "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0055
                    }
            })
            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",
                "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 (_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))
            }
        }
    }
 
Last edited:
Under sys. pref -> trackpad it says none found. Im not sure if I have install problem or not at this point, but at least the track pad works. :/ @RehabMan do you know what is this issue?

So at this point until I find out if with newer kext I should have more capability; I have click, two finger scroll, three finger mission control, but I have no swiping between pages (I also wish I had this). For me this solution works far better then the older Voodooi2c.kext. you seem to be running.

Steps to patch files are outlined quite well here in this link: https://voodooi2c.github.io/#Installation/Installation.

But this is a very tricky patch to get installed mainly because of GPIO pinning steps where patch steps are based on the system's specific values. So there is a chance even with my files etc. they will not work for you even if we have similar machine. Here is the guide for GPIO pinning which is how you determine the values you need to know and what you will change in DSDT. https://voodooi2c.github.io/#GPIO Pinning/GPIO Pinning

You will need to install VoodooI2C and VoodooI2CHID kexts. For my UX430 I applied windows 10 and GPIO Controller Enable patches in DSDT. I did not use the I2C Controller patch. (it caused error when I applied it so I omitted it).

@gulios do you have ETPD in your IOReg and are first two digits of IOInterruptSpecifiers 6D? If so you are in luck and you can skip the next paragraph and jump straight to the patch that will get your trackpad to work.

You may need Windows to determine your ACPI ID. I don't know if you kept your system dual boot or not but on my UX430 under Windows 10 the ACPI ID was ETPD. There is a good chance it is the same for you but again no guarantee. Search for this ACPI ID in your IOreg and the first two digital of your IOInterruptSpecifiers is your device's hexadecimal APIC pin number. You will use this to determine your hexadecimal GPIO pin. My value was 6D. After using the table look ups I determine my GPIO pin is 0x55. This value is used later in patching DSDT.

Perhaps if you try this out you can figure out why trackpad is not detected under system prefs - perhaps then if we can get that fixed it will be possible to do more gestures!


Code below ONLY FOR ACPI ID: ETPD, hexadecimal APIC pin number 6D!! Do not use without knowing yours!

Code:
    Scope (_SB.PCI0.I2C1)
    {
        Device (ETPD)
        {
            Name (SBFG, ResourceTemplate ()
            {
                GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
                    "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0055
                    }
            })
            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",
                "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 (_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))
            }
        }
    }


really thank you.
My trackpad works on older version but i think is better to upgrade(if possible) to newer one.

As i see IOInterruptSpecifiers 6D
so i stopped before next patching

VoodooI2CHID.kext L/E
VoodooI2C.kext. L/E
macOS 10.13.3
Kaby Lake/Intel HD Graphics KBL CRB 1536 MB

for ELAN1200 but still no trackpad in preferences and it doesn;t work.
I've applied WIN 10 patch to DSDT and still no luck.

In instllation guide there is info
"3. 'pci8086,9d60', 'pci8086,9d61', 'pci8086,a160' and 'pci8086,a161' - Skylake/Kaby Lake era"

but in ioreg i have "pci8086,9d31" only.
Does it mean that this version of kext will not work with my trackpad ?

Is this driver version works for ELAN1200 ?
DSDT and other files in attachment.

Thank you !!
 

Attachments

  • UX430UA.zip
    755.9 KB · Views: 94
I left my kexts in clover/other but I don't think this makes any difference.

IOInterruptControllers and IOInterruptSpecifiers should disappear, so something not installed or patched correctly.

@gulios look in my device properties under ETPD... I have GPIO IRQ and PIN you do not have in yours. Can it be clue?
 

Attachments

  • sierra’s iMac.ioreg
    5.3 MB · Views: 147
  • DSDT.aml
    176.2 KB · Views: 154
Status
Not open for further replies.
Back
Top