Contribute
Register

VoodooI2C Help and Support

Joined
Dec 13, 2014
Messages
14
Motherboard
ASUS TUF B356M-PLUS GAMING
CPU
i5-9600kf
Graphics
Radeon VII
Mac
  1. iMac
  2. MacBook Pro
Mobile Phone
  1. iOS
Hello,
My laptop is Lenovo yoga s730-13iml.
CPU: i7-10510u
I've already tried GPIO pinning and etc.
GenI2C results are attached.

But, my touchpad is still not working.

Problem reporting file with no patched files is attached.

Thanks a lot in advance :)
 

Attachments

  • 1.png
    1.png
    51.4 KB · Views: 68
  • 2.png
    2.png
    50.1 KB · Views: 72
  • debug_4612.zip
    13.8 MB · Views: 32
Last edited:
Joined
Apr 30, 2021
Messages
1
Motherboard
Gigabyte z270p-d3
CPU
Intel Core i7 6700
Graphics
MSI Radeon RX 580
This thread is intended for users of VoodooI2C to get support for using the kext on their system.

What is VoodooI2C?

VoodooI2C is a project consisting of macOS kernel extensions that add support for I2C bus devices. The project is split into two main components: the core extension and various other satellite extensions.

The Core
The core is the VoodooI2C.kext kernel extension. This kext is intended to be installed by anyone whose computer requires some form of I2C support. It consists of I2C controller drivers and is responsible for publishing device nubs to the IOService plane.

The Satellites
The satellites are a collection of various kernel extensions that implement support for a specific type of I2C device. An example of a satellite kext is VoodooI2CHID.kext which adds support for I2C-HID devices. Usually a user will install one satellite kext per class of I2C device.

What can I use VoodooI2C for?

The most common devices that are compatible with VoodooI2C are I2C-HID devices such as Precision Trackpads and Touchscreens. If you have an I2C trackpad or touchscreen, chances are it will work with this driver. It is also possible to use VoodooI2C to get multitouch on USB devices but this is experimental.

How do I install VoodooI2C?

All installation instructions can be found here: https://voodooi2c.github.io/#Installation/Installation

Help! It doesn't work

Follow carefully the instructions here: https://voodooi2c.github.io/#Troubleshooting/Troubleshooting

Where is the source code?

The main Github repository can be found here: https://github.com/alexandred/VoodooI2C

Upload all requested files in an archive to this thread. Note that if you are on 10.12+ then the system log has been moved. Instructions for how to obtain it can be found on the following page: https://voodooi2c.github.io/#Common Errors/Common Errors
I have a touch digitiser ripped out an old Asus S400CA (3rd gen intel). I have connected the touch control board to a USB cable and the device performs perfect in Windows. It is recognised in MacOS and works when the Voodoo2C and Voodoo2CHID kext is installed.

Is it possible to refine the functionality and behaviour of the touch screen? For example, can I run my finger across the screen without everything being highlighted? What does the Voodoo2CAtmelMXT kext do?

I also plan on connecting the LCD from the screen and use the whole unit as an external touchscreen monitor. This would require locking the touch functionality down to a single display. What would be involved in doing this? I believe these things can be done with the Touch-Base program, but I'd like to avoid paying the money. Has anyone else got a solution?

Currently using Clover 5162, but this summer I’m going to start over again using open core. My build is below - cheers.
Gigabyte z270p-d3
i7 6700
MSI Radeon RX 580
MacOs 10.15.7
Touch control board is an Atmel maXTouch Product ID: 0x8807 Vendor ID: 0x03eb (Atmel Corporation)
 
Joined
Jul 9, 2012
Messages
29
Motherboard
P8Z77-V Deluxe
CPU
i7 3770k @ 4.2Ghz
Graphics
Zotac GTX 960 AMP
Mobile Phone
  1. Android
@pastrychef I have the same dell laptop as you, but even after following all the steps (patching ssdt, adding voodooi2c, checking IORegs, etc), I am still not able to make my trackpad work.
Oddly enough I can't even find any voodooi2c log on my system, even thought voodooi2c_services and voodooi2c_gpio are loaded (confirmed with kextstat).

Can you please post your EFI folder, so I can try it?
Thank you in advance!
 

pastrychef

Moderator
Joined
May 29, 2013
Messages
17,796
Motherboard
Asus Z370-G Gaming (Wi-Fi AC)
CPU
i9-9900K OC'd @ 5.0GHz
Graphics
Vega 56 (Bios flashed to 64)
Mac
  1. MacBook
  2. Mac Pro
Classic Mac
  1. iBook
  2. Power Mac
  3. PowerBook
Mobile Phone
  1. iOS
@pastrychef I have the same dell laptop as you, but even after following all the steps (patching ssdt, adding voodooi2c, checking IORegs, etc), I am still not able to make my trackpad work.
Oddly enough I can't even find any voodooi2c log on my system, even thought voodooi2c_services and voodooi2c_gpio are loaded (confirmed with kextstat).

Can you please post your EFI folder, so I can try it?
Thank you in advance!

Please see my Vostro 3480 guide. Link is below, in my signature.
 
Joined
Jul 14, 2021
Messages
5
Motherboard
Lenovo Ideapad Flex 14-iwl (Model 81SQ0000US) (OpenCore)
CPU
i5 8265u (Cannonlake-LP, 300 series)
Graphics
Intel HD 620, 1920x1080
Mobile Phone
  1. Android
Hello all. I am completely defeated. I have a Lenovo Flex 14-iwl (very similar to S340/S540).

I would REALLY appreciate it if ANYONE, @ben9923, or @jaymonkey could take a look at my hot patch code for my touchpad for me. It works, but only in polling mode, and I am trying to remedy that. I've spent HOURS and can sift through code and figure out things out usually, but am not a programmer.

From what I can tell, my issue seems quite similar to the one @ben9923 fixed for @jaymonkey a few posts back, but I can't pin point the exact changes needed as my original DSDT code seems a bit different.

From what I learned from the Voodooi2c logs, ioreg, etc, I should be using pin 0x50, but it cannot register that pin, similar to @jaymonkey 's issue. I have attached my laptop's DSDT, my TPAD hot patch SSDT code, and the Voodooi2c log for good measure.

FYI The log info for TPXX & MSFT0001 pertains to my touchpad. You can disregard ECSH & WCOM51C7. Those are HID Sensors & my touchscreen, respectively. I am currently using SSDT-XOSI.aml while trying to fix this, but would like to remove and disable it, as it seems to have broken my brightness Function keys I mapped successfully.

VERY grateful for anyone willing to help, I am beyond frustrated. Thank you so much.

UPDATE: I actually got it working and fixed it! Just a few minor edits, but more importantly, since I had tried everything possible code-wise, I decided to dedicate time to sifting through the entire advanced BIOS menu. I eventually found a setting "Force Unlock On All GPIO Pads" and it was disabled. I did some research and thought this had a very high chance of being the fix and changed it to enabled. The pin that shows up in IOreg and Windows didn't work so I just used one of the values I had generated when following the Pinning Guide, and VOILA! Interrupt Mode!

I have not seen one person mention this setting anywhere and I see tons of people with Lenovo laptops similar to mine that are stuck in Polling mode. I hope people see this and it helps them. I may not get back the hours upon hours I spent trying to fix it, but hey I am grateful I did. A big thank you to Alex for his hard work on Voodooi2c and the rest of the community for theirs.
 

Attachments

  • DSDT.aml
    251.8 KB · Views: 25
  • SSDT-TPAD.aml
    939 bytes · Views: 42
  • Voodoo Log.txt
    8.1 KB · Views: 50
Last edited:
Joined
Sep 24, 2012
Messages
174
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
@ben9923

I've been experimenting with booting my laptop with OpenCore (0.6.6) rather than Clover (r5107).

Everything is working except for VoodooI2C my HP laptop has a TouchScreen and Active Stylus that work fine when booting the laptop with Clover (r5107) but so far I have been unsuccessful in getting VoodooI2C to work when booting with OpenCore ... full specs for my Laptop are in my sig.

I am using the same patched DSDT with OpenCore that I use with Clover, the only change that was relevant to VoodooI2C was to the return in the _CRS method of the TPL0 device :-

Code:
Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                 Return (ConcatenateResTemplate (SBFB, SBFG))
            }

With this change VoodooI2C has always worked when booted with Clover, there was no need to change anything with the GPIO.

I can tell that VoodooI2C and its satellites are loading as searching for "voodooi2c" in IORegistryExplorer shows that the kext's have loaded and attached to the I2C device :-

Here is a IOREG when booted with Clover (VoodooI2C working) - Catalina 10.15.7
View attachment 508955
And here is a IOREG when booted with OpenCore (VoodooI2C not working) - Big Sur 11.2.1
View attachment 508956
As you can see they are the same.

I've ensured that the VoodooI2C kexts are loaded in the correct order in the OpenCore config.plist
View attachment 508957
As you can see I am loading the standalone version of VoodooInput before VoodooI2C and have disabled the bundled VoodooInput in both VoodooI2C and VoodooPS2Controller, but I have also tried with the bundled version enabled but that also did not help, all kexts are the latest version.

I have tried adding SSDT-GPIO to my injected ACPI SSDT's when booting with OpenCore (I don't use it when booting with Clover) but this does not help if its injected or not.

I'm kind of at a loss to understand why its not working as its worked so well in the past when booted with Clover ?
Would appreciate any thoughts you might have on how to further debug the issue.

Appreciate all the work you and Alex do with VoodooI2C for the community.

Cheers
Jay
Hi, did you get your multitouch gesture work on your touch screen? I have a ASUS ZenBook Pro Duo 15 with the second screen being TouchScreen and Active Stylus. However, it can only work with the stylus or a single touch point with finger.
I saw your post in here and wonder how did you solve it?
 

jaymonkey

Moderator
Joined
Aug 27, 2011
Messages
3,997
Motherboard
GB Z490 Vision G
CPU
i9 10850K OC @ 5.2 GHz
Graphics
Vega 64 LC + HD 630
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Mobile Phone
  1. iOS
Hi, did you get your multitouch gesture work on your touch screen? I have a ASUS ZenBook Pro Duo 15 with the second screen being TouchScreen and Active Stylus. However, it can only work with the stylus or a single touch point with finger.
I saw your post in here and wonder how did you solve it?

@shicechi,

Yes multitouch is working fine with the touchscreen on my 2017 HP Spectre X360 (specs in sig).

The native DSDT on my laptop is already very compatible with VoodooIC2, no GPIO pin patching required and nothing extra to enable Multitouch. The only thing I needed to do to get VoodooIC2 working was to create a SSDT to modify the TPL0 devices _INI method and name.

Once VoodooI2C loaded everything just worked.

Cheers
Jay
 
Joined
Sep 24, 2012
Messages
174
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
@shicechi,

Yes multitouch is working fine with the touchscreen on my 2017 HP Spectre X360 (specs in sig).

The native DSDT on my laptop is already very compatible with VoodooIC2, no GPIO pin patching required and nothing extra to enable Multitouch. The only thing I needed to do to get VoodooIC2 working was to create a SSDT to modify the TPL0 devices _INI method and name.

Once VoodooI2C loaded everything just worked.

Cheers
Jay
That's great, congrats! Is it possible for you to share your DSDT and the SSDT? I'm hoping to compare what's difference to cause the issue.
 

jaymonkey

Moderator
Joined
Aug 27, 2011
Messages
3,997
Motherboard
GB Z490 Vision G
CPU
i9 10850K OC @ 5.2 GHz
Graphics
Vega 64 LC + HD 630
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Mobile Phone
  1. iOS
That's great, congrats! Is it possible for you to share your DSDT and the SSDT? I'm hoping to compare what's difference to cause the issue.

@shiecldk,

DSDT is unique to each laptop .. everything will be completely different to your laptop it won't help at all.
I'm booting with OpenCore 0.7.2 and not injecting custom DSDT anymore ..

Code for my SDDT is this :-

Code:
DefinitionBlock ("", "SSDT", 2, "HACK", "SDM1", 0x00000000)
{
    External (_SB_.PCI0.I2C0.TPL0, DeviceObj)
    External (SDM1, IntObj)

    Scope (_SB)
    {
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            If (_OSI ("Darwin"))
            {
                SDM1 = Zero
            }
        }
    }

    Scope (\_SB.PCI0.I2C0.TPL0)
    {
        If (_OSI ("Darwin"))
        {
            Name (OSYS, 0x07DF)
        }
    }
}

But again it will be unique to my laptop .. I doubt that the same device is called the same in your DSDT.

Cheers
Jay
 
Joined
Sep 24, 2012
Messages
174
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
@shiecldk,

DSDT is unique to each laptop .. everything will be completely different to your laptop it won't help at all.
I'm booting with OpenCore 0.7.2 and not injecting custom DSDT anymore ..

Code for my SDDT is this :-

Code:
DefinitionBlock ("", "SSDT", 2, "HACK", "SDM1", 0x00000000)
{
    External (_SB_.PCI0.I2C0.TPL0, DeviceObj)
    External (SDM1, IntObj)

    Scope (_SB)
    {
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            If (_OSI ("Darwin"))
            {
                SDM1 = Zero
            }
        }
    }

    Scope (\_SB.PCI0.I2C0.TPL0)
    {
        If (_OSI ("Darwin"))
        {
            Name (OSYS, 0x07DF)
        }
    }
}

But again it will be unique to my laptop .. I doubt that the same device is called the same in your DSDT.

Cheers
Jay
Thank you! Could I see your DSDT to compare with mine? Hoping to see how your DSDT in I2C0.TPL0 device is different from mine.
 
Top