Skip to content
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

ELAN1200 stops working after a period of use #321

Open
Jie2GG opened this issue May 19, 2020 · 83 comments
Open

ELAN1200 stops working after a period of use #321

Jie2GG opened this issue May 19, 2020 · 83 comments
Labels

Comments

@Jie2GG
Copy link

Jie2GG commented May 19, 2020

Describe the bug
ELAN1200 was not responsive after a period of use, so it stopped working. My Touchpad working in GPIO model

Did you read the common errors documentation?
Yes

Did you read the troubleshooting documentation?
Yes

Have you searched the issue on Github, Gitter, or Google?
Yes

System Environment
Please answer:
Operation System: macOS Catalina 10.15.4
Device Version: VoodooI2C + VoodooI2CHID (2.4.2)

Name Model Note
CPU Intel Core i5 8265U @ 1.6GHz
Main board X530FN_S5300FN BIOS Version: 305
RAM 16G x 2
SSD WDC PC SN520 (512GB)
HDD WDC WD20SPZX-22CRAT0 (2TB)
WLAN BCM94350ZEN (DW1820A)
GPU Intel UHD Graphics 620
Touchpad ELAN1200

Troubleshooting Archive
This is my laptop DSDT, SSDT, ioreg and logs
VoodooI2C.zip

Additional context

I used FingerMgmt to detect the finger state and found that there is always a finger on the Touchpad (in fact, there is no finger on the Touchpad).
This is the first time working has stopped. Before this, once in the while the mouse pointer was not sensitive (but pressing the keyboard can restore normal).
It is worth noting that waking from sleep can restore working.

@kprinssu
Copy link
Collaborator

Can you upload a screen capture of the problem? It's kind of hard to make out the issue from your description.

@Jie2GG
Copy link
Author

Jie2GG commented May 20, 2020

Can you upload a screen capture of the problem? It's kind of hard to make out the issue from your description.

Since this problem appears very few times, it may take me a long time to reproduce the problem and take a screenshot. (It only happened once since I upgraded to VoodooI2C 2.4.2).

PS: It is important to note that the mouse pointer always becomes insensitive before this happens

@kprinssu
Copy link
Collaborator

Please try to capture the behaviour via a screen recording if you can. It has hard to understand the problem from your description.

@Jie2GG
Copy link
Author

Jie2GG commented May 26, 2020

Please try to capture the behaviour via a screen recording if you can. It has hard to understand the problem from your description.

Hi, I via a screen recording get VoodooI2C stop working of situation.
This time, FingerMgmt detected two fingers resting on the trackpad. (in fact, there is no finger on the Touchpad).

@kprinssu
Copy link
Collaborator

It looks like the driver just stopped reporting the gestures half way through. Looks to be another code issue with VoodooI2CHID.

@kprinssu kprinssu added the bug label May 26, 2020
@Jie2GG
Copy link
Author

Jie2GG commented May 26, 2020

It looks like the driver just stopped reporting the gestures half way through. Looks to be another code issue with VoodooI2CHID.

There is one notable detail. When I just opened FingerMgmt, the touchpad did not show my finger until I touched the touchpad and the above picture appeared

@Jie2GG
Copy link
Author

Jie2GG commented May 26, 2020

It looks like the driver just stopped reporting the gestures half way through. Looks to be another code issue with VoodooI2CHID.

If you need me to provide other relevant information, please contact me directly

@kprinssu
Copy link
Collaborator

kprinssu commented May 26, 2020

I would need you need to run debug versions of VoodooI2C and VoodooI2CHID (one which prints out the finger positions). I suspect it's changes to VoodooGPIO that is causing the issue.

@Jie2GG off hand, can you test these kexts:

Archive.zip

Those are built from master and are the latest versions of VoodooI2C and VoodooI2CHID.

@Jie2GG
Copy link
Author

Jie2GG commented May 26, 2020

I would need you need to run debug versions of VoodooI2C and VoodooI2CHID (one which prints out the finger positions). I suspect it's changes to VoodooGPIO that is causing the issue.

@Jie2GG off hand, can you test these kexts:

Archive.zip

Those are built from master and are the latest versions of VoodooI2C and VoodooI2CHID.

OK, No problem. But how do I provide that information?

@kprinssu
Copy link
Collaborator

For the time being, please use the above and then wait and see if the issue pops up. Please confirm if the issue is fixed or not while using the above kexts.

@Jie2GG
Copy link
Author

Jie2GG commented May 26, 2020

Ok, I have used the debug version VoodooI2C + VoodooI2CHID and clear system log. If any of exceptions, I will commit my system log.

@kprinssu
Copy link
Collaborator

There are no debug log prints in the above kexts, I just want to check if the latest version of master fixes your issue.

@Jie2GG
Copy link
Author

Jie2GG commented May 26, 2020

There are no debug log prints in the above kexts, I just want to check if the latest version of master fixes your issue.

Thank. I will soon test result.

@Jie2GG
Copy link
Author

Jie2GG commented May 27, 2020

There are no debug log prints in the above kexts, I just want to check if the latest version of master fixes your issue.

Hi, After testing, it was found that debug version are still issues

@Bronfentrinker
Copy link

I have the same problem. On similar hardware (Asus x509fa i7-8565u, touchpad elan1200). I tried the kext from the archive, but the problem remained.

@kprinssu
Copy link
Collaborator

kprinssu commented Jun 4, 2020

@Jie2GG does this issue occur on 2.3 of VoodooI2C?+

@Bronfentrinker
Copy link

Bronfentrinker commented Jun 4, 2020

@Jie2GG does this issue occur on 2.3 of VoodooI2C?+

The issue is still with version 2.4.3

@hieplpvip
Copy link
Contributor

Same for me

@Jie2GG
Copy link
Author

Jie2GG commented Jun 5, 2020

@kprinssu This issues occur on version 2.2 of VoodooI2C+, version 2.1.4 my laptop not working

@iDanielSouza
Copy link

I'm using macOS Catalina 10.15.5 and this works with my trackpad:
Try to install in your clover folder the kext VoodooI2CHID.kext from the release 2.1.6 and VoodooI2C.kext from the latest release.
This issue doesn't occur to me since I did it 3 days ago.
(My laptop: Asus Vivobook X510UR-BQ378T/Core i5 8250U)

@Bronfentrinker
Copy link

Bronfentrinker commented Jun 23, 2020

I'm using macOS Catalina 10.15.5 and this works with my trackpad:
Try to install in your clover folder the kext VoodooI2CHID.kext from the release 2.1.6 and VoodooI2C.kext from the latest release.
This issue doesn't occur to me since I did it 3 days ago.
(My laptop: Asus Vivobook X510UR-BQ378T/Core i5 8250U)

not working for me. with version 2.1.6 the touchpad does not work at all

@soffyo
Copy link

soffyo commented Jul 17, 2020

This is happening for me too (asus Zenbook UX331UN, ELAN 1200). GPIO or polling mode bring the same problem, the trackpad becomes unresponsive at random times. It works again after sleep.

@iDanielSouza
Copy link

Is the issue still happening on Catalina 10.15.6?

@Fradri
Copy link

Fradri commented Aug 6, 2020

Same issue for me with ELAN1200. (On Asus Zenbook UX330)
Trackpad randomly stops working, usually a few minutes after starting or sleep.
It lasts 2-3 minutes, i wait, and then it becomes operational again ...

Yesterday I updated to Catalina 10.15.6, for the moment no freezing problem.
But no gesture support with the last version of VoodooI2C (2.4.3). (No scrolling, right clic with two finger ...)
With version 2.3 the trackpad does not work at all.
I fixed this problem by using VoodooI2CHID under the latest version 2.4.3 and VoodooI2C from 2.3 and the gestures are working again!

@Goshin
Copy link
Contributor

Goshin commented Aug 6, 2020

Maybe a hardware-specific problem.
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1778087

@mishurov
Copy link

mishurov commented Sep 23, 2020

Same issue for me with ELAN1200. (On Asus Zenbook UX310). Polling mode.

Random not loading during boot phase was solved with this patch, it allows using the latest version:
#319 (comment)

@Goshin Linux is my primary OS. The vast majority of my time I spend in Debian. It works fine in Linux.

@Jie2GG
Copy link
Author

Jie2GG commented Sep 25, 2020

Yes, ‘ELAN1200’ touchpad working in polling also stop.

@technoeunuch
Copy link

I really wish this one could be sorted out, those random timeouts are really getting on my nerves. Had to use a backup optical mouse most of the time.

@mishurov
Copy link

It is something with the touchpad sending incomplete reports using the HID protocol. Windows and Linux drivers handle this case, VoodooI2CHID doesn't. I replaced my touchpad on Asus UX310 with a touchpad with fingerprint (ELAN1300:00 04F3:3028) and it works without issues.

@shiecldk
Copy link

shiecldk commented Jan 27, 2023

@mishurov Can you show us which parts of VoodooI2C codes we need to work on for this fix? Thanks.

@mishurov
Copy link

@shiecldk if I knew that, I would've opened pull request already instead of replacing my touchpad.

@Qonfused
Copy link

I'm looking into this issue as well in Qonfused/ASUS-ZenBook-Duo-14-UX481-Hackintosh#24. Doing a rough sweep of the linked thread in #321 (comment), I believe I've found all the related patches that he must have implemented. The bulk of these address VoodooGPIO and may not be entirely relevant to this issue, but whatever may have resolved the issue for @jjsmith92 should be among these listed:

--- (comment #16) ---
For the ASUS GL703GE Model it seems that you need to manually add the lines 1016, 1021 and 1022 from https://bugzilla.kernel.org/attachment.cgi?id=277507&action=diff to /drivers/pinctrl/intel/pinctrl-intel.c from kernel 4.19-rc2

--- (comment #29) ---
...
Andrey, the only 'valuable' change I had in my 'for-vivien' branch compared to upstream was bentiss/hid-multitouch@878681f This added a magic sequence found by reverse engineering, so it might or not help. It is still a mystery about what this is however. The rest of the driver should be upstream. (Note: next time clone my repo to keep the history, it will solve the issue of not knowing what is in your repo).

--- (comment #58) ---
Here is a correct patch for the issue:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl/intel/pinctrl-cannonlake.c?h=v4.20&id=e50d95e2ad1266f8d3fcdf0724f03dbdffd400aa

^^ Addresses this file: VoodooGPIO/CannonLake-LP/VoodooGPIOCannonLakeLP.hpp

--- (comment #73) ---
This bug has been fixed by this commit torvalds/linux@6cb0880

And now the touchpad works even after resuming from suspend on my ASUS FX504GE, no more disconnection like described in earlier kernels. Thanks to everyone for working on this. For anyone's reference I am running Ubuntu 19.10 with kernel version :5.3.0-999-generic(Ubuntu mainline kernel with a daily update cycle from upstream)

^^ Implementation used in this commit: https://github.com/VoodooI2C/VoodooGPIO/pull/8/files

--- (comment #77) ---
(In reply to Ryan Reich from comment #74)
...
Can you test this patch: https://lore.kernel.org/linux-gpio/CAHp75VekvqHX_eUm88RQJQiU59hUoxUY=pP4MWsp6xn3os9bPg@mail.gmail.com/T/#t ?

@LeeBinder
Copy link

LeeBinder commented Jun 8, 2023

It is something with the touchpad sending incomplete reports using the HID protocol. Windows and Linux drivers handle this case, VoodooI2CHID doesn't. I replaced my touchpad on Asus UX310 with a touchpad with fingerprint (ELAN1300:00 04F3:3028) and it works without issues.

@mishurov can you please share the link where you purchased that replacement touchpad?

@Qonfused did you ever manage to compile VoodooI2C kexts with all patches? If so, can you share your build?

@mishurov
Copy link

mishurov commented Jun 8, 2023

@LeeBinder https://aliexpress.ru/item/1005003022904707.html?sku_id=12000023284009369

@LeeBinder
Copy link

Great, thanks you @mishurov That one is sold out, but I ordered the next one I could find on aliexpress for my country 👍

I'll report back once I've swapped touchpads (might naturally take a while).

@Qonfused
Copy link

@Qonfused did you ever manage to compile VoodooI2C kexts with all patches? If so, can you share your build?

@LeeBinder I'm not sure where I left off with this then but I can look into it again.

@LeeBinder
Copy link

@Qonfused great Cory, thanks.

@kprinssu
Copy link
Collaborator

kprinssu commented Oct 25, 2023

This is indeed a hardware issue and can be fixed with a quirk. We will need to not set the I2C_HID_POWER_ON flag

Thanks to https://sherief.fyi/post/touchpad-jitters/ for pointing out the fix. The appropriate line is here, https://elixir.bootlin.com/linux/latest/source/drivers/hid/i2c-hid/i2c-hid-core.c#L134 and https://elixir.bootlin.com/linux/latest/source/drivers/hid/i2c-hid/i2c-hid-core.c#L490

We should be able to fix this by adding the Elan vendor and product ids here, https://github.com/VoodooI2C/VoodooI2CHID/blob/89fa5b64c1fc38b4b370d45c7ad0d8d632e3b86c/VoodooI2CHID/VoodooI2CHIDDevice.hpp#L84

@LeeBinder
Copy link

LeeBinder commented Oct 25, 2023

Kudos, @kprinssu, for finding Sherief's analysis and reflecting it into VoodooI2CHIDDevice.hpp - great job 👍 ! Would be like a dream come true if this issue indeed could be solved for good.

I have an ELAN1200 with the same issue (somewhat improved after swapping my original ELAN1300 w/ FP sensor with a ELAN1200 w/o FP sensor from the link kindly provided above, but still not fully resolved). Can post IDs of both tomorrow.

@LeeBinder
Copy link

LeeBinder commented Oct 26, 2023

Here we go (also see my updated comment above):

ELAN 1200 I2C Controller V. 8086, Sub V. 1043, Sub D. 1D30
VoodooI2CMultitouchInterface (VendorID:ProductID): 04F3:303e aka 0x4f3:0x303e

- Controller # 0 (D. 9d60):
	IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/I2C0@15
	PciRoot(0x0)/Pci(0x15,0x0)

- Controller # 1 (D. 9d61):
	IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/I2C1@15,1
	PciRoot(0x0)/Pci(0x15,0x1)

.. and from my original ELAN1300 - same values as above, except:

VoodooI2CMultitouchInterface (VendorID:ProductID): 04F3:3057 aka 0x4f3:0x3057

@LeeBinder
Copy link

@kprinssu would it help you if as many users affected by this issue posted their trackpad's IDs? I could then contribute the script to easily echo all required data.

@kprinssu
Copy link
Collaborator

@LeeBinder it shouldn't matter as there's a macro to match the quirk against all Elan touchpads.

@LeeBinder
Copy link

mighty cool. My TP is already getting hot & sticky all over in anticipation of beta-testing ;)

@LeeBinder
Copy link

LeeBinder commented Jan 13, 2024

Hi @kprinssu It seems you're waiting for someone to share the relevant code snippets with you?

(over @ https://app.circleci.com/pipelines/github/VoodooI2C/VoodooI2C I see the general project seems dead.. - latest post-2.8 beta build 843 I got saved on my HD is from 2023-06-28 :( )

@itsmaclol if you still experience the same issue(s): go to ebay.[yourContry] and get a replacement ELAN 1200. It's try & error. The first one I got (via aliexpress) was not really an improvement, but the one I'm typing on right now (from ebay) is still not perfect but much better. Asus was evidently saving on the wrong spot with that entire line...

@itsmaclol
Copy link

Im just gonna deal with it because:

  1. shipping costs a lot to Albania
  2. cant get it rn

@LeeBinder
Copy link

"rn" = returned? Well Albania isn't too far from where I'm at. Send your cat over & I'll attach the TP onto her back .. ;)

@itsmaclol
Copy link

"rn" = Right Now
Also sure ill send her over whats your address? :D

@LeeBinder
Copy link

LeeBinder commented Jan 13, 2024

just throw her into the Rhine and I'll pick her up once she's at the big lake. But on 2nd thought, cat's don't like their fur frozen.

(my cat would always jump onto my keyboard when she wanted attention. But I'm getting slightly off-topic here)

@itsmaclol
Copy link

So am i!
Anyway thanks for the recommandation!

@kprinssu
Copy link
Collaborator

kprinssu commented Jan 15, 2024

Hi @kprinssu It seems you're waiting for someone to share the relevant code snippets with you?

(over @ https://app.circleci.com/pipelines/github/VoodooI2C/VoodooI2C I see the general project seems dead.. - latest post-2.8 beta build 843 I got saved on my HD is from 2023-06-28 :( )

@itsmaclol if you still experience the same issue(s): go to ebay.[yourContry] and get a replacement ELAN 1200. It's try & error. The first one I got (via aliexpress) was not really an improvement, but the one I'm typing on right now (from ebay) is still not perfect but much better. Asus was evidently saving on the wrong spot with that entire line...

@LeeBinder I honestly am quite busy these days with work and personal life. I will not be stepping away from VoodooI2C but will be stepping away from active development. I just don't have the time committent to get things across the finish line. Honestly, this has been my passion project since 2017 and I am quite happy at the state of the project. There are bug and edge cases that people have been requesting for years, but I am tired and burnt out from being the sole maintainer. I will be around for reviewing code and creating/coordinating new releases, but this will probably be it from me for the time being.

I hope that my previous comment has pointed out the cause and gives someone else enough info to write up the patch for the ELAN devices. As always, PRs are always welcome.

@LeeBinder
Copy link

I fully understand - thanks for explaining the background. If I could code I'd help, but unfortunately my coding "career" ended with MS Visual Basic back in the days, LOL.

Yes, VoodooI2C sure is mighty awesome 💯 🥇

Just out of curiosity: roughly, how many hours of coding incl. debugging do you think it might approximately (min/ max) take to write up the patch for the ELAN devices? And if this was a job pitch, what would you say would be appropriate for this job on let's say freelancer.com (taking into account all the competition there)?

@kprinssu
Copy link
Collaborator

IMO, the level of effort here is minimal. It's adding a new quirk and checking if quirk is set. If the quirk is set, don't send I2C_HID_POWER_ON to the device.

@LeeBinder
Copy link

Well that's great news. Just as an idea, I could set up a project on freelancer.com, announce it here and wait for bids.

If you did this commercially, how much would you ask for?

@kprinssu
Copy link
Collaborator

kprinssu commented Jan 16, 2024

Frankly speaking, I would not take on paid feature work for VoodooI2C. It goes against my personal ethos of supporting and writing free open source software. It also risk the ire of Apple and that is something I do not want to put on myself nor this project.

As previously mentioned, PRs are always welcome.

@LeeBinder
Copy link

LeeBinder commented Jan 16, 2024

ah, OK - always enlightening to get the extended background for the bigger picture. There is tons of hackintosh projects on freelancer.com so I would never have thought into the direction of caution in that context.

So we'll see if someone from the team can jump on this project (which hopefully indeed proves to be of merely minimal effort as you write).

@LeeBinder
Copy link

LeeBinder commented May 9, 2024

IMO, the level of effort here is minimal. It's adding a new quirk and checking if quirk is set. If the quirk is set, don't send I2C_HID_POWER_ON to the device.

Hi @kprinssu @1Revenger1 is there any chance you can revisit this issue for the 2.9 release blush?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests