THIS GUIDE IS DEPRECATED. See http://voodooi2c.github.io
Hello everyone!
As you might know already that most of the OEMs are switching to I2C interface as it allows for much finer controls and higher precisions, anyways, that's not what you are here for.
If you are using VoodooI2C.kext on ELAN1200 trackpad device you might have noticed how cursor keeps moving into one direction until you single tap again to stop.
Also, the trackpad stops working completely after sleep, making it a nightmare to use your laptop.
So, we are going to fix both of them today so that you can use your laptop normally. Please note that multi-finger gestures are not supported yet as there is very little and limited development on I2C interface as this is fairly new.
So, upon following this guide you will have a working trackpad with basic pointing, single tap to select and dragging with drag lock.
Note: If you have removed _DSM methods or renamed them to something else, you will need to re-enable or add them again as this kext in solely dependent on ACPI. If you get a system panic on installing/loading this kext, this simply means you have incorrect DSDT.
Also, installing this kext directly is not recommended, First you should check if it will work for you by loading it from the terminal, manually.
So, let's get to it, first off, we will track by fixing the strange behavior of our trackpad, in order to fix that:-
- Download the VoodooI2C.kext attached to this post, this is a different one, meant only for ELAN1200 (Thanks Jake!)
- Open up terminal and type
# Please don't copy the lines starting with a "#"
# Assuming that your kext is installed at /System/Library/Extensions
sudo kextunload /S*/L*/E*/VoodooI2C.kext
# Assuming that your downloaded kext resides in Downloads folder
cd ~/Downloads
sudo chmod -R 755 VoodooI2C.kext
sudo chown -R root:wheel VoodooI2C.kext
sudo kextload VoodooI2C.kext
# Done
After loading the new kext your trackpad should work fine, if it does so, you can install the kext to /S/L/E
If the system reboots instantly, you have a incorrect DSDT. Please attach output of the script located at: https://osxlatitude.com/index.php?/topic/10154-tool-problem-reporting-file-generator/
How to fix trackpad not working after sleep:-
Please keep in mind that this is merely a workaround until this problem is fixed in the source code.
Download and install sleepwatcher by following the guide at: http://tyhoffman.com/blog/2013/09/sleepwatcher-power-event-driven-automation/
Once it is done installing open up terminal and type:-
sudo nano /etc/rc.wakeup
It will open up a text editor for you, in that write the following:-
#!/bin/bash
# Please replace "yourpasswordhere" with your login password, make sure you put your password in between the quotes, like, Ex324Ins should be "Ex324Ins"
userPass="yourpasswordhere"
echo $userPass | sudo -v -S &>/dev/null
sleep 2 #Waiting for system to wake up
# Assuming kext is installed at /S/L/E, Change path if not.
sudo kextunload /S*/L*/E*/VoodooI2C.kext
sleep 2
sudo kextload /S*/L*/E*/VoodooI2C.kext
exit
That's it. You can now reboot and you can see that your trackpad will work after sleep too (4 seconds after sleep, to be precise).
Note: If in any case your trackpad doesn't work after sleep after following the above methods, freak not, your keyboard is working, so, login to user user account, Hold CMD + Space to open up spotlight search. Type and open terminal from there.
Once the terminal is open, type:-
/etc/rc.wakeup
It will fix you trackpad for sure.
Note 2: If you ever change your login password you will have to update it in the rc.wakeup file too else the script won't work. To do so, open terminal and type:-
sudo nano /etc/rc.wakeup
And then replace the old password with your new password in the line,
userPass="yourpasswordhere"
IMPORTANT: The attached kext is only meant for ELAN 1200 devices. It might cause unexpected results on some other hardware. Please refrain from using it on some other hardware.
Hope that helped.
Regards
VoodooI2C.kext.zip