Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Sep 08 12:53
    @kprinssu banned @sqlsec
  • Feb 01 20:01
    @kprinssu banned @kdmitrienko
  • Nov 18 2020 13:40
    @kprinssu banned @PredatorAlpha777
  • Nov 15 2020 16:16
    @kprinssu banned @nikhil19rathore99
shiecldk
@shiecldk
Screen Shot 2021-08-07 at 4.47.08 PM 1.png
I2C2:TPL0 is the stylus touchscreen
But I don't see the lines in VoodooI2CMultitouchInterface.cpp got executed based on IOLOG I put in that cpp file. I checking if it's actually the native engine handling the multi touch functions. (I was check the four finger swipe gesture on the main and secondary touch screens. i.e. I2C2:TPL0 and I2C3:TPL1)
shiecldk
@shiecldk
Also tested the previous VoodooI2C versions and found none of them work for the secondary stylus touchscreen. I was guessing it was @zhen-zen's patch in the latest version (2.6.5) to make the single point work on this screen. I wonder if it's related to my DSDT/SSDT. Found a post from tonymac, which demos the similar issue and was able to fix it in the latest VoodooI2C version with multitouch on his stylus touchscreen. His laptop is HP and has a bit different DSDT for TPL device from mine.
shiecldk
@shiecldk
Here is my DSDT, OC EFI, and other debug files if anyone could take a look.
https://drive.google.com/file/d/1fB-K3Dw2CISDaLb6qZmpKOe4xM14fe5_/view?usp=sharing
zhen-zen
@zhen-zen
You mentioned the wrong person lol. The comment you found is from @Goshin
shiecldk
@shiecldk
Yes you're right lol
Also, I wonder are the touchscreen and stylus handled differently in VoodooI2c? What would happen to touchscreens with stylus generally? Is it possible this could be a DSDT/SSDT thing on the GPIO? I currently do not have any SSDT path on I2C and GPIO but my trackpad, the main touchscreen and stylus on the secondary screen work. Wonder if that means I do/don't need GPIO SSDT patch for stylus touchscreen?
shiecldk
@shiecldk
One thing I found interesting is the line in here:
https://github.com/VoodooI2C/VoodooI2C/blob/master/Multitouch%20Support/Native/VoodooI2CNativeEngine.cpp#L34
If I make it "event.transducers->getObject(i)" instead of "event.transducers->getObject(i+stylus_check)", the secondary touchscreen (with stylus function) would be completely usable.
Is it possible to disable stylus completely in VoodooI2C and test with the touchscreen function only?
shiecldk
@shiecldk
Sorry for the typo - If I make it "event.transducers->getObject(i)" instead of "event.transducers->getObject(i+stylus_check)", the secondary touchscreen (with stylus function) would be completely unusable.
shiecldk
@shiecldk
I found another interesting thing. The stylus and touchscreen can actuslly both work perfectly (with palm rest) in the main screen. I am not sure why for the secondary screen, only the stylus and single touch would work. Could this be just a VoodooI2c configuration thing?
Kishor Prins
@kprinssu

@astro-lee-k I am sorry but I do not exactly the time dig through the code, the stylus code should work across one touchscreen

You seem to have exotic hardware with multiple touchscreens and that bit of the codebase is very untested and unknown to work

shiecldk
@shiecldk
Got it thanks!
I found another info about an useful info on the touchscreens support in Ubuntu (it's the previous gen laptop but have the exact same touchscreens even touchpad, which the driver works well for me in Ubuntu)
https://github.com/s-light/ASUS-ZenBook-Pro-Duo-UX581GV/blob/master/research_touchpen.md
shiecldk
@shiecldk
@kprinssu I also saw an issue about two touchscreens support. Would it be possible to fix that issue? I assume we can just set the mouse cursor to the location in another screen when user touch another screen. Wouldn't this be an easy problem to solve?
lulu-gh
@lulu-gh
Um hey guys im not sure if this is the right place to ask... but if there're devs willing to continue to develop https://github.com/blankmac/AlpsT4USB project to support ALPS U1 i2c trackpads. i will be very willing to test anytime. thanks a lot!
shiecldk
@shiecldk
Also, I tried removing the main touchscreen from the motherboard and left only the secondary touchscreen. The secondary touchscreen behaves the same, which implies it has nothing to do with the multi screen code in VoodooI2C? There may be just something that is broken for the multi-touch function in that screen.
shiecldk
@shiecldk
Is the development of this project stop? Would donation help speed up the resolution on the issues?
I would love to donate if it can help speed up resolving these two issues.
Kishor Prins
@kprinssu

@lulu-gh USB devices are supported in VoodooI2C as long as they support he PTP protocol. That project has long since been deprecated and will not be supported. Please do not ask us to support it.

@shiecldk We don't take donations, we work on a volunteer/on-our-free time basis and do not take donations (nor are there any plans to do so). As previously mentioned dual screens is not tested as the hardware very exotic. It's very hard to test/debug something when you don't have the actual hardware on hand. Another problem is macOS does not natively support touchscreens and we are emulating a virtual finger for the stylus.

lulu-gh
@lulu-gh
Hi @kprinssu , thanks for replying! Just wanna mention that AlpsT4USB seems like to have (1) Full ported T4 USB support, and (2) a partial implement of the ALPS U1 I2C support. The ALPS U1 touchpad contains two parts, the touchpad supports PTP and is thus supported by I2CHID, but the trackstick (DualPoint) uses vendor-specific protocol that isn't either PS2 nor PTP. So thus it might need to have a satellite to work. Good to know the current status though, many thanks again!
Avery Black
@1Revenger1
@ben9923 I'm still working on linting and stuff, but I responded to a couple of the comments already.
Do we want to just leave the header as is? It appears fine in VIM so it might be best to leave it, especially since we aren't the original authors
Admittedly not quite sure how to deal with the header
Also, I noticed that MultitouchEventDriver seperates start and handleStart, even though start just directly calls handleStart in IOHIDEventDriver.cpp
I don't think if we put code in handleStart or start matters too much, seems weird to have it in both places though
that also means that it doesn't really matter if we deconstruct in stop or handleStop
Avery Black
@1Revenger1
waaaaait.....I just realized that the HID notifications aren't even registered, and that the results from them are never used
...I think I'm just gonna axe that too
shiecldk
@shiecldk
@kprinssu @1Revenger1 I actually found the VoodooI2CMultitouchEventDriver.cpp is a bit buggy in these lines:
https://github.com/VoodooI2C/VoodooI2CHID/blob/master/VoodooI2CHID/VoodooI2CMultitouchHIDEventDriver.cpp#L685-L698
If I disable/comment out these lines, the touchscreen would function with single touch with my finger (still don't have multitouch). If I don't comment these lines out, the touchscreen would be like stylus. (with cursor and click function only through finger and stylus)
But either way, it only detects one contact point, I'm not sure what's the bug to cause that.
shiecldk
@shiecldk
Is there a place where the VoodooI2C
  1. assign the I2C device to be stylus or touchscreen?
  2. enable/disable multi contact point check?
shiecldk
@shiecldk

I also found if I delete the IOKitPersonalities for these items in VoodooI2CHID.kext's plist:
VoodooI2CHIDDevice Multitouch HID Event Driver
VoodooI2CHIDDevice Stylus HID Event Driver
VoodooI2CHIDDevice Touchscreen HID Event Driver

The TPL0 (secondary screen) would be unusable, but TPL1 (main screen) still works as trackpad. Some device detection/assign is playing a part in the TPL0, even after I remove TPL1 from the motherboard, which doesn't make sense as the only differences are the connector type (DP in TPL0 vs eDP in TPL1), resolution (3840 x 1100 vs 3840 x 2160), and HID (ELAN9008 vs ELAN9009). Tried renaming ELAN9008 to ELAN9009, which still have the same effect.

Screen Shot 2021-08-08 at 7.23.34 PM.png
shiecldk
@shiecldk
Could someone answer my questions or at least give me some advice? I really want to solve this issue myself if nobody can fix the bug but it's very hard figure out how the whole project is written myself.
Is @alexandred still involved in this project?
Avery Black
@1Revenger1
I've honestly got no clue, lol
My main thing is VoodooRMI, and even then, it was zhen-zen who did all the i2c stuff lol
shiecldk
@shiecldk
@zhen-zen I actually saw you were mentioned in here regarding the ASUS screenpad. (My secondary screen is basically a bigger screenpad; it's screenpad 2.0)
https://www.tonymacx86.com/threads/voodooi2c-help-and-support.243378/post-2181060
https://www.tonymacx86.com/threads/catalina-on-asus-zenbook-pro-ux580ge.292699/post-2255759
I am wondering if it's possible to fix it?
If it requires too much work to modify the existing VoodooI2CHID, maybe we can create a new satellite kext for it?
Kishor Prins
@kprinssu
@1Revenger1 Feel free to clean up the PR, just tag me on it and will re-review it
Kishor Prins
@kprinssu

@shiecldk IOKitPersonalities usually for telling the OS to load the driver for a particular device.

I keep mentioning that the stylus code was hacked together AND your combination of multi-screen devices is exotic. Technically speaking, VoodooI2C should work across numerous devices BUT multi-screen devices are not found in real Apple hardware AND macOS does not natively support styluses. That is why I am saying it's hacked together.

You are pretty much in unexplored waters here and while I can try to explain what's going on, it's quite tough as I have not written that code (@alexandred ha) nor I have not looked at that particular code in well over 2 years. You may be better off creating a separate satellite and directly interfacing with VoodooInput.

blankmac
@blankmac

Is there a place where the VoodooI2C

  1. assign the I2C device to be stylus or touchscreen?
  2. enable/disable multi contact point check?

@shiecldk Everything is decided by your particular report descriptor for each device. In terms of differentiation between a stylus and a single touch finger contact point as far a macOS is concerned, they are the same. We use a very procedural hack with the defined type (again, by your report desc) to apply some logic that makes sense for each type, meaning, with a finger we want to be able to click and drag items, and with a stylus we may want the buttons to handle the clicking while we hover etc. If a device reports pressure, tilt, barrel sensitivity, etc, we collect it but macOS has no mechanism in the public kernel API to apply those features. So even a stylus, is essentially a finger. It was done in this fashion because if you were to send the singletouch data to the multitouch stack, it would behave like a giant trackpad vs a touchscreen since there are no touchscreen Macs and we are using a faked MT2 device. Regardless, in my opinion, your first step should be to use the FingerMgmt app to check what is being reported to the multitouch stack, and then log the input data to see what your device is reporting vs worrying about what personality is being loaded.

shiecldk
@shiecldk
@kprinssu @blankmac Really appreciate these informative explanation. It helps to understand how VoodooI2C works. Based on the IOLog I put and saw, for the 2nd screen, VoodooI2C was able differentiate finger vs. stylus; however, it's always been recognized as one point contact in IOLog. However, for the main screen either finger or stylus works perfectly w/wo multitouch.
shiecldk
@shiecldk
Found out FingerMgmt was able to show there were high frequency finger input on the secondary screen. And no finger input for single touch actually on the main screen.
shiecldk
@shiecldk
Screen Shot 2021-08-11 at 1.47.44 AM.png
IOReg
The video of FingerMgmt is in here:
https://vimeo.com/585661584
blankmac
@blankmac
Your ioreg appears to be corrupt, or at least not viewable on the version I have. On a touchscreen device, it is expected behavior that you will not see input in FingerMgmt for single-touch or stylus input. Again, we are using a hack to make touchscreen-like single inputs possible. Multiple finger input should be routed to the multitouch stack, which is happening on your main screen per the video. Be certain you are using the latest versions of VoodooI2C / VoodooI2CHID. Your lower secondary screen is displaying touchpad like behavior. My guess is one of two things. Either your touchscreen HID devices don't conform to the protocol, or since you say this operates fine on Windows / Linux, then they are possibly using one of the vendor defined protocols for input. You didn't attach any logged inputs or device reports so I have no idea if they are complete. Another thing to investigate would be to see what device drivers are loaded in linux. If it's using a vendor defined protocol then it should be trivial to port as a standalone satellite.