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
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.
shiecldk
@shiecldk

@blankmac Thank you! Please check this debug dump:
https://drive.google.com/file/d/1UXjqLw4SEKSeEAaxtnik9FWQZtXztWpz/view?usp=sharing
For the Linux driver, what specify driver could I look for to help create the standalone satellite?
The Linux driver I found is in here:
https://github.com/s-light/ASUS-ZenBook-Pro-Duo-UX581GV/blob/master/research_touchpen.md
https://wiki.ubuntu.com/Multitouch/Testing/CheckingMTDevice
It has the exact same touchscreens and touchpad as my UX582:
https://github.com/s-light/ASUS-ZenBook-Pro-Duo-UX581GV/blob/master/hardware.md

It looks like in order to get the stylus function well in both touchscreens, wacom driver is needed to be loaded. Would the above link be a right direction to start with? I appreciate your help.

blankmac
@blankmac
Why guess? You stated that the screens worked perfectly with Linux so put a distro on your device and find out which HID driver is being loaded. If it's the generic hid driver, well then there would seem to be something about your device's input report that we aren't accounting for or it doesn't conform to the protocol. The debug doesn't really tell me much of anything, you should try to log input data from the device. There might be a clue why you're only getting singletouch input on the secondary screen. As for the stylus, it already seems to function so I'm not sure what your goal is.
shiecldk
@shiecldk
Get it thanks! I was hoping the secondary screen can just function normally as the main screen does. I'll check which driver is loaded in Ubuntu.
blankmac
@blankmac
If it works that way in Ubuntu, then I’d say it should be possible in macOS.
shiecldk
@shiecldk
xinput outputs the following for me:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ELAN1406:00 04F3:3101 Mouse id=10 [slave pointer (2)]
⎜ ↳ ELAN1406:00 04F3:3101 Touchpad id=11 [slave pointer (2)]
⎜ ↳ ELAN9008:00 04F3:2C56 id=13 [slave pointer (2)]
⎜ ↳ ELAN9009:00 04F3:2C23 id=15 [slave pointer (2)]
⎜ ↳ ELAN9009:00 04F3:2C23 Touchpad id=17 [slave pointer (2)]
⎜ ↳ ELAN9009:00 04F3:2C23 Pen (0) id=20 [slave pointer (2)]
⎜ ↳ ELAN9008:00 04F3:2C56 Pen (0) id=21 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ ELAN1406:00 04F3:3101 Keyboard id=12 [slave keyboard (3)]
↳ ELAN9008:00 04F3:2C56 id=14 [slave keyboard (3)]
↳ ELAN9009:00 04F3:2C23 id=16 [slave keyboard (3)]
↳ Asus WMI hotkeys id=18 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=19 [slave keyboard (3)]
ELAN9008 is the secondary screen; ELAN9009 is the main screen
Avery Black
@1Revenger1
probably easier to use sudo dmesg | grep -i input
shiecldk
@shiecldk
Thanks. With sudo dmesg | grep -i input, it outputs nothing actually.
But I get this with lsmod. Would it work?
https://pastebin.com/nr9cNqjX
Found a line in here:
hid 131072 5 i2c_hid,hid_multitouch,hid_sensor_hub,intel_ishtp_hid,hid_generic
shiecldk
@shiecldk
@blankmac Do you have any thoughts on this?
blankmac
@blankmac
So your touchscreens seem to be operating on the generic hid driver. I'd try logging the parsed input to see if you can spot what the problem might be. If the data seems incomplete, then try logging the actual input reports from the device.
shiecldk
@shiecldk
Thanks. Do you know which VoodooI2c cpp files I should put the IOLog to track the parsed input and tje actual input from the device?
blankmac
@blankmac
You should go through the code or you will probably have a hard time fixing the problem. You can a raw report here — https://github.com/VoodooI2C/VoodooI2CHID/blob/e3328f179c0ac2362fabd45dc42988d9540a9b9f/VoodooI2CHID/VoodooI2CHIDDevice.cpp#L122
And the parsed data is available any time after it’s been, well, parsed. For a touchscreen, here is not a bad spot — https://github.com/VoodooI2C/VoodooI2CHID/blob/e3328f179c0ac2362fabd45dc42988d9540a9b9f/VoodooI2CHID/VoodooI2CTouchscreenHIDEventDriver.cpp#L205
shiecldk
@shiecldk
@blankmac I got busy working on the end of my internship last month and will have time to continue working on this next week. Before then, I found there is one issue on the two finger scrolling with VoodooI2C. For real Mac, the two finger scrolling would still work when the first finger is placed on the trackpad and the second finger is added on the trackpad later to start the scroll. However, with VoodooI2C, after the second finger is placed on the trackpad the gesture would be one finger cursoring. Is there any way to fix this? It becomes annoying as sometimes VoodooI2C would miss the scrolling input just because I placed the second finger a bit later than the first finger on the trackpad.
国光
@sqlsec
I have been concerned about this problem for a long time, and hope it can be resolved.
blankmac
@blankmac
@shiecldk No idea if it can be fixed. I no longer own any hackintosh hardware aside from a desktop so I have no way to reproduce the bug or test. Have you submitted a bug report?
国光
@sqlsec
@blankmac I have an ASUS notebook. His touchpad uses Screenpad, which is actually a screenxpert screen. For the current use effect, please refer to this video: https://www.bilibili.com/video/BV1eq4y1T7F1. But after all, unfortunately, the touchpad does not support Apple’s multi-finger gestures. If this VoodI2CDev can be solved, then this notebook is really amazing. I really hope that this problem can be solved, thank you!
blankmac
@blankmac
@sqlsec @shiecldk This isn't the place to ask for device support, please move to the main chat. If you have a bug, then please submit a bug report on github.
Kishor Prins
@kprinssu
@sqlsec I have removed you from this channel, please use the normal I2C channel for help.