Contribute
Register

VoodooI2C Help and Support

Status
Not open for further replies.
Here's the latest one, hopefully this is correct this time. I can't seem to fix this error when trying to apply the voodooi2c patch.
The I2C controller patch? You don't need it, don't attempt using it.
From your kernel log:
Bash:
2019-06-27 13:37:44.229481-0400 0xec       Default     0x0                  0      0    kernel: (kernel) VoodooI2CHIDDevice::ELAN1301 Incorrect BCD version 57005
2019-06-27 13:37:44.229485-0400 0xec       Default     0x0                  0      0    kernel: (kernel) VoodooI2CHIDDevice::ELAN1301 Could not get HID descriptor
Per the Linux I2C HID sources, BCD version must be 0x100 (Currently it's 0xDEAD, no idea what it means).
Does it work in Windows? Linux?

You don't need the ETPD part in your SSDT, remove it. VoodooI2C should use polling anyway, as your APIC pin is higher than 0x2F.
The ACPI path is incorrect anyway (should be I2C0.ETPD...).

Please shutdown your laptop, the cold boot and make a new archive.
 
The I2C controller patch? You don't need it, don't attempt using it.
From your kernel log:
Bash:
2019-06-27 13:37:44.229481-0400 0xec       Default     0x0                  0      0    kernel: (kernel) VoodooI2CHIDDevice::ELAN1301 Incorrect BCD version 57005
2019-06-27 13:37:44.229485-0400 0xec       Default     0x0                  0      0    kernel: (kernel) VoodooI2CHIDDevice::ELAN1301 Could not get HID descriptor
Per the Linux I2C HID sources, BCD version must be 0x100 (Currently it's 0xDEAD, no idea what it means).
Does it work in Windows? Linux?

You don't need the ETPD part in your SSDT, remove it. VoodooI2C should use polling anyway, as your APIC pin is higher than 0x2F.
The ACPI path is incorrect anyway (should be I2C0.ETPD...).

Please shutdown your laptop, the cold boot and make a new archive.
If you meant that if everything works under windows, then the answer is yes.. I don't use linux so i can't confirm. What's polling? I've gotta do a lot of research in order for me to understand what each terminology means and what they're used for. So right now, the only thing i could fix is to remove the ETPD from ssdt?
 
If you meant that if everything works under windows, then the answer is yes.. I don't use linux so i can't confirm. What's polling? I've gotta do a lot of research in order for me to understand what each terminology means and what they're used for. So right now, the only thing i could fix is to remove the ETPD from ssdt?
The kext must know when there's new data to process (input). The best option is interrupts - the kext is notified when new data is available. It's efficient.
When interrupts cannot be used, VoodooI2CHID falls back to polling - it checks for new data in a specified interval. It's not efficient, and should be avoided.
Follow the GPIO pinning guide to use inteterrupts:

About your SSDT - The ELAN section is unuseful.
The _CRS method there will result in use of polling mode, but VoodooI2CHID will already do that - hence that implementation of _CRS is not necessary.
Instead of removing it from the DSDT, use a correct _CRS for GPIO interrupts, as instructed in the linked guide.
Additionally - the path in your SSDT is incorrect. You device is I2C0.ETPD, while the SSDT specifies I2C1.ETPD.

Once you complete those changes, cold boot and create a new troubleshooting archive for further analysis.
 
I've made some progress, I've extracted my dsdt and ssdt another way a couple days ago and I'm using the Elan ssdt that was created into my patched folder and now my trackpad works. The only 2 things i need working now are touchscreen and backlit keyboard. When i check the ssdt, it matches what you said it should've been. Will make another one tomorrow for further troubleshooting. Thanks for your help.
 
I've made some progress, I've extracted my dsdt and ssdt another way a couple days ago and I'm using the Elan ssdt that was created into my patched folder and now my trackpad works. The only 2 things i need working now are touchscreen and backlit keyboard. When i check the ssdt, it matches what you said it should've been. Will make another one tomorrow for further troubleshooting. Thanks for your help.
Make sure you've patched both trackpad and touchscreen for GPIO interrupts.
Using polling for 2 devices under the same I2C controller is known to cause issues (usually just one device working).
Once you do that, and if you still experience issues, attach a new archive.

Please use quoted replies so I can get notified about new comments :)
 
Make sure you've patched both trackpad and touchscreen for GPIO interrupts.
Using polling for 2 devices under the same I2C controller is known to cause issues (usually just one device working).
Once you do that, and if you still experience issues, attach a new archive.

Please use quoted replies so I can get notified about new comments :)
Still struggling with trackpad though, sometimes it works, sometimes it doesn't.. Here's the recent debug..
 

Attachments

  • debug_14204.zip
    5.6 MB · Views: 87
Still struggling with trackpad though, sometimes it works, sometimes it doesn't.. Here's the recent debug..
You should patch both trackpad and touchscreen for GPIO interrupts, as advised.
 
has anyone managed to get the trackpad on the Lenovo Ideapad 330 15IKB 81DE to work, I've got 2 versions of the laptop (1 ELAN and 1 Synaptics) both only partially work. mouse moves but when I lift my finger off the pad the mouse keeps moving, and the trackpad is seen as a mouse in system preferences
 
has anyone managed to get the trackpad on the Lenovo Ideapad 330 15IKB 81DE to work, I've got 2 versions of the laptop (1 ELAN and 1 Synaptics) both only partially work. mouse moves but when I lift my finger off the pad the mouse keeps moving, and the trackpad is seen as a mouse in system preferences
Please attach your troubleshooting archives for each machine :)
The 'cursor keeps moving' problem is probably happening because you did not patch for GPIO interrupts (Or APIC, tho it's usually not possible).

As for multitouch - dedicated satellites (non-HID), like ELAN and Synaptics, require you to use interrupts before you can use them.
Those satellites are needed for older trackpad models that don't conform to the precision trackpad protocol.
 
Status
Not open for further replies.
Back
Top