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