Contribute
Register

VoodooI2C Help and Support

Joined
Mar 8, 2015
Messages
70
Motherboard
MSI Z370m Mortar; ASUS Zenbook Pro UX535LI
CPU
i5-9600k; i7-10750H
Graphics
UHD 630
Mac
  1. iMac
  2. MacBook Pro
this is my original DSDT file
Thanks. No much different other than setting an addr in _Y38 for the serial bus specification in mine that isn't in yours. Removing that makes no difference.

How did you arrive at 0x6D as your GPIO pin starting from the 0x51 in your interrupt specifiers? Formula or trial and error?
 

Feartech

Moderator
Joined
Aug 3, 2013
Messages
27,574
Motherboard
Asus N752VX-OpenCore
CPU
i7-6700HQ / HM170
Graphics
HD 530 1920 x 1080
Mac
  1. iMac
Mobile Phone
  1. iOS
Thanks. No much different other than setting an addr in _Y38 for the serial bus specification in mine that isn't in yours. Removing that makes no difference.

How did you arrive at 0x6D as your GPIO pin starting from the 0x51 in your interrupt specifiers? Formula or trial and error?
just list the one laptop system please:
please read the faq for proper hardware profile setup:
 
Joined
Sep 24, 2012
Messages
175
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
Thanks. No much different other than setting an addr in _Y38 for the serial bus specification in mine that isn't in yours. Removing that makes no difference.

How did you arrive at 0x6D as your GPIO pin starting from the 0x51 in your interrupt specifiers? Formula or trial and error?
I think @sqlsec's trackpad has ACIP interrupt of 0x6d and used the calculation below:

If APICPIN > 47 And APICPIN <= 71 Then
GPIOPIN = APICPIN - 16
GPIOPIN2 = APICPIN + 80
ElseIf APICPIN > 71 And APICPIN <= 95 Then
GPIOPIN2 = APICPIN + 184
GPIOPIN = APICPIN + 88
ElseIf APICPIN > 95 And APICPIN <= 119 Then
GPIOPIN = APICPIN
ElseIf APICPIN > 108 And APICPIN <= 115 Then
GPIOPIN2 = APICPIN - 44
End If

@Feartech Did you delete my post?
 
Joined
Mar 8, 2015
Messages
70
Motherboard
MSI Z370m Mortar; ASUS Zenbook Pro UX535LI
CPU
i5-9600k; i7-10750H
Graphics
UHD 630
Mac
  1. iMac
  2. MacBook Pro
I think @sqlsec's trackpad has ACIP interrupt of 0x6d and used the calculation below:

If APICPIN > 47 And APICPIN <= 71 Then
GPIOPIN = APICPIN - 16
GPIOPIN2 = APICPIN + 80
ElseIf APICPIN > 71 And APICPIN <= 95 Then
GPIOPIN2 = APICPIN + 184
GPIOPIN = APICPIN + 88
ElseIf APICPIN > 95 And APICPIN <= 119 Then
GPIOPIN = APICPIN
ElseIf APICPIN > 108 And APICPIN <= 115 Then
GPIOPIN2 = APICPIN - 44
End If

@Feartech Did you delete my post?

According to the DSDT posted earlier, his laptop has APIC interrupt of 0x51. The above formula would then require 265 or 169 neither of which are 0x6D. My guess is that the latter is an incorrect pin that has fallen back to polling silently like in your case.
 
Joined
Sep 24, 2012
Messages
175
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
I tried to use kextload to check the dmesg log. However it looks like there some errors to load the kexts directly. Any idea how this could be?


Code:
username@MBP VoodooI2C-old % sudo kextload -v VoodooI2C*

Executing: /usr/bin/kmutil load -p /Users/username/Downloads/VoodooI2C-old/VoodooI2C.kext -p /Users/username/Downloads/VoodooI2C-old/VoodooI2CHID.kext
Error Domain=KMErrorDomain Code=31 "Error occurred while building a collection:
    1: One or more binaries has an error which prevented linking.  See other errors.
    2: Could not use 'com.alexandred.VoodooI2C' because: Failed to bind '__ZN10VoodooGPIO9metaClassE' as could not find a kext with 'org.coolstar.VoodooGPIO' bundle-id
    3: Could not use 'com.alexandred.VoodooI2CHID' because: Failed to bind '__ZN11IOHIDDevice22_RESERVEDIOHIDDevice12Ev' as could not find a kext with 'org.coolstar.VoodooGPIO' bundle-id
com.alexandred.VoodooI2C specific:
    1: Failed to bind '__ZN10VoodooGPIO9metaClassE' as could not find a kext with 'org.coolstar.VoodooGPIO' bundle-id
com.alexandred.VoodooI2CHID specific:
    1: Failed to bind '__ZN11IOHIDDevice22_RESERVEDIOHIDDevice12Ev' as could not find a kext with 'org.coolstar.VoodooGPIO' bundle-id
" UserInfo={NSLocalizedDescription=Error occurred while building a collection:
    1: One or more binaries has an error which prevented linking.  See other errors.
    2: Could not use 'com.alexandred.VoodooI2C' because: Failed to bind '__ZN10VoodooGPIO9metaClassE' as could not find a kext with 'org.coolstar.VoodooGPIO' bundle-id
    3: Could not use 'com.alexandred.VoodooI2CHID' because: Failed to bind '__ZN11IOHIDDevice22_RESERVEDIOHIDDevice12Ev' as could not find a kext with 'org.coolstar.VoodooGPIO' bundle-id
com.alexandred.VoodooI2C specific:
    1: Failed to bind '__ZN10VoodooGPIO9metaClassE' as could not find a kext with 'org.coolstar.VoodooGPIO' bundle-id
com.alexandred.VoodooI2CHID specific:
    1: Failed to bind '__ZN11IOHIDDevice22_RESERVEDIOHIDDevice12Ev' as could not find a kext with 'org.coolstar.VoodooGPIO' bundle-id
}
 
Last edited:
Joined
Feb 22, 2020
Messages
166
Motherboard
Dell Precision M4700
CPU
i7-3740QM
Graphics
M4000
If you are trying to load kexts, do it in Catalina or earlier. Big Sur and newer won't hot load the kext.

When loading kexts, you need to specify dependencies. I'm not super familiar with what is dependent on what in VoodooI2C, so I'll use VoodooRMI as an example. In SMBus mode, there are three kexts. VoodooRMI, VoodooSMBus (SMBus controller), and RMISMBus (SMBus -> VoodooRMI bridge). RMISMBus depends on VoodooSMBus and VoodooRMI for various structures and symbols, and has those kexts listed under OSRequiredBundles (I think?) In it's Info.plist. the kextload commands then becomes
Code:
sudo kextutil -d VoodooRMI.kext -d VoodooSMBus VoodooRMI.kext/Contents/PlugIns/RMISMBus.kext
Note that I used kextutil. I usually use -vvvv for additional verbose output. The above command will load all three kexts.

Honestly though, if your just trying to get logs from when it boots, it might be easier to just use DebugEnhancer.kext to increase the buffer size for logs. Don't use the trackpad at all until you get the logs as well.
 
Joined
Sep 24, 2012
Messages
175
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
@1Revenger1 Thank you. Do I need the debug version of VoodooI2C to check the log?

Edit: I am able to get the log with "sudo dmesg | grep Voodoo" now. Basically, I have to disable the kexts in OC and put the VoodooI2C kexts on the desktop, cd into the directory, and then rebuild the permissions. SIP has to be disabled, and I have to authorize the kexts to be loaded in System Preferences.app> Security & Privacy. It works on macOS Monterey. The commands I used are the following:
Code:
cd ~/Desktop
sudo chown -R root:wheel VoodooI2C*
sudo chmod -R 755 VoodooI2C*
sudo kextload -v VoodooI2C*
sudo dmesg | grep Voodoo
 
Last edited:
Joined
Sep 24, 2012
Messages
175
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
@sqlsec Could you check whether your screenpad is in polling mode? My trackpad (ELAN1406, ETPD) shows these:
Code:
[   49.864579]: VoodooI2CDeviceNub::ETPD Found valid resources from _CRS method
[   49.864658]: VoodooI2CDeviceNub::ETPD Returned index 0x0 from _DSM or XDSM method is not supported
[   49.864666]: VoodooI2CDeviceNub::ETPD Could not retrieve resources from _DSM or XDSM method
[   49.864678]: VoodooI2CDeviceNub::ETPD Found valid GPIO interrupts
[   49.864839]: VoodooI2CDeviceNub::ETPD Got GPIO Controller! VoodooGPIOCannonLakeH
[  50.366579]: VoodooGPIOCannonLakeH::Failed getting hardware pin for GPIO pin 279VoodooI2CHIDDevice::ELAN1406 Warning: Could not get interrupt event source, using polling instead
 
Joined
Nov 7, 2021
Messages
7
Motherboard
Asus Zenbook 14
CPU
i7-10510U
Graphics
UHD630
Mac
  1. MacBook Pro
@sqlsec Could you check whether your screenpad is in polling mode? My trackpad (ELAN1406, ETPD) shows these:
Code:
[   49.864579]: VoodooI2CDeviceNub::ETPD Found valid resources from _CRS method
[   49.864658]: VoodooI2CDeviceNub::ETPD Returned index 0x0 from _DSM or XDSM method is not supported
[   49.864666]: VoodooI2CDeviceNub::ETPD Could not retrieve resources from _DSM or XDSM method
[   49.864678]: VoodooI2CDeviceNub::ETPD Found valid GPIO interrupts
[   49.864839]: VoodooI2CDeviceNub::ETPD Got GPIO Controller! VoodooGPIOCannonLakeH
[  50.366579]: VoodooGPIOCannonLakeH::Failed getting hardware pin for GPIO pin 279VoodooI2CHIDDevice::ELAN1406 Warning: Could not get interrupt event source, using polling instead
this is my GDX1515 dmesg log
INI:
[   44.313108]: VoodooI2CControllerDriver::pci8086,2e9 Found I2C device: GDX1515
[   44.313178]: VoodooI2CDeviceNub::ETPD Found valid resources from _CRS method
[   44.313182]: VoodooI2CControllerDriver::pci8086,2e8 Got bus configuration values
[   44.313231]: VoodooI2CDeviceNub::ETPD Returned index 0x0 from _DSM or XDSM method is not supported
[   44.313235]: VoodooI2CDeviceNub::ETPD Could not retrieve resources from _DSM or XDSM method
[   44.313244]: VoodooI2CDeviceNub::ETPD Found valid GPIO interrupts
[   44.313344]: VoodooI2CControllerDriver::pci8086,2e8 Publishing device nubs
[   44.313347]: VoodooI2CDeviceNub::ETPD Got GPIO Controller! VoodooGPIOCannonLakeLP
[   44.816012]: VoodooI2CHIDDevice:0x100000738 start
[   44.919729]: VoodooI2CHIDDevice::GDX1515 Device initiated reset accomplished
[   45.050029]: VoodooI2CHIDDevice:0x100000738 creating interfaces
[   45.051068]: VoodooI2CHIDDevice:0x100000738 Matching has vendor DeviceUsagePage : ff0c bundleIdentifier com.apple.AppleUserHIDDrivers ioclass AppleUserHIDEventService but transport and vendorID is missing
[   45.053582]: VoodooI2CPrecisionTouchpadHIDEventDriver:0x10000073d start
[   45.059693]: open by VoodooI2CPrecisionTouchpadHIDEventDriver 0x10000073d (0x0)
[   45.059739]: VoodooI2CPrecisionTouchpadHIDEventDriver::GDX1515 Putting device into Precision Touchpad Mode
 
Joined
Sep 24, 2012
Messages
175
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
@sqlsec Thank you. It looks like yours is working in GPIO mode. If @sqlsec's GDX1515 and 10510U are in GPIO mode, @gvkt, I assume maybe the problem is not on GDX1515 but the GPIO PIN number with our CPU? Maybe we have to use another equation to calculate for our 10750H and 10980HK? Maybe we can split the work through trail and error; I'm bringing @atrslb in, hoping we could split the work (0x0 to maybe 0x130) into three parts to find the right GPIO pin lol.
 
Last edited:
Top