-
-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix VoodooI2CHID issue w/ Touchscreen #12
Comments
Will need to verify if there different are variations of trackpads/touch controllers/etc. with differing vendor ids/etc. Support for the UX481{FA|FL}, UX581{GV|LV}, and UX582 ZenBook Duos should be verified w/ this repo and upstream. |
Found an explanation for the |
For the UX582 (from VoodooI2C/VoodooI2CHID#59 (comment)):
For the UX481(FL):
|
Indeed, the ACPI Patch are different from one model to another |
- Added trackpad and touchscreen ACPI path, VID and PID info from #12 (comment).
There may be variations even within the same model (e.g. from different manufacturing runs). You'll need to verify that these values are the same; it's possible for the product id to vary even with everything else matching. You can search for |
I'm on MacOS and i check on IORegistry : By the way, i'have see something, if we click on TLP1, ETPD and TLP0, in ACP-Device it's say : "IOACPIPlatformDevice is not serializable" (It's possible that it's linked to a non update of the kext... the last update I did was when I published in #8)
I confirm that for UX481FA. |
This comment was marked as resolved.
This comment was marked as resolved.
I'd note that your screenpad's product id is
The easiest way would be on Windows/Linux with SSDTTime (you can find instructions here). |
^^ The current workaround for this issue does require the specific product ids, though I suspect that only the product ids will differ from the table. Probably why Voodoo kexts didn't work OOB was because of the different product ids used in this workaround (relevant commit: shiecldk/ASUS-ZenBook-Pro-Duo-15-OLED-UX582-Hackintosh@7841b5f): <!-- VoodooI2CHID.kext/Contents/Info.plist
302 | <string>VoodooI2CPrecisionTouchpadHIDEventDriver</string>
303 | <key>IOProbeScore</key>
304 | <integer>300</integer>
305 | <key>IOPropertyMatch</key>
306 | <dict> -->
[-] 307 | <key>Transport</key>
[-] 308 | <string>I2C</string>
[+] 307 | <key>ProductID</key>
[+] 308 | <integer>12545</integer>
<!-- VID=3101 ^^^^^ (base 10 form) -->
<!-- ...
354 | <key>IOClass</key>
355 | <string>VoodooI2CTouchscreenHIDEventDriver</string> -->
[+] 356 | <key>IOPCIMatch</key>
[+] 357 | <string>0x2C5604f3&0x2C2304f3</string>
<!-- PID=2C56,2C23 ^^^^ ^^^^ -->
<!-- VID=04f3 ^^^^ ^^^^ --> ^ These values will need to be changed with the new vendor and product ids. |
Also related is VoodooI2C/VoodooI2C#321 for the trackpad freezing issue. |
An updated table reflecting VoodooI2C/VoodooI2C#474 (comment).
|
Here's another way of checking for these values in macOS: ioreg -rxn IOHIDInterface -k "VoodooI2CServices Supported" -t | grep -E 'IOACPIPlatformDevice|IOPCIDevice|VoodooI2CDeviceNub|VendorID|ProductID|HIDEventDriver <class VoodooI2C|Interface <class VoodooI2C' | cut -d "<" -f1 Example output: $ ioreg -rxn IOHIDInterface -k "VoodooI2CServices Supported" -t | grep -E 'IOACPIPlatformDevice|IOPCIDevice|VoodooI2CDeviceNub|VendorID|ProductID|HIDEventDriver <class VoodooI2C|Interface <class VoodooI2C' | cut -d "<" -f1
>>> +-o PCI0@0
>>> +-o I2C0@15
>>> +-o TPL1
>>> | "VendorID" = 0x4f3
>>> | "ProductID" = 0x2b6a
>>> +-o VoodooI2CTouchscreenHIDEventDriver
>>> +-o VoodooI2CMultitouchInterface
>>> +-o PCI0@0
>>> +-o I2C1@15,1
>>> +-o ETPD
>>> | "VendorID" = 0x4f3
>>> | "ProductID" = 0x310e
>>> +-o VoodooI2CPrecisionTouchpadHIDEventDriver
>>> +-o VoodooI2CMultitouchInterface
>>> +-o PCI0@0
>>> +-o I2C3@15,3
>>> +-o TPL0
>>> | "VendorID" = 0x4f3
>>> | "ProductID" = 0x29de
>>> +-o VoodooI2CTouchscreenHIDEventDriver
>>> +-o VoodooI2CMultitouchInterface For checking just product ids: $ ioreg -rxn IOHIDInterface -k "VoodooI2CServices Supported" | grep ProductID | cut -d "=" -f2
>>> 0x2b6a
>>> 0x310e
>>> 0x29de For checking for a specific device name: $ ioreg -rxn ETPD -k i2cAddress -d1 | grep IOName | cut -d "=" -f2
>>> "ELAN1207"
$ ioreg -rxn TPL1 -k i2cAddress -d1 | grep IOName | cut -d "=" -f2
>>> "ELAN9008"
$ ioreg -rxn TPL0 -k i2cAddress -d1 | grep IOName | cut -d "=" -f2
>>> "ELAN9009" |
Interesting, was just testing using the same VoodooI2CHID kext as from the original repo (applying the new fixes in the info.plist) and found the main touchscreen gestures work. Edit: This is still the case on the latest Voodoo kext versions (2.7) |
Still stops working after a while; is fine for a little while after wake again (possible ref: VoodooI2C/VoodooI2C#171). Will probably require GPIO pinning to fix (as per the official guide), using the below table from shiecldk's tonymax86 thread:
If I understood this correctly then we have the following GPIO options for the three devices:
|
Will need to check 0b67115 for any regressions (and after updating Voodoo kexts back to latest). It's possible that there is a race condition, either between two voodoo kexts/satellite drivers attaching to the same device, or between one of the touchscreen displays and the trackpad. Update: Found a conflict in kext load order + config in #8 (comment). |
Some additional docs for APIC/GPIO for fixing trackpad polling collision: |
Will re-open for regression testing but close again on PR #19 merge. |
Added documentation for the fix in this repo's wiki under VoodooI2CHID-Workaround. |
@Qonfused Do you still have the Trackpad freezing issue with VoodooI2C 2.7.1? |
On startup, touchscreen on both displays works in legacy mouse mode (no multitouch/PTP mode); it also appears to no longer respond about a minute after login. These issues were also described in @shiecldk's tonymacx86 UX582 thread prior to resolution, and describes an issue with VoodooI2CHID where changing driver/device priority can break multitouch.
@gkvt's fork of VoodooI2C at https://github.com/gvkt/VoodooI2CHID resolves an architecture incompatibility w/ multi-I2C HID devices; the workaround allows for greater control of which driver is attached to which device. The pull request for this fork was tracked in VoodooI2C/VoodooI2CHID#58 (closed) and VoodooI2C/VoodooI2CHID#59 (merged).
Refer to VoodooI2C/VoodooI2C#485 (comment) for Info.plist changes (changes are to match drivers to device-specific product ids rather than device names).
For reference, discussion on multi-touch support for touchscreen w/ VoodooI2C details the debugging used to modify the kext's Info.plist to prevent interference from touchscreen/precision trackpad event drivers.
The text was updated successfully, but these errors were encountered: