Contribute
Register

[WIP] VoodooI2C I2C Trackpad (Limited Support)

Joined
Mar 21, 2015
Messages
312
Motherboard
Gigabyte GA-Z97X-Gaming 3 G1
CPU
i5-4690K OC@4.3GHz
Graphics
RX 480
Mobile Phone
Android
*** MODERATOR NOTE ***

This thread is for an older I2C kext no longer supported. A rewritten I2C kext is now available.

Please refer to this thread for I2C trackpad/touchscreen/etc:
https://www.tonymacx86.com/threads/voodooi2c-help-and-support.243378/

*** END MODERATOR NOTE ***

VoodooI2C
VoodooI2C is a project to bring support for I2C input devices to OS X. This repository contains code for both I2C controllers and I2C devices.

Current Status
Currently the following Intel Lynxpoint I2C controllers are almost fully supported:

  • INT33C2 and INT33C3 - Haswell era
  • INT3432 and INT3433 - Broadwell era
  • pci8086,9d60, pci8086,9d61, pci8086,a160 and pci8086,a161 - Skylake era
Most i2c-hid touchscreens and trackpads work with minor modifications to the drivers. Note that most device have only very basic mouse functionality (navigating, left/right click, scrolling).

The following trackpads have basic multitouch: CYAP0000, ELAN0000, ELAN0100, ELAN0600, ELAN1000.


The following devices are confirmed to work with the current iteration of VoodooI2C

  • Synaptics 7500 Clearpad touchscreen (Dell Venue Pro 11)
  • Synaptics 7501 Clearpad touchscreen (Acer Switch 12)
  • Atmel 1000 touchscreen (Dell XPS 12)
  • NTRG 0001 touchscreen (Surface Pro 3)
  • FTSC1000 touchscreen (Cube i7)
  • WCOM4818 touch screen + stylus (Skylake HP Elite X2 1012)
  • CYAP0000 trackpad (Haswell Chromebooks)
    • This uses the proprietary interface VoodooCyapaGen3Device.
  • ATML0001 touchscreen (Acer C720P Chromebook/Chromebook Pixel 2)
    • This uses the proprietary interface VoodooI2CAtmelMxtScreenDevice.
  • ELAN0000 trackpad (Broadwell Chromebooks)
    • This uses the proprietary interface VoodooElanTouchpadDevice
  • ELAN1000 trackpad (Skylake Asus K501UB-DM039D) (Skylake ROG Works)
    • This uses the proprietary interface VoodooElanTouchpadDevice
  • SYNA0000 trackpad (Dell Chromebook 13)
    • This uses the proprietary interface VoodooSynapticsRMITouchpadDevice
Current Bugs:
5 Finger Kernel Panic on a few trackpads
No Multi-Touch Support [WIP]
Support in Sierra Requires Rolling back to El Capitan System Preferences for Trackpad (If not it will turn white)
Trackpad not waking After Sleep (E1000)


Sierra steps:
I made a workaround for this that I' happy to share. I thought of creating an AppleScript to:
  1. Silently (not visible) Open Trackpad Prefpan in System Preferences and uncheck "Clicking"
  2. Close System Preferences
  3. Silently (not visible) Re-open Trackpad Prefpan in System Preferences and check "Clicking", "Dragging", "Use two finger ...", "Allow horizontal scrolling" and "Tap trackpad using two fingers ..."
  4. Close System Preferences again
Why do steps 1 & 2? because at least on my machine after boot the prefpan does not show all controls. Unchecking "Clicking" and reopening the prefpan restore all the controls.

Here's the script:
Code:
quit application "System Preferences"
delay 0.25

tell application "System Preferences"
    --activate
    set current pane to pane "com.apple.preference.trackpad"
    tell application "System Events" to tell process "System Preferences"
        repeat until exists window "Trackpad"
        end repeat
        tell window "Trackpad"
            set cbClicking to checkbox "Clicking" of group 1 of window "Trackpad" of application process "System Preferences" of application "System Events"
            tell cbClicking
                if (its value as boolean) then click cbClicking
            end tell
        end tell
    end tell
end tell

delay 0.25
quit application "System Preferences"
delay 0.25

tell application "System Preferences"
    --activate
    set current pane to pane "com.apple.preference.trackpad"
    tell application "System Events" to tell process "System Preferences"
        repeat until exists window "Trackpad"
        end repeat
        tell window "Trackpad"
            set cbClicking to checkbox "Use two fingers to scroll" of group 2 of window "Trackpad" of application process "System Preferences" of application "System Events"
            tell cbClicking
                if not (its value as boolean) then click cbClicking
            end tell
 
            set cbClicking to checkbox "Allow horizontal scrolling" of group 2 of window "Trackpad" of application process "System Preferences" of application "System Events"
            tell cbClicking
                if not (its value as boolean) then click cbClicking
            end tell
 
            set cbClicking to checkbox "Clicking" of group 1 of window "Trackpad" of application process "System Preferences" of application "System Events"
            tell cbClicking
                if not (its value as boolean) then click cbClicking
            end tell
 
            set cbClicking to checkbox "Dragging" of group 1 of window "Trackpad" of application process "System Preferences" of application "System Events"
            tell cbClicking
                if not (its value as boolean) then click cbClicking
            end tell
 
            set cbClicking to checkbox 4 of group 1 of window "Trackpad" of application process "System Preferences" of application "System Events"
            tell cbClicking
                if not (its value as boolean) then click cbClicking
            end tell
        end tell
    end tell
end tell
delay 0.25
quit application "System Preferences"
This code should be pasted into AppleScript then export the document to an Application (signing it is recommended). The resulting application should then be added to System Preferences > Security & Privacy > Privacy tab > Accessibility; to allow it to run. Now after boot we can run this app once to restore trackpad settings. Better yet is to add the app to System Preferences > Users & Groups > Login Items; so it runs automatically on login.

This could look as a lot of work but actually it is very simple to use and work very well; until better solutions are found.
https://www.tonymacx86.com/threads/solved-trackpad-preference-pane-is-blank.199946/page-2#post-1335143


Source Code (Main): https://github.com/alexandred/VoodooI2C
Branch (For ELAN1200): https://github.com/MacForceOne/VoodooI2C
(Please do not use the Gitter unless if really needed because the goal of tonymacx86 forum is a huge archieve of people helping each other and in the future when someone else needs help they can follow and see if the old method from the older post works)

Add This Repo To MaciASL (Patches) : http://raw.github.com/alexandred/VoodooI2C-Patches/master


Credits:
Alexandred, CoolStar, maximevince

It works on the Asus ROG GL552VW without DSDT for me but it might not be the same for you



Working on my ASUS X556UA too - ELAN1000.
Important to say that most of the times it won't work automatically. I needed I2C controller DSDT patches+deleting Lpss kexts.

**EDIT:
As the latest versions of VoodooI2C letting you use the newer trackpad prefpane if you run macOS 10.12 and above, a new AppleScript should be made.
First, if you replaced you prefpane with one from El Capitan, put the native Sierra one back inside the prefpane folder.
Then, delete your old AppleScript from Login Items (Like trackpadLoginDefine I linked before) and download the attached trackpadLoginDefineV2. Put it in Login Items instead of the old one :)

It would fix "Tap to click" for now, but scrolling needs to be activated manually on every reboot (Hidden in the Accessibility settings, I hope I would be able to fix that later)

Updated kext (December 28) Attached :)

**Old Instructions:
Anyway, for Sierra I would recommend not using the prefpane linked in the original bug thread, it made my laptop+trackpad buggy and slow.
Link to a file taken from a MacBook Air: (didn't cause any issues for me)
https://mega.nz/#!oNdSWbYD!KNjZQj2Qa3h1F7o78HHA3nW9wuLaMvgS9yJMLozSd3w
(Tell me if I'm not allowed to put that link here, and I'll remove it. It just weighs over 100MB and I can't upload it straight here)
Put it in /System/Library/PreferencePanes instead of the existing one.

Also attached the built "application" written by Ahmed_ais.
Put it in login items and allow it in the security preferences. He explained how to do that :)
 

Attachments

Last edited by a moderator:
Joined
Apr 21, 2016
Messages
1,360
Motherboard
ASUS X556UA-Clover
CPU
i5-6200U
Graphics
HD 520,1366x768
Mobile Phone
iOS
Working on my ASUS X556UA too - ELAN1000.
Important to say that most of the times it won't work automatically. I needed I2C controller DSDT patches+OS patch+deleting Lpss kexts.

Where to download VoodooI2C:
You may download the latest release from the GitHub releases page:
https://github.com/alexandred/VoodooI2C/releases

How to install VoodooI2C:
First, you should only install VoodooI2C to your HDD after you've confirmed it's working. Until then, you should manually load it with terminal:
Code:
#Give the file correct permissions. You should only use this once:
sudo chown -R root:wheel VoodooI2C.kext

#Load the kext:
sudo kextutil -v VoodooI2C.kext
Most of the times it wouldn't work right away, and you would probably need to patch your DSDT for it, or Remove your Lpss kexts.
Open IORegistryExplorer and look for 'I2C'. If you see 'AppleIntelLpssI2CController' under one of your I2C devices, try to remove AppleIntelLpssI2C.kext and AppleIntelLpssI2CController.kext.
When removing those 2 kexts, you should also remove AppleHPM.kext, since it has dependencies on the I2C kexts.
After that, rebuild your kextcache and reboot.

If not, you might need to patch your DSDT to make your trackpad work.
RehabMan's ACPI patching guide: https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.152573/

The most common patch, you may already have is an OS Patch.
Seems Windows 10/8.1/8 works well. I would use the patch by the OS your laptop came with.
Note: the same result can be achieved with RehabMan's SSDT-XOSI + _OSI->XOSI rename (If you want to use Windows 10, make sure to uncomment 2013 and 2015 from the file before compiling)

If it's still not working, you may need to use the 'INT344x' patches from the VoodooI2C MaciASL repo.
Instructions from the project's GitHub Wiki:
1. Open MaciASL and navigate to the preferences.
2. In the preferences, open up the Sources tab and click the plus button.
3. In the name column write VoodooI2C and put http://raw.github.com/alexandred/VoodooI2C-Patches/master as the URL.
4. Close the preferences window.
INT3443 is probably the patch you need.
You will may have compile errors after applying them, read 'VoodooI2C Problem Reporting' down in such case.

A note about the ELAN1200:
There's no multitouch support for this device. Only basic operations are supported.

Post-sleep problems:
As our experience tells, it seems that the ELAN1000 and ELAN1200 trackpads sometimes won't work after sleep.
Until that's fixed within the kext, @haimann951 suggested a solution for this problem
Read post #349 for details.
Note: his post is about the ELAN1200, and from my testing this doesn't work with the ELAN1000.

If you can't boot with VoodooI2C:
First, you should identify the problem is really because of VoodooI2C. If you boot verbose and the last lines you see are related to VoodooI2C, or a kext named AppleIntelLpss*.kext, it's probably because of the kext:
Solving it would require you to remove the problematic kext(s) using your USB installer, or Recovery mode.

If you did NOT need to remove your Lpss kexts until now, there's probably a problem with VoodooI2C itself, and the more reasonable solution is to remove VoodooI2C.

If you did have to remove your Lpss kexts, maybe removing them would solve your problem.

Boot to your installer/Recovery partition and open terminal:
Code:
#Navigate to your drive:
cd /Volumes/"YourPartitionName"

#Navigate to system kexts location:
cd /System/Library/Extensions

#Remove AppleIntelLpssI2C.kext and AppleIntelLpssI2CController.kext:
rm -r AppleIntelLpssI2C.kext
rm -r AppleIntelLpssI2CController.kext
After that, you should reboot, maybe more than once :)
(Make sure to delete AppleHPM.kext as well after that, but you only need to delete those 2 kexts to boot)

VoodooI2C Problem Reporting:
If you have any problem, please describe your problem well.
It's very hard to help when we don't know what's the problem...

Attach your current DSDT.dsl file (containing every patch you already have)
If you've already applied some VoodooI2C related patches, attach a version without them as well.
You should also upload a current copy of IOReg (v2.1)
You may also attach your config.plist (sometimes not needed, but it may help to find an issue)
 
Last edited:
Joined
Jul 31, 2012
Messages
28
Motherboard
Asus P8 Z68 -V
CPU
Intel i7 2600K
Graphics
Zotac GTX 570
Mobile Phone
Android, iOS
Working on my ASUS X556UA too - ELAN1000.
Important to say that most of the times it won't work automatically. I needed I2C controller DSDT patches+deleting Lpss kexts.

Anyway, for Sierra I would recommend not using the prefpane linked in the original bug thread, it made my laptop+trackpad buggy and slow.
Link to a file taken from a MacBook Air: (didn't cause any issues for me)
https://mega.nz/#!oNdSWbYD
(Tell me if I'm not allowed to put that link here, and I'll remove it. It just weights over 100MB and I can't upload it straight here)
Put it in /System/Library/PreferencePanes instead of the existing one.

Also attached the built "application" written by Ahmed_ais.
Put it in login items and allow it in the security preferences. He explained how to do that :)
Hi, thank you for upload preference panel file! Can you give us the password for download it? Thank you
 

Feartech

Moderator
Joined
Aug 3, 2013
Messages
13,359
Motherboard
Asus N752VX-Clover
CPU
i7-6700HQ / HM170
Graphics
HD530 + GTX 950m 1920 x 1080
Mac
iMac
Mobile Phone
iOS
Causes KP on my ASUS TP500LN with INT33C3
i had some kernel panics when i used -v (verbose mode) but when i don't use -v then it would boot normally. on Sierra. i did remove some lpss controller kexts but didn't do the dsdt patches
 
Joined
Apr 21, 2016
Messages
1,360
Motherboard
ASUS X556UA-Clover
CPU
i5-6200U
Graphics
HD 520,1366x768
Mobile Phone
iOS
Hi, thank you for upload preference panel file! Can you give us the password for download it? Thank you
Sorry, I didn't know you need password.
Link is now updated, no password needed :)
 
Joined
Sep 5, 2012
Messages
99
Motherboard
Asus TP500LN
CPU
i7 4510U/HM87
Graphics
HD 4400 (1366x768)
Mobile Phone
Android
i had some kernel panics when i used -v (verbose mode) but when i don't use -v then it would boot normally. on Sierra. i did remove some lpss controller kexts but didn't do the dsdt patches
I think the only related DSDT patches i have are for ASUSNBFNKEYS not for trackpad.
Have tried with and without -v.
Clover UEFI.
 
Joined
Mar 13, 2010
Messages
38
Motherboard
Asus UX501VW
CPU
I7-6700HQ
Graphics
Hd530+GTX960
Mac
MacBook
Mobile Phone
Android
Working on my ASUS X556UA too - ELAN1000.
Important to say that most of the times it won't work automatically. I needed I2C controller DSDT patches+deleting Lpss kexts.

Anyway, for Sierra I would recommend not using the prefpane linked in the original bug thread, it made my laptop+trackpad buggy and slow.
Link to a file taken from a MacBook Air: (didn't cause any issues for me)
https://mega.nz/#!oNdSWbYD!KNjZQj2Qa3h1F7o78HHA3nW9wuLaMvgS9yJMLozSd3w
(Tell me if I'm not allowed to put that link here, and I'll remove it. It just weights over 100MB and I can't upload it straight here)
Put it in /System/Library/PreferencePanes instead of the existing one.

Also attached the built "application" written by Ahmed_ais.
Put it in login items and allow it in the security preferences. He explained how to do that :)
Please send me password for download.Thanks.
 
Top