• Become a Premium Member for $25/year with no ads to improve your community experience. Upgrade to Pro Account for faster response and no wait times!

How to fix I2C Trackpad

oldman20

Member
Joined
Nov 6, 2021
Messages
141
Motherboard
Dell 3558
CPU
Broadwell 5200U
Graphics
Intel HD5500
OS X/macOS
13.x
Bootloader
  1. Clover (UEFI)
  2. OpenCore (UEFI)
Mac
  1. MacBook Pro
Mobile Phone
  1. Android
  2. iOS
after tried many times, trackpad still not working
Here is my devices:
Code:
~$ sudo dmesg | grep -i input
[    1.047936] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[    1.047995] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[    1.048040] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input2
[    1.048079] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[    1.104768] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
[    1.519008] input: DLL06B0:00 06CB:78F1 Mouse as /devices/pci0000:00/INT3433:00/i2c-1/i2c-DLL06B0:00/0018:06CB:78F1.0001/input/input7
[    1.519138] hid-generic 0018:06CB:78F1.0001: input,hidraw0: I2C HID v1.00 Mouse [DLL06B0:00 06CB:78F1] on i2c-DLL06B0:00
[    2.820686] input: Synaptics TM3096-001 as /devices/pci0000:00/INT3433:00/i2c-1/i2c-DLL06B0:00/0018:06CB:78F1.0001/input/input9
[    2.820777] hid-rmi 0018:06CB:78F1.0001: input,hidraw0: I2C HID v1.00 Mouse [DLL06B0:00 06CB:78F1] on i2c-DLL06B0:00
[    3.004622] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0/0003:046D:C52B.0002/input/input10
[    3.058075] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input11
[    3.062976] hid-generic 0003:046D:C52B.0002: input,hidraw1: USB HID v1.11 Keyboard [Logitech USB Receiver] on usb-0000:00:14.0-3/input0
[    3.063079] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1e/LNXVIDEO:01/input/input12
[    3.065008] input: Logitech USB Receiver Mouse as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.1/0003:046D:C52B.0003/input/input13
[    3.065153] input: Logitech USB Receiver Consumer Control as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.1/0003:046D:C52B.0003/input/input14
[    3.122967] input: Logitech USB Receiver System Control as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.1/0003:046D:C52B.0003/input/input15
[    3.123094] hid-generic 0003:046D:C52B.0003: input,hiddev0,hidraw2: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-0000:00:14.0-3/input1
[    3.124604] hid-generic 0003:046D:C52B.0004: hiddev1,hidraw3: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:14.0-3/input2
[    3.332372] logitech-djreceiver 0003:046D:C52B.0004: hiddev0,hidraw1: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:14.0-3/input2
[    3.455678] input: Logitech Wireless Device PID:4069 Keyboard as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.2/0003:046D:C52B.0004/0003:046D:4069.0005/input/input17
[    3.455972] input: Logitech Wireless Device PID:4069 Mouse as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.2/0003:046D:C52B.0004/0003:046D:4069.0005/input/input18
[    3.456383] hid-generic 0003:046D:4069.0005: input,hidraw2: USB HID v1.11 Keyboard [Logitech Wireless Device PID:4069] on usb-0000:00:14.0-3/input2:1
[    3.576161] input: Logitech MX Master 2S as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.2/0003:046D:C52B.0004/0003:046D:4069.0005/input/input22
[    3.576301] logitech-hidpp-device 0003:046D:4069.0005: input,hidraw2: USB HID v1.11 Keyboard [Logitech MX Master 2S] on usb-0000:00:14.0-3/input2:1
[    6.353578] input: DELL Wireless hotkeys as /devices/virtual/input/input23
[    6.867359] input: Integrated_Webcam_HD: Integrate as /devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/input/input24
[    6.911204] input: Dell WMI hotkeys as /devices/platform/PNP0C14:01/wmi_bus/wmi_bus-PNP0C14:01/9DBB5994-A997-11DA-B012-B622A1EF5492/input/input25
[    7.306338] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input26
[    7.306428] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input27
[    7.306506] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input28
[    7.306580] input: HDA Intel HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.0/sound/card0/input29
[    7.306660] input: HDA Intel HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:03.0/sound/card0/input30
[    7.363204] snd_hda_codec_realtek hdaudioC1D0:    inputs:
[    7.440736] input: HDA Intel PCH Headphone Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input31
[   14.133895] rfkill: input handler disabled
[   20.845540] rfkill: input handler enabled
[   26.242864] rfkill: input handler disabled
I followed voodooi2c guide carefully:

  • correct my ACPI ID is TPD1, and know my CPU is Broadwell no need GPI0 controller patch, and I2C Controller Patches?
  • Windows Emulation patch will done with SSDT-XOSI.aml
  • Look at IOInterruptSpecifiers to know the hexadecimal APIC pin number is 0x1e mean 30 in decimal, less than 47, then can proceed to install kexts.
But at Step Ensure I2C Serial bus name is correctly labelled, I not sure about it. Here is original method from DSDT:

_SB.PCI0.I2C1.TPD1:

Code:
        Device (TPD1)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                If (LEqual (RDGI (0x35), One))
                {
                    Return (0xB0068C11)
                }
                Else
                {
                    Return (0xAF068C11)
                }
            }

            Name (_CID, "PNP0C50")  // _CID: Compatible ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_S0W, 0x04)  // _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 (0x20)
                    }
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                       
                    })
                }
                Return (Zero)
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (LEqual (And (SDS1, 0x08), 0x08))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                Name (SBFI, ResourceTemplate ()
                {
                    I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
                        AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                        0x00, ResourceConsumer, , Exclusive,
                        )
                    Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, _Y2A)
                    {
                        0x0000001E,
                    }
                })
                If (LEqual (GR13, One))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL3)  // _INT: Interrupts
                    Store (0x1B, VAL3)
                }

                If (LOr (LOr (LEqual (BID, 0x80), LEqual (BID, 0x82)), LEqual (BID, 0x83)))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL4)  // _INT: Interrupts
                    Store (0x1A, VAL4)
                }

                Return (SBFI)
            }
}
I renamed SBFI to SBFB and remove:

Code:
                    Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, _Y2A)
                    {
                        0x0000001E,
}


But can't compile, so I removed these too:

Code:
                })
                If (LEqual (GR13, One))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL3)  // _INT: Interrupts
                    Store (0x1B, VAL3)
                }

                If (LOr (LOr (LEqual (BID, 0x80), LEqual (BID, 0x82)), LEqual (BID, 0x83)))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL4)  // _INT: Interrupts
                    Store (0x1A, VAL4)
}


Then compiled SSDT-TPD1.aml success (below attached files), put this SSDT-TPD1.aml in OC/ACPI and add to config.plist. Reboot and nothing change

Trackpad work like mouse, no gestures but Trackpad setting not show in system preferences, and nothing advance setting for trackpad in BIOS. Battery status + brighter slide working well

In IOReg, TPD1 show Interrupt mode is APIC, and can't see GPI0 - which I understand no need for Broadwell CPU right?1051016536_ScreenShot2022-09-08at19_52_19.png.085dbae0e5f1496e543d47c777005ad3.png
What were I missing? thank and regards!

HumanInterfaceDevice.png

Screen Shot 2022-09-08 at 20.16.00.png

Screen Shot 2022-09-08 at 20.15.40.png

With-SSDT-TPD1.ioreg

Without-SSDT-TPD1.ioreg

 

Attachments

Last edited:
Why i cant edit post?
 
after tried many times, trackpad still not working
Here is my devices:
Code:
~$ sudo dmesg | grep -i input
[    1.047936] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[    1.047995] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[    1.048040] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input2
[    1.048079] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[    1.104768] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
[    1.519008] input: DLL06B0:00 06CB:78F1 Mouse as /devices/pci0000:00/INT3433:00/i2c-1/i2c-DLL06B0:00/0018:06CB:78F1.0001/input/input7
[    1.519138] hid-generic 0018:06CB:78F1.0001: input,hidraw0: I2C HID v1.00 Mouse [DLL06B0:00 06CB:78F1] on i2c-DLL06B0:00
[    2.820686] input: Synaptics TM3096-001 as /devices/pci0000:00/INT3433:00/i2c-1/i2c-DLL06B0:00/0018:06CB:78F1.0001/input/input9
[    2.820777] hid-rmi 0018:06CB:78F1.0001: input,hidraw0: I2C HID v1.00 Mouse [DLL06B0:00 06CB:78F1] on i2c-DLL06B0:00
[    3.004622] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0/0003:046D:C52B.0002/input/input10
[    3.058075] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input11
[    3.062976] hid-generic 0003:046D:C52B.0002: input,hidraw1: USB HID v1.11 Keyboard [Logitech USB Receiver] on usb-0000:00:14.0-3/input0
[    3.063079] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1e/LNXVIDEO:01/input/input12
[    3.065008] input: Logitech USB Receiver Mouse as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.1/0003:046D:C52B.0003/input/input13
[    3.065153] input: Logitech USB Receiver Consumer Control as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.1/0003:046D:C52B.0003/input/input14
[    3.122967] input: Logitech USB Receiver System Control as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.1/0003:046D:C52B.0003/input/input15
[    3.123094] hid-generic 0003:046D:C52B.0003: input,hiddev0,hidraw2: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-0000:00:14.0-3/input1
[    3.124604] hid-generic 0003:046D:C52B.0004: hiddev1,hidraw3: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:14.0-3/input2
[    3.332372] logitech-djreceiver 0003:046D:C52B.0004: hiddev0,hidraw1: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:14.0-3/input2
[    3.455678] input: Logitech Wireless Device PID:4069 Keyboard as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.2/0003:046D:C52B.0004/0003:046D:4069.0005/input/input17
[    3.455972] input: Logitech Wireless Device PID:4069 Mouse as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.2/0003:046D:C52B.0004/0003:046D:4069.0005/input/input18
[    3.456383] hid-generic 0003:046D:4069.0005: input,hidraw2: USB HID v1.11 Keyboard [Logitech Wireless Device PID:4069] on usb-0000:00:14.0-3/input2:1
[    3.576161] input: Logitech MX Master 2S as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.2/0003:046D:C52B.0004/0003:046D:4069.0005/input/input22
[    3.576301] logitech-hidpp-device 0003:046D:4069.0005: input,hidraw2: USB HID v1.11 Keyboard [Logitech MX Master 2S] on usb-0000:00:14.0-3/input2:1
[    6.353578] input: DELL Wireless hotkeys as /devices/virtual/input/input23
[    6.867359] input: Integrated_Webcam_HD: Integrate as /devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/input/input24
[    6.911204] input: Dell WMI hotkeys as /devices/platform/PNP0C14:01/wmi_bus/wmi_bus-PNP0C14:01/9DBB5994-A997-11DA-B012-B622A1EF5492/input/input25
[    7.306338] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input26
[    7.306428] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input27
[    7.306506] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input28
[    7.306580] input: HDA Intel HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.0/sound/card0/input29
[    7.306660] input: HDA Intel HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:03.0/sound/card0/input30
[    7.363204] snd_hda_codec_realtek hdaudioC1D0:    inputs:
[    7.440736] input: HDA Intel PCH Headphone Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input31
[   14.133895] rfkill: input handler disabled
[   20.845540] rfkill: input handler enabled
[   26.242864] rfkill: input handler disabled
I followed voodooi2c guide carefully:

  • correct my ACPI ID is TPD1, and know my CPU is Broadwell no need GPI0 controller patch, and I2C Controller Patches?
  • Windows Emulation patch will done with SSDT-XOSI.aml
  • Look at IOInterruptSpecifiers to know the hexadecimal APIC pin number is 0x1e mean 30 in decimal, less than 47, then can proceed to install kexts.
But at Step Ensure I2C Serial bus name is correctly labelled, I not sure about it. Here is original method from DSDT:

_SB.PCI0.I2C1.TPD1:

Code:
        Device (TPD1)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                If (LEqual (RDGI (0x35), One))
                {
                    Return (0xB0068C11)
                }
                Else
                {
                    Return (0xAF068C11)
                }
            }

            Name (_CID, "PNP0C50")  // _CID: Compatible ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_S0W, 0x04)  // _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 (0x20)
                    }
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                       
                    })
                }
                Return (Zero)
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (LEqual (And (SDS1, 0x08), 0x08))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                Name (SBFI, ResourceTemplate ()
                {
                    I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
                        AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                        0x00, ResourceConsumer, , Exclusive,
                        )
                    Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, _Y2A)
                    {
                        0x0000001E,
                    }
                })
                If (LEqual (GR13, One))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL3)  // _INT: Interrupts
                    Store (0x1B, VAL3)
                }

                If (LOr (LOr (LEqual (BID, 0x80), LEqual (BID, 0x82)), LEqual (BID, 0x83)))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL4)  // _INT: Interrupts
                    Store (0x1A, VAL4)
                }

                Return (SBFI)
            }
}
I renamed SBFI to SBFB and remove:

Code:
                    Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, _Y2A)
                    {
                        0x0000001E,
}


But can't compile, so I removed these too:

Code:
                })
                If (LEqual (GR13, One))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL3)  // _INT: Interrupts
                    Store (0x1B, VAL3)
                }

                If (LOr (LOr (LEqual (BID, 0x80), LEqual (BID, 0x82)), LEqual (BID, 0x83)))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL4)  // _INT: Interrupts
                    Store (0x1A, VAL4)
}


Then compiled SSDT-TPD1.aml success (below attached files), put this SSDT-TPD1.aml in OC/ACPI and add to config.plist. Reboot and nothing change

Trackpad work like mouse, no gestures but Trackpad setting not show in system preferences, and nothing advance setting for trackpad in BIOS. Battery status + brighter slide working well

In IOReg, TPD1 show Interrupt mode is APIC, and can't see GPI0 - which I understand no need for Broadwell CPU right?1051016536_ScreenShot2022-09-08at19_52_19.png.085dbae0e5f1496e543d47c777005ad3.png
What were I missing? thank and regards!

HumanInterfaceDevice.png

Screen Shot 2022-09-08 at 20.16.00.png

Screen Shot 2022-09-08 at 20.15.40.png

With-SSDT-TPD1.ioreg

Without-SSDT-TPD1.ioreg

Attach EFI.
 
  • Like
Reactions: oldman20

Forum statistics

Threads
1,935
Messages
18,084
Members
27,827
Latest member
krasmaks