onemanosx
Members-
Posts
1,541 -
Joined
-
Last visited
Everything posted by onemanosx
-
good to know! I was also reading about it earlier. Congrats! [ref]broadw3ll[/ref], fyi
-
create new post. This thread is for I2C trackpad only
-
[ref]imran.sefat[/ref], consider to post your issues at VoodooI2c github chat.
-
Only trackpad setting
-
[ref]broadw3ll[/ref], Please check track pad settings. DSDT.aml.zip
-
[ref]imran.sefat[/ref], Replace DSDT in patched folder, reboot and check track pad setting. DSDT.aml.zip
-
[ref]miansancor[/ref], Yes, need to be in apfs for direct update.
-
I merely simplify the Dev's original guide so new hackintoshers can understand and follow easily
-
here you go DSDT.aml.zip Please use the youtube audio thread to continue troubleshooting
- 19,329 replies
-
- acpi
- acpispecification
-
(and 4 more)
Tagged with:
-
https://Olarila.com/forum/viewtopic.php?f=79&t=6689
- 19,329 replies
-
- acpi
- acpispecification
-
(and 4 more)
Tagged with:
-
Hackintosh Guide with Clover Bootloader on Serie 5, 6, 7, 8, 9
onemanosx replied to MaLd0n's topic in Installation Guides
Yes, scroll down first post here- 1,927 replies
-
[ref]imran.sefat[/ref], try DSDT.aml.zip
-
[ref]erroruser[/ref],
-
I use officially released kexts from dev
-
[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
-
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!
-
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
