acidanthera / bugtracker

Acidanthera Bugtracker
385 stars 45 forks source link

Trackpad Elan meta issue #1192

Open Andrey1970AppleLife opened 4 years ago

Andrey1970AppleLife commented 4 years ago

Currently broken on some machines

——————————

The trackpad Elan v3 works only as a mouse. Doubleclick works. Trackpad keys work. Gestures don't work. Trackpad preferens panel don't work.

What logs are required from me? CC @BAndysc и @hieplpvip

hieplpvip commented 4 years ago

The trackpad Elan v3 works only as a mouse. Doubleclick works. Trackpad keys work. Gestures don't work. Trackpad preferens panel don't work.

Seems like VoodooPS2Elan (and therefore VoodooInput) is not loading. Do you see VoodooPS2Elan in IOReg?

Andrey1970AppleLife commented 4 years ago

Wow. After the second bootloading the trackpad works now. VoodooInput is loading. Снимок экрана 2020-10-02 в 19 21 40 Снимок экрана 2020-10-02 в 19 20 29

But there is a problems. The pointer moves a jump in the screen edge. And the pointer transfers for the edge of the screen and appears on the other side of the screen. I will make video soon.

CC @usr-sse2

Andrey1970AppleLife commented 4 years ago

Video: https://drive.google.com/file/d/1L4xsl_k8LgvRAdMh_tysSi5D8DqlUkEq/view

usr-sse2 commented 4 years ago

Use "Show Live View" in BetterTouchTool and make a video to show both cursor movement and reported finger positions, like this: https://www.icloud.com/iclouddrive/0GMkGsJJOEoW26feE-TTtZCcA#synaptics

hieplpvip commented 4 years ago

I think FingerMgmt is enough. No need to use BetterTouchTool

usr-sse2 commented 4 years ago

I think FingerMgmt is enough. No need to use BetterTouchTool

@hieplpvip Live View in BTT works even after the expiration of trial license. But thanks, I’ll look on FingerMgmt too.

Sent with GitHawk

Andrey1970AppleLife commented 4 years ago

https://drive.google.com/file/d/1SvkGu7ZWxrY5R5XYbEljFMZqAMV7wie1/view?usp=sharing

Deeka0 commented 4 years ago

The trackpad Elan v3 works only as a mouse. Doubleclick works. Trackpad keys work. Gestures don't work. Trackpad preferens panel don't work.

Seems like VoodooPS2Elan (and therefore VoodooInput) is not loading. Do you see VoodooPS2Elan in IOReg?

Hi Good day.

I also have issues with the latest release as my Elan trackpad doesn't work anymore. Previously, my trackpad only worked as a mouse without the trackpad preference showing up in System Preferences. After the v2.1.7 release, the preference pane shows up (I appreciate that) but my trackpad doesn't move, click or do anything anymore. Voodoo input and VoodooPS2Elan loads as I've seen in IOReg.

I have an Asus P2540UA Laptop. Tell me if you need more information. Any help would be appreciated. Thank you.

@usr-sse2 @hieplpvip @kprinssu @BAndysc

andreszerocross commented 4 years ago

The trackpad Elan v3 works only as a mouse. Doubleclick works. Trackpad keys work. Gestures don't work. Trackpad preferens panel don't work.

Seems like VoodooPS2Elan (and therefore VoodooInput) is not loading. Do you see VoodooPS2Elan in IOReg?

Hi Good day.

I also have issues with the latest release as my Elan trackpad doesn't work anymore. Previously, my trackpad only worked as a mouse without the trackpad preference showing up in System Preferences. After the v2.1.7 release, the preference pane shows up (I appreciate that) but my trackpad doesn't move, click or do anything anymore. Voodoo input and VoodooPS2Elan loads as I've seen in IOReg.

I have an Asus P2540UA Laptop. Tell me if you need more information. Any help would be appreciated. Thank you.

@usr-sse2 @hieplpvip @kprinssu @BAndysc

Are you sure your touchpad is using PS2 Interface?? Most kabylake laptop of asus are using I2C Touchpad

Deeka0 commented 4 years ago

The trackpad Elan v3 works only as a mouse. Doubleclick works. Trackpad keys work. Gestures don't work. Trackpad preferens panel don't work.

Seems like VoodooPS2Elan (and therefore VoodooInput) is not loading. Do you see VoodooPS2Elan in IOReg?

Hi Good day. I also have issues with the latest release as my Elan trackpad doesn't work anymore. Previously, my trackpad only worked as a mouse without the trackpad preference showing up in System Preferences. After the v2.1.7 release, the preference pane shows up (I appreciate that) but my trackpad doesn't move, click or do anything anymore. Voodoo input and VoodooPS2Elan loads as I've seen in IOReg. I have an Asus P2540UA Laptop. Tell me if you need more information. Any help would be appreciated. Thank you. @usr-sse2 @hieplpvip @kprinssu @BAndysc

Are you sure your touchpad is using PS2 Interface?? Most kabylake laptop of asus are using I2C Touchpad

I think mine uses the PS/2 interface as I saw on windows device manager (Trackpad BIOS Device Name: _SB.PCI0.LPCB.PS2M). Is there anyway to check if my trackpad uses the both interfaces? I also confirmed it is Elan v4. Would I need to create a new issue thread for this too?

@vit9696 @usr-sse2 @hieplpvip @BAndysc

Andrey1970AppleLife commented 4 years ago

CC @BAndysc, @hieplpvip, @usr-sse2 sudo dmesg | grep VoodooPS2Elan

VoodooPS2Elan: Version 2.1.7 starting on OS X Darwin 19.6.
VoodooPS2Elan: send magic knock to the device.
VoodooPS2Elan: Elantech version query result 0x55, 0x0f, 0x01.
VoodooPS2Elan assuming hardware version 3 (with firmware version 0x550f01)
VoodooPS2Elan: Elan capabilities query result 0x79, 0x18, 0x0b.
VoodooPS2Elan: Elan sample query result 02, 38, 97
VoodooPS2Elan: capabilities: 79 18 b
VoodooPS2Elan: samples: 79 18 b
VoodooPS2Elan: hw_version: 3
VoodooPS2Elan: fw_version: 550f01
VoodooPS2Elan: x_min: 0
VoodooPS2Elan: y_min: 0
VoodooPS2Elan: x_max: 1364
VoodooPS2Elan: y_max: 558
VoodooPS2Elan: x_res: 31
VoodooPS2Elan: y_res: 31
VoodooPS2Elan: x_traces: 0
VoodooPS2Elan: y_traces: 0
VoodooPS2Elan: width: 0
VoodooPS2Elan: bus: 0
VoodooPS2Elan: paritycheck: 1
VoodooPS2Elan: jumpy_cursor: 0
VoodooPS2Elan: reports_pressure: 1
VoodooPS2Elan: crc_enabled: 0
VoodooPS2Elan: set_hw_resolution: 1
VoodooPS2Elan: has_trackpoint: 0
VoodooPS2Elan: has_middle_button: 0
VoodooPS2Elan: elan touchpad detected. Probing finished.
nms42 commented 4 years ago

Try to disable ForceTouchMode. Either with control panel if available, or in Info.plist of VoodooPS2Elan.

vit9696 commented 4 years ago

The issue here is that the touchpad reports x_max as 1364 and y_max as 558, but in reality it reports packets with x up to 2666 and y up to 754 (in fact maybe more):

Снимок экрана 2020-10-11 в 14 50 08

I pushed a simple dynamic rescaling algorithm to update the maximum coordinates as we go, which seems to resolve the issue.

Andrey1970AppleLife commented 4 years ago

Thanks @vit9696 , works.

vit9696 commented 4 years ago

Let's keep it open till we merge this.

Mkhairy0100 commented 4 years ago

The trackpad Elan v3 works only as a mouse. Doubleclick works. Trackpad keys work. Gestures don't work. Trackpad preferens panel don't work.

Seems like VoodooPS2Elan (and therefore VoodooInput) is not loading. Do you see VoodooPS2Elan in IOReg?

Hi Good day.

I also have issues with the latest release as my Elan trackpad doesn't work anymore. Previously, my trackpad only worked as a mouse without the trackpad preference showing up in System Preferences. After the v2.1.7 release, the preference pane shows up (I appreciate that) but my trackpad doesn't move, click or do anything anymore. Voodoo input and VoodooPS2Elan loads as I've seen in IOReg.

I have an Asus P2540UA Laptop. Tell me if you need more information. Any help would be appreciated. Thank you.

@usr-sse2 @hieplpvip @kprinssu @BAndysc

I have same problem here my laptop ASUS TP500LN Haswell appleps2elan is loaded Elan v 4, fw: 381f17, bus: 0 IOService:/AppleACPIPlatformExpert/PS2M/ps2controller/ApplePS2Controller/ApplePS2MouseDevice/ApplePS2Elan trackpad preferences is loaded but no move nor click it was working fine using smart touchpad kext

on kernel log 2020-10-12 21:08:09.123073+0200 localhost kernel[0]: (kernel) VoodooPS2Trackpad: Identify TouchPad command returned incorrect byte 2 (of 3): 0x04

2020-10-12 21:08:09.200205+0200 localhost kernel[0]: (kernel) ApplePS2Controller: Notification consumer published: ApplePS2Elan

any help thanks on advance

![Screen Shot 2020-10-12 at 10 22 31 PM 1](https://user-images.githubusercontent.com/72765111/95787309-8c869980-0cd9-11eb-868c-889cea8335a2.png

Deeka0 commented 4 years ago

The trackpad Elan v3 works only as a mouse. Doubleclick works. Trackpad keys work. Gestures don't work. Trackpad preferens panel don't work.

Seems like VoodooPS2Elan (and therefore VoodooInput) is not loading. Do you see VoodooPS2Elan in IOReg?

Hi Good day. I also have issues with the latest release as my Elan trackpad doesn't work anymore. Previously, my trackpad only worked as a mouse without the trackpad preference showing up in System Preferences. After the v2.1.7 release, the preference pane shows up (I appreciate that) but my trackpad doesn't move, click or do anything anymore. Voodoo input and VoodooPS2Elan loads as I've seen in IOReg. I have an Asus P2540UA Laptop. Tell me if you need more information. Any help would be appreciated. Thank you. @usr-sse2 @hieplpvip @kprinssu @BAndysc

I have same problem here my laptop ASUS TP500LN Haswell appleps2elan is loaded Elan v 4, fw: 381f17, bus: 0 IOService:/AppleACPIPlatformExpert/PS2M/ps2controller/ApplePS2Controller/ApplePS2MouseDevice/ApplePS2Elan trackpad preferences is loaded but no move nor click it was working fine using smart touchpad kext

on kernel log 2020-10-12 21:08:09.123073+0200 localhost kernel[0]: (kernel) VoodooPS2Trackpad: Identify TouchPad command returned incorrect byte 2 (of 3): 0x04

2020-10-12 21:08:09.200205+0200 localhost kernel[0]: (kernel) ApplePS2Controller: Notification consumer published: ApplePS2Elan

any help thanks on advance

![Screen Shot 2020-10-12 at 10 22 31 PM 1](https://user-images.githubusercontent.com/72765111/95787309-8c869980-0cd9-11eb-868c-889cea8335a2.png

I think the issue is from the latest release. It worked on previous versions although the trackpad preference pane didn't load.

IFierta commented 3 years ago

I found an issue that prevented my touchpad from working after waking up from sleep.

The fact is that after sleep, the touchpad needs to be initialized. Execute method elantechSetupPS2 () and only then perform other methods. And another problem was in the call to resetMouse (). I removed this method. After that my touchpad started working normally.

Original: Снимок_экрана_2020-12-05_в_00_14_04

Modified: Снимок_экрана_2020-12-05_в_00_11_33

vit9696 commented 3 years ago

@IFierta looking at your changes it seems enough to simply comment resetMouse call out. Can you confirm this?

If yes, then my primary suspect regarding resetMouse is that a delay is needed between setup and reset. Can you try adding IOSleep calls between them?

IFierta commented 3 years ago

@IFierta looking at your changes it seems enough to simply comment resetMouse call out. Can you confirm this?

If yes, then my primary suspect regarding resetMouse is that a delay is needed between setup and reset. Can you try adding IOSleep calls between them?

If you just comment out resetMouse (), in this case the touchpad does not work, but if, as in the second screenshot, then the touchpad works. For the touchpad to work, you need to add elantech Setup PS2 () after IOSleep(wakedelay).

vit9696 commented 3 years ago

I.e. zeroing the _packetByteCount and clearing the _ringBuffer before doing setup breaks the process even if we entirely take resetMouse out of an act, correct? That looks very strange, as I do not see elantechSetupPS2 using any of these variables. Can you tell us which of the two is the cause of the breakage by putting elantechSetupPS2 before one but after another? You can reorder the two freely.

IFierta commented 3 years ago

@vit9696 1) Inserted elantech SetupPS2 between _packetByteCount and _ringBuffer. 2) resetMouse () did not comment. Result: doesn't work.

  1. ...

  2. resetMouse commented out. Result: doesn't work.


    1) elantechSetupPS2 inserted before _packetByteCount 2) resetMouse commented out. Result: works

  3. ...

  4. resetMouse () did not comment. Result: doesn't work.

( Поздравляю с новым годом! Желаю счастья, здоровья, успехов и процветания Вам и вашей команде! Спасибо большое за результат вашей работы! )

vit9696 commented 3 years ago

Спасибо, тоже с Новым годом!!

What if you have

_ringBuffer.reset();
elantechSetupPS2();
_packetByteCount = 0;

resetMouse(); /* try commenting this one if it fails*/

I suspect that we have a very bad race condition here, but I cannot easily get what kind. CC @usr-sse2, @hieplpvip, @zhen-zen, @1Revenger1, @BAndysc.

IFierta commented 3 years ago

Спасибо, тоже с Новым годом!!

What if you have

_ringBuffer.reset();
elantechSetupPS2();
_packetByteCount = 0;

resetMouse(); /* try commenting this one if it fails*/

I suspect that we have a very bad race condition here, but I cannot easily get what kind. CC @usr-sse2, @hieplpvip, @zhen-zen, @1Revenger1, @BAndysc.

Works with this code, but need to comment out resetMouse, if not comment out, then the touchpad does not work after sleep.

vit9696 commented 3 years ago

Hmmmm, that sounds like it conflicts with some interrupt on wake, though I cannot see how it can happen, as everything should happen in the work loop including this power set… Maybe some command fails to process in time. Could you try?

        case kPS2C_EnableDevice:
            // Must not issue any commands before the device has
            // completed its power-on self-test and calibration
            IOSleep(3000);

            // Clear packet buffer pointer to avoid issues caused by stale packet fragments
            _packetByteCount = 0;
            _ringBuffer.reset();

            IOSleep(3000);

            // Reset and enable the touchpad
            resetMouse();

            IOSleep(3000);

            elantechSetupPS2();

            IOSleep(3000);

            setTouchPadEnable(true);
            break;

This may require up to 15 seconds to power up your touchpad after wake. If it works, try reducing/removing the delays.

IFierta commented 3 years ago

Does not work. I tried decreasing the time (2000, 1000, 500), the result is the same.

IOSleep(0) - touchpad works.

vit9696 commented 3 years ago

Huh, IOSleep(0)? Please clarify what code did you use to get things work. Did you leave the code unchanged from my sample above, but simply set the argument to 0, and it worked?

IFierta commented 3 years ago

Yes,IOSleep(0). I set the argument to 0, didn't make any more changes.

vit9696 commented 3 years ago

Right, then is it enough to change IOSleep(wakedelay) to IOSleep(0) in the master code?

vit9696 commented 3 years ago

If it does, then supplying this SSDT should be enough (adjust the device path as necessary):

// For some computers wake delay needs to be shorter
// for ELAN touchpad to work after wakeup.

DefinitionBlock("", "SSDT", 2, "ACDT", "ps2", 0)
{
    External (_SB_.PCI0.LPCB.PS2K, DeviceObj)

    Name(_SB.PCI0.LPCB.PS2K.RMCF, Package()
    {
        "Elantech TouchPad", Package()
        {
            "WakeDelay", 0,
        },
    })
}
//EOF
IFierta commented 3 years ago

Yes it works. How do I add this code to ssdt-ps2? I use it to remap the key (cmd - opt).

vit9696 commented 3 years ago

Great, you just add them one by one, like here: https://github.com/acidanthera/VoodooPS2/blob/master/Docs/ACPI/SSDT-DisableTrackpadProbe.dsl

IFierta commented 3 years ago

Great, you just add them one by one, like here: https://github.com/acidanthera/VoodooPS2/blob/master/Docs/ACPI/SSDT-DisableTrackpadProbe.dsl

Works. Thank you so much! A great gift for the new year! ))

vit9696 commented 3 years ago

Glad to hear, I added this ACPI example to the samples in https://github.com/acidanthera/VoodooPS2/blob/master/Docs/ACPI/SSDT-DisableElanWakeDelay.dsl.

IFierta commented 3 years ago

Glad to hear, I added this ACPI example to the samples in https://github.com/acidanthera/VoodooPS2/blob/master/Docs/ACPI/SSDT-DisableElanWakeDelay.dsl.

Thank you. )

sztupy commented 3 years ago

I have two issues with my ELAN trackpad:

  1. Occasionally during boot I'm getting an ApplePS2Controller: Timed out on mouse input stream error message. If this happens then the trackpad doesn't work at all, only the keyboard. I usually have to boot into Windows, then shut down the computer and then boot into OSX again for this to be fixed. It usually happens if I accidentally boot into Windows using OpenCore instead of natively from the boot menu (and then restart to get to OSX again).

  2. The trackpad, including the two buttons and all multi-touch gestures work correctly. However the trackpad doesn't appear in the settings, as it still says "No trackpad found", so you cannot configure it, and by the default the sensibility is set to too low.

Note: the device does appear in the IORegExplorer along with the relevant simulator kexts and as mentioned multi-touch functionality works, it's just that the configuration pane is not available.

Boot logs:

IMG_20210208_132733

(can't provide them in text format because of https://github.com/acidanthera/bugtracker/issues/1483)

OS: Tested with Catalina and Big Sur. OC 0.6.6 and version 2.2.1 of the kext (tried with 2.2.0 as well)

vit9696 commented 3 years ago

No preferences I believe is usually caused by incorrect SMBIOS model. Must be laptop. Make sure you use Automatic configuration in OC. If there are more cases, @usr-sse2 might provide them.

As for Timed out on mouse input stream, not sure I can help. You can try increasing the timeouts, but most likely some kind of hardware reset is needed. We do not have the hardware and are not up to debugging remotely these days. If you have skills, you can try comparing Linux code with ours, and perhaps figuring the thing out.

sztupy commented 3 years ago

I am using MacBookPro11,5 as the product name. Automatic is enabled in PlatformInfo. Tried with some other laptop SMBIOS models in the Haswell range (MacBookAir6,2 and MacBookPro11,1), but none of them worked. Any other pointers where I might need to look?

1Revenger1 commented 3 years ago

You need battery status to be working within macOS to see the trackpad preferences. I don't know about the timed out stream, sorry.

sztupy commented 3 years ago

That must be it, as I haven't fixed battery yet on this setup. Thanks a lot!

treeshateorcs commented 3 years ago

i have this issue on a thinkpad t480s, i believe it's an elan trackpoint. very annoying!

Mkhairy0100 commented 2 years ago

till last release of voodoops2 no solution for this problem https://github.com/acidanthera/bugtracker/issues/1220 any hope ?

1Revenger1 commented 2 years ago

Someone on Discord was having issues with their Elans trackpad not working after sleep. I was a little confused by what I saw in elantechSetupPS2 and was hoping for some insight. I'll start with the diff that worked for the user on Discord:

diff --git a/VoodooPS2Trackpad/VoodooPS2Elan.cpp b/VoodooPS2Trackpad/VoodooPS2Elan.cpp
index fa98e20..c4aab07 100644
--- a/VoodooPS2Trackpad/VoodooPS2Elan.cpp
+++ b/VoodooPS2Trackpad/VoodooPS2Elan.cpp
@@ -498,7 +499,9 @@ void ApplePS2Elan::setDevicePowerState(UInt32 whatToDo) {

             // Reset and enable the touchpad
             resetMouse();
-            elantechSetupPS2();
+            elantechDetect();
+            elantechSetAbsoluteMode();
+//            elantechSetupPS2();
             setTouchPadEnable(true);
             break;
     }

This more closely resembles what is done in elantech_reconnect. setAbsoluteMode is done in elantechSetupPS2, which I'm guessing was the step missing earlier in this discussion.

This were the things I was curious about in elantechSetupPS2.

  1. Does the parity value need to be filled in again after waking from sleep?
  2. elantechSetInputParams appears to just set the properties needed for VoodooInput. Would this need to be published again? I thought that was handled in rescale and when this was called at boot.
  3. This is really the main thing I'm confused about. Does setting the resolution, sample rate, and scaling do anything? I could not find these being set in the original Linux source, and I'm thinking this may be what was causing the Discord user issues. Synaptic devices ignore these values, though I'm not sure about Elans.
loll70 commented 2 years ago

Hello, I want to report a very similar issue. I have a ThinkPad Yoga 460 and every time the device wakes from sleep, the touchpad will be lost after 1 movement. I suspect something else overrides it. The keyboard and touchscreen work fine. kext in use: VoodooPS2controller (keyboard & ELAN touchpad), VoodooI2C, VoodooI2CHID (touchscreen)

Bootloader : Latest OC Lilu : Latest kext

When only using VoodooPS2controller, only the trackpoint works, trackpad (expected to work) & touchscreen (expected not to work) doesn't work on boot. Trackpoint will be lost after waking from sleep and nothing works. Initial log: When using VoodooPS2controller+VoodooI2C+VoodooI2CHID, everything will work on boot (expected). After waking from sleep, the trackpoint and touchpad will work for a few seconds before lost. Touchscreen continues to work. trackpoint&clickpad conflict.zip

Doesn't this hint that there's a bug where if there are 2 PS2 devices under VoodooPS2Trackpad, then VoodooInput gets confused as shown in: kernel: (IOHIDFamily) VoodooInputSimulatorDevice:0x1000007dc Matching has vendor DeviceUsagePage : ff0c bundleIdentifier com.apple.AppleUserHIDDrivers ioclass AppleUserHIDEventService but transport and vendorID is missing

If I disable the trackpoint physically (unplug from motherboard). The issue is resolved. Could you please take a look at how VoodooPS2 handles 2 devices of same type?

arvedviehweger commented 1 year ago

Is there any hope to get issue #1220 fixed?

My laptop also runs an elan v4 trackpad which works ok with ApplePS2SmartTouchpad.

VodooPS2Trackpad attaches to my trackpad, preference pane also shows up but like others reported nothing happens when you try to click or move the mouse.

If you need any data from me I would be more than happy to provide it.