onemanosx Posted December 24, 2018 Share Posted December 24, 2018 This post is not meant to be a guide. Instead, I hope this thread is able to gather all VoodooI2C kext users to share their knowledge and new users to be able to activate their I2C track pads. This write up is a simplified version of the original to benefit new hackintoshers. It is always advised to read the actual documentation by the developer in case I had missed out important key points. ย Another note, users are urged to participate in developer's gitter chat for better support or report major issues. And you are expected to had done the preliminary steps mentioned below. I would like to point out again that this is not an official VoodooI2C help page. ย IMPORTANT 1: Ensure 'Disable built-in trackpad when...' is disabled within accessibility preferencesThis setting usually appears when your I2C device is fully detected in ioreg app but trackpad still do not function. Or, trackpad do not function when a USB mouse is connected. So, if you have not got your trackpad working, then move on to the next steps. ย ย ย IMPORTANT 2: Enable advanced option for trackpad in bios if option is available. ย IMPORTANT 3: Delete Trackpad and Mouse plugin from within VoodooPS2Controller kext to avoid conflict. We only need the keyboard plugin. Except in certain scenarios where touch screen is an I2C device and trackpad is a PS2, then do not remove the plugin. ย ย IMPORTANT 4: Disable _DSM to XDSM/ZDSM patches. This is one of the common mistakes found from most new users. DO NOT USE THESE PATCHES. ย ย As of VoodooI2C Release v2.3, It is no longer necessary to patch/remove the built-in I2C kexts to make VoodooI2C load. Hence, Coolstar's patch below is deprecated. ย IMPORTANT 5: Disable Apple's I2C Kext to patch by adding Coolstar's patch below ย Include Coolstar's patch in Clover's kext to patch. ย <key>KextsToPatch</key> <array> <dict> <key>Comment</key> <string>Prevent Apple I2C kexts from attaching to I2C controllers, credit CoolStar</string> <key>Disabled</key> <false/> <key>Find</key> <data> SU9LaXQ= </data> <key>InfoPlistPatch</key> <true/> <key>Name</key> <string>com.apple.driver.AppleIntelLpssI2C</string> <key>Replace</key> <data> SU9LaXM= </data> </dict> <dict> <key>Comment</key> <string>Prevent Apple I2C kexts from attaching to I2C controllers, credit CoolStar</string> <key>Disabled</key> <false/> <key>Find</key> <data> SU9LaXQ= </data> <key>InfoPlistPatch</key> <true/> <key>Name</key> <string>com.apple.driver.AppleIntelLpssI2CController</string> <key>Replace</key> <data> SU9LaXM= </data> </dict> </array> </dict> ย Or, if you are using plist editor/ xcode/ clover configurator. Refer to the the screenshot below. ย Plist Editor/Xcode ย Clover Configurator ย IMPORTANT 6: Update to the latest BIOS version if available. Some machines had been reported to have working/ better trackpad experience after a BIOS update. ย IMPORTANT 7: Never. NEVER INSTALL KEXTS in System/Library/Extension (S/L/E)! For the ease of troubleshooting, keep your kexts in Clover/Kexts/Other and that works majority of the time! If you have had installed kexts using kext installer app or similar, REMOVE the installed kexts in S/L/E (or L/E) NOW!! Keep kexts at Clover/Kexts/Other only. ย OPTIONAL: ย In the past, track pad tends to be disabled after every OS update and a simple rebuild of kext cache then rebooting will solve that minor issue. However, adding these in config.plist force loads trackpad without rebuilding kext cache (I'd recommend to still do a rebuild, anyway ) ย <key>ForceKextsToLoad</key> <array> <string>\System\Library\Extensions\IOGraphicsFamily.kext</string> </array> ย Additional Info : ย Some users might want to check that the trackpad settings are ticked or configured. In some cases, trackpad will only work like a normal mouse if the settings are not chosen. If you do not have these trackpad settings appear, it is likely you do not have a working battery status or you are using the wrong voodooI2C satellite kext or you did not choose advance setting for trackpad in BIOS. ย ย This is the official VoodooI2C gitter chat where you can ask the dev for comprehensive support https://gitter.im/alexandred/VoodooI2C ย It is also a known issue (at least in my knowledge at this point of writing) that certain version of kexts are not compatible with some devices and may involve some trial and error of different releases of kexts. ย *Note: You must not have any other I2C kexts installed except for VoodooI2C kexts. ย The following device classes are fully supported: ย - I2C-HID devices - ELAN devices - FTE devices ย Before posting for help and attaching send me files, new users are advised to take the below steps which are crucial. These preliminary steps are also outlined by the original dev in his wiki guide. ย How to provide debug files ย An easy way to provide debugging files is to run to run this app http://Olarila.com/files/Utils/RunMe.app.zip. Run the app and do not do anything until the app has finished collecting all necessary files. Then upload the sendme folder created on desktop. Also, before using Run_me app, make sure you boot from your SSD/HDD clover and NOT from USB bootable disk! ย VoodooI2C Dev guide can be read HERE. ย Lets Begin! ย Basically, we are required to know these 3 main items ย 1. ACPI ID 2. APIC Pin Number 3. Ensure I2C Serial bus name are correctly labelled in DSDT. ย Below are the steps on how to achieve the 3 criteria mentioned above. ย Step 1 - Identify ACPI ID or GPIO pinning ย If you have windows installed in another partition or drive, use Windows Device Manager to locate your device's ACPI ID like shown in the picture below. ย ย In this example, the ACPI ID is TPL0 ย If you do not have windows installed, dont worry, continue to follow the step below ย Step 2. Determining your interrupt pinning situation/ APIC pin number ย a. First compile your DSDT by simply pressing F4 at clover boot. The file will be available at Clover/ACPI/Origin b. Patch your DSDT with windows patch script below using MaciASL. If your CPU is Skylake and above, also add GPI0 controller patch ย Windows Emulation patch into_all method code_regex If\s+\([\\]?_OSI\s+\(\"Windows\s2015\"\)\) replace_matched begin If(LOr(_OSI("Darwin"),_OSI("Windows 2015"))) end; ย GPI0 controller patch into method label _STA parent_label GPI0 replace_content begin Return (0x0F) end; ย c. Place the patched DSDT into your clover/ACPI/patched folder. Reboot. d. Use IOREG to find your ACPI ID like below picture ย ย In this example, the ACPI ID is TPD1. ย Click on IOInterruptSpecifiers to reveal the hexadecimal APIC pin number. In this example the APIC pin number is 0x33. If we convert 0x33 to decimal, it will be 51. ย If your APIC pin number is equal or less than 47, you can proceed to install kexts. If you do not have IOInterruptSpecifiers, you can also proceed to install kexts. ย Download latest kexts HERE ย Always install 3rd party kexts in Clover/kexts/other. DO NOT install kexts in S/L/E! NEVER! ย Step 3. Ensure I2C Serial bus name is correctly labelled ย You will also need to make sure that your I2C Serial Bus Name is correctly labelled. Search for your device ACPI ID in your DSDT until you reach its device entry, you should be able to find a Name called SBFB. If you cannot find it, you may find something that looks like this instead: ย Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (SBFI, ResourceTemplate () { I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80, AddressingMode7Bit, "\\_SB.PCI0.I2C1", 0x00, ResourceConsumer, , Exclusive, ) Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, ) { 0x0000006D, } }) Return (SBFI) } ย In this case, rename SBFI to SBFB and remove the following from it: ย Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, ) { 0x0000006D, } ย But, what if your APIC pin number is greater than 47? ย to be continued.. ย Note: All guide and thanks to the hardwork of original developer whom can be contacted at https://gitter.im/alexandred/VoodooI2C Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
onemanosx Posted December 24, 2018 Author Share Posted December 24, 2018 I2C device with APIC Pin Number greater than hex 0x2f (or decimal 47) ย In post 1, I describe the procedure or implementation for I2C device with APIC Pin Number less than or equal to 0x2f (HEX). Let us now proceed for devices with APIC Pin Number GREATER than 0x2f. ย 1. Open DSDT and find the below SBFG Name ย Name (SBFG, ResourceTemplate () { GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, , ) { // Pin list 0x0000 } }) ย If you are not able to find the code above in your DSDT, then you will need to add in manually. Thus, after manually adding the code in the DSDT, we will now need to define a proper pin. ย Manually pinning a device ย As an example, we will use the hexadecimal APIC Pin number of 0x33 (i.e decimal 51) ย ย a. Go to this SITE b. Look for hexadecimal 0x33 in the table and take note of the IRQ table on the left pane. Here, 0x33 corresponds to #define GPP_B3_IRQ ย ย c. Then we will go to this SITE ย Here we will find the corresponding decimal digit for #define GPP_B3_IRQ which is 27 ย ย If we convert decimal 27 into HEX, we will get 0x1B. This is our pin! Hence, our code will now look like this in the DSDT. ย Name (SBFG, ResourceTemplate () { GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, , ) { // Pin list 0x1B } }) ย Finally, the last step will be ensuring that the device is well pinned by checking _CRS method in DSDT so that it returns as ย Return (ConcatenateResTemplate (SBFB, SBFG)) ย In my case originally _CRS looks like this ย Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings { If ((OSYS < 0x07DC)) { Return (SBFI) } If ((SDM1 == Zero)) { Return (ConcatenateResTemplate (SBFB, SBFG)) } Return (ConcatenateResTemplate (SBFB, SBFI)) } ย This is how it looks like eventually. ย Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings { If ((OSYS < 0x07DC)) { Return (SBFI) } If ((SDM1 == Zero)) { Return (ConcatenateResTemplate (SBFB, SBFG)) } Return (ConcatenateResTemplate (SBFB, SBFG)) } ย We can now install our kexts and test if our trackpad is working! ย NOTE: For other ACPI tables, one might not find the exact _CRS return as demonstrated. What we should really focus on is that there are no SBFI. If there is, just change it to SBFG. ย The above procedure describes if SBFG Name is not found in DSDT. So, what shall we do if SBFG Name exists? In this instance, we will just need to ensure that Method _CRS will return as ย Return (ConcatenateResTemplate (SBFB, SBFG)) ย And we can proceed to install our kexts and reboot! ย Finding a usable pin as described in the example above is when GPI0 is "SunrisepointLP". ย ย Look down the list below for other GPI0 names. ย For CannonPointLP: The IRQ table is HERE And the second reference table for CannonPointLP is HERE ย For CannonPoint_H: IRQ table is HERE And second reference table for CannonPoint-H is HERE ย GPI0 with multiple communities ย On newer chipsets (Cannon Point and newer), there is a mismatch between the GPIO pin and the hardware pin number. If you are using such hardware, you will need to convert the hardware pin number you have found to a GPIO pin, to allow the driver to use the pin. ย For CannonPointLP is HERE For CannonPoint-H is HERE ย The pin calculation for GPI0 with multiple communities is different from the "older" chip sets but here is the quote from dev site. Its actually quite simple. ย GPIO pins are divided to multiple communities, containing multiple GPPs each. During the mapping from an APIC pin to a GPIO pin you have found a label in the form GPP_XYY_IRQ, or GPP_XYY. X is the GPP identifier you are looking for. Find the GPP of the pin you have found in one of the communities in the link. A GPP will have the form CHIPSET_GPP(num, base, end, gpio_base), /* GPP_X */. To convert your hardware pin to a usable GPIO pin, take the decimal GPIO pin number you have found, subtract the base, then add the gpio_base. The result is your GPIO pin number. Notice a gpio_base of X_NO_GPIO means this pin is not valid for use. ย Convert this to a hexadecimal number, this is your hexadecimal GPIO pin. You may notice that your hexadecimal APIC pin appears multiple times in the first list mentioned above. You will need to repeat the lookup process for all occurences of your hexadecimal APIC pin to obtain all possible hexadecimal GPIO pins. You will then need to test all of them to see which one works. ย EXAMPLE ย As an example, say we have APIC pin of 0x5F for CannonPointH. Looking through the table HERE we have three IRQ values i.e ย GPP_C23 GPP_H23 GPP_K23 ย Next we go to the second reference table for CannonPointH HERE ย And we find these pins in Decimal ย GPP_C23 > 74 GPP_H23 > 202 GPP_K23 > 178 ย Finally, we go to the third table for CannonPointH HERE. And the pin calculation is as per illustrated below: ย CNL_GPP(0, 51, 74, 64), 74 - 51 + 64 = 87 = 0x0057 ย CNL_GPP(0, 155, 178, 192) 178-155+192= 215 = 0x00D7 ย CNL_GPP(1, 179, 202, 224) 202-179+224= 247 = 0x00F7 ย So, we have 3 GPI0 pins to test with and hopefully one of the pins will work for interrupt mode. ย Note that (in very rare cases), the corresponding GPIO hexadecimal pin will not work. In this case, you can try some of the common values such as 0x17, 0x1B, 0x34 and 0x55. ย That is all! Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
onemanosx Posted December 24, 2018 Author Share Posted December 24, 2018 [ref]imran.sefat[/ref], Boot with attached clover folder and run http://Olarila.com/files/Utils/RunMe.app.zip Imran-CLOVER.zip ย Added in 22 minutes 7 seconds: [ref]sarakabir[/ref], Your SSDT-ELAN refers to the wrong I2C device. Your I2C device is TPD0 and not ETPD ย Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
mathewgx Posted December 24, 2018 Share Posted December 24, 2018 Could you please upload latest voodooi2c commits ? Tried with lilu and friends but gives error. Quote Link to comment Share on other sites More sharing options...
onemanosx Posted December 24, 2018 Author Share Posted December 24, 2018 Could you please upload latest voodooi2c commits ? I use officially released kexts from dev Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
erroruser Posted December 24, 2018 Share Posted December 24, 2018 [ref]onemanosx[/ref], Quote AMD Ryzen 7 3700X, MSI MPG X570 Gaming Plus, Corsair Vengeance RGB PRO 16GB DDR4 3200MHz, Sapphire rx 5700 XT, fractal celcius s36 HP Notebook - 15-ay028ca (Touch), 16 GB 2133 MHz DDR4, Intel HD Graphics 520 1536 MB Asus z97-c i5, i5 4460, 32 GB 1648 MHz DDR3, Radeon RX 560 4096 MB, Corsair H75 Liquid CPU Cooler Link to comment Share on other sites More sharing options...
onemanosx Posted December 24, 2018 Author Share Posted December 24, 2018 [ref]erroruser[/ref], Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
imran.sefat Posted December 24, 2018 Share Posted December 24, 2018 [ref]imran.sefat[/ref], Boot with attached clover folder and run http://Olarila.com/files/Utils/RunMe.app.zip Imran-CLOVER.zip Added in 22 minutes 7 seconds: [ref]sarakabir[/ref], Your SSDT-ELAN refers to the wrong I2C device. Your I2C device is TPD0 and not ETPD Screenshot 2018-12-24 at 9.39.11 PM.png ย [ref]onemanosx[/ref], The trackpad is working now but the sound isn't working after replacing clover folder, I already changed the layout id but it didn't work. previously layout 17 worked for me but now the sound isn't working in layout 3, 13, 17, 18, 27, 28, 99 Send me Imrans-MacBook-Pro final 2 .zip Quote Link to comment Share on other sites More sharing options...
onemanosx Posted December 24, 2018 Author Share Posted December 24, 2018 [ref]imran.sefat[/ref], try DSDT.aml.zip Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
imran.sefat Posted December 25, 2018 Share Posted December 25, 2018 [ref]imran.sefat[/ref], try DSDT.aml.zip ย all things are working perfectly thanks a lot! I just needed to boot from hdd that solved the sound problem! Quote Link to comment Share on other sites More sharing options...
onemanosx Posted December 25, 2018 Author Share Posted December 25, 2018 all things are working perfectly thanks a lot! Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
Sampath007 Posted December 25, 2018 Share Posted December 25, 2018 Awesome work bro Quote Link to comment Share on other sites More sharing options...
onemanosx Posted December 25, 2018 Author Share Posted December 25, 2018 Awesome work bro I merely simplify the Dev's original guide so new hackintoshers can understand and follow easily Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
imran.sefat Posted December 25, 2018 Share Posted December 25, 2018 ย please help! I fully installed Mojave using the olarilla image and the clover folder that you gave me with apfs format and replaced the clover folder in my hdd now I'm facing some problems 1. Sound is not working 2. keyboard and trackpad is working fine but in trackpad option in system preference showing looking for bluetooth trackpad 3. battery percentage is not showing 4. when I turned on the option to show brightness option in menu bar, it doesn't work Send me Imrans-MacBook-Pro.zip Quote Link to comment Share on other sites More sharing options...
onemanosx Posted December 25, 2018 Author Share Posted December 25, 2018 [ref]imran.sefat[/ref], Replace DSDT in patched folder, reboot and check track pad setting. DSDT.aml.zip Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
imran.sefat Posted December 26, 2018 Share Posted December 26, 2018 [ref]imran.sefat[/ref], Replace DSDT in patched folder, reboot and check track pad setting. DSDT.aml.zip ย not working man! attached another send me file after replacing the patch file Send me Imrans-MacBook-Pro.zip Quote Link to comment Share on other sites More sharing options...
onemanosx Posted December 26, 2018 Author Share Posted December 26, 2018 [ref]imran.sefat[/ref], consider to post your issues at VoodooI2c github chat. Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
imran.sefat Posted December 26, 2018 Share Posted December 26, 2018 [ref]imran.sefat[/ref], consider to post your issues at VoodooI2c github chat. ย what should I do about the other problems ? can you please help me out ? sound isn't working either Quote Link to comment Share on other sites More sharing options...
onemanosx Posted December 26, 2018 Author Share Posted December 26, 2018 what should I do about the other problems ? can you please help me out ? sound isn't working either create new post. This thread is for I2C trackpad only Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
imran.sefat Posted December 26, 2018 Share Posted December 26, 2018 create new post. This thread is for I2C trackpad only ย trackpad option came after installing ACPI battery manager kext Quote Link to comment Share on other sites More sharing options...
onemanosx Posted December 26, 2018 Author Share Posted December 26, 2018 trackpad option came after installing ACPI battery manager kext good to know! I was also reading about it earlier. Congrats! [ref]broadw3ll[/ref], fyi Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
imran.sefat Posted December 26, 2018 Share Posted December 26, 2018 good to know! I was also reading about it earlier. Congrats! [ref]broadw3ll[/ref], fyi ย Thanks for your help though <3 Quote Link to comment Share on other sites More sharing options...
broadw3ll Posted December 26, 2018 Share Posted December 26, 2018 Hello onemanosx in my case even with that kext not show any information or even work the battery... xD Quote Link to comment Share on other sites More sharing options...
onemanosx Posted December 26, 2018 Author Share Posted December 26, 2018 [ref]broadw3ll[/ref], implement your battery status and see where that will lead you to. The same info is also given to me by one of the regular community at voodooI2C gitter. Quote Donate Gitter Chat Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina) MSI B360 Gaming Arctic Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina) Link to comment Share on other sites More sharing options...
Striker770 Posted December 30, 2018 Share Posted December 30, 2018 (edited) Hi @onemanosx Great guide. However i tried it but it doesn't works at all. The Device is ETPD and it shows in IOReg. But no Trackpad. Let me know what files you need. Also, i added the CFL controllers to VoodooI2C info.plist Thanks Edited December 30, 2018 by Guest Quote Link to comment Share on other sites More sharing options...