Bug 100235

Summary: spurious input events
Product: Wayland Reporter: Ritesh Raj Sarraf <rrs>
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED WONTFIX QA Contact:
Severity: major    
Priority: medium CC: benjamin.tissoires, peter.hutterer
Version: unspecified   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: evemu-record data for touch screen
Elan Touchscreen hid data

Description Ritesh Raj Sarraf 2017-03-16 17:43:44 UTC
I'll try my best to describe this bug.

You can see in the below logs that event 15, which is tied to Touchscreen input, is reporting multiple events. But while these events were generated, I was not using my touchscreen. Initially, I thought this to be a dying hardware problem (even though my machine is fairly recent), but then, I have had similar spurious events on another machine which doesn't even have a touchscreen.

I think there's some bug in libinput generic code, generating spurious events.

I am afraid at this time I do not have clear steps to reproduce, but I was able to witness this bug on both my machines, running on Debian with libinput 1.6.3.

Do you suspect this to be a problem with libinput ? The other suspect I thought was systemd-logid. But I couldn't gather enough data to prove it. Luckily, in this case, libinput-debug-events has been supportive.

Is there anyway to extract more data to prove this bug ?

rrs@learner:~$ uname -a
Linux learner 4.10.3+ #23 SMP Wed Mar 15 21:55:55 IST 2017 x86_64 GNU/Linux
2017-03-16 / 23:13:09 ♒♒♒  ☺  


rrs@learner:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.0 (stretch)
Release:	9.0
Codename:	stretch
2017-03-16 / 23:13:12 ♒♒♒  ☺  



rrs@learner:~$ libinput-debug-events 
-event3   DEVICE_ADDED     Power Button                      seat0 default group1  cap:k
-event4   DEVICE_ADDED     Video Bus                         seat0 default group2  cap:k
-event1   DEVICE_ADDED     Power Button                      seat0 default group3  cap:k
-event15  DEVICE_ADDED     ELAN Touchscreen                  seat0 default group4  cap:t  size 290x162mm calib
-event14  DEVICE_ADDED     Lenovo EasyCamera                 seat0 default group5  cap:k
-event6   DEVICE_ADDED     Ideapad extra buttons             seat0 default group6  cap:k
-event0   DEVICE_ADDED     AT Translated Set 2 keyboard      seat0 default group7  cap:k
-event5   DEVICE_ADDED     SynPS/2 Synaptics TouchPad        seat0 default group8  cap:pg  size 87x58mm tap(dl off) left scroll-nat scroll-2fg-edge click-buttonareas-clickfinger dwt-on
-event0   KEYBOARD_KEY      +3.41s	*** (-1) pressed
 event0   KEYBOARD_KEY      +3.86s	*** (-1) released
-event15  TOUCH_DOWN        +9.46s	0 (0) 25.60/99.95 (74.38/162.46mm)
 event15  TOUCH_FRAME       +9.46s	
 event15  TOUCH_MOTION      +9.46s	0 (0) 25.60/99.43 (74.38/161.62mm)
 event15  TOUCH_FRAME       +9.46s	
 event15  TOUCH_UP          +9.48s	
 event15  TOUCH_FRAME       +9.48s	
-event0   KEYBOARD_KEY      +9.71s	KEY_LEFTMETA (125) pressed
 event0   KEYBOARD_KEY     +10.14s	KEY_LEFTMETA (125) released
 event0   KEYBOARD_KEY     +10.35s	*** (-1) pressed
 event0   KEYBOARD_KEY     +10.44s	*** (-1) pressed
 event0   KEYBOARD_KEY     +10.50s	*** (-1) released
 event0   KEYBOARD_KEY     +10.59s	*** (-1) released
 event0   KEYBOARD_KEY     +11.61s	KEY_LEFTMETA (125) pressed
 event0   KEYBOARD_KEY     +11.72s	KEY_LEFTMETA (125) released
 event0   KEYBOARD_KEY     +12.48s	*** (-1) pressed
 event0   KEYBOARD_KEY     +12.55s	*** (-1) pressed
 event0   KEYBOARD_KEY     +12.60s	*** (-1) released
 event0   KEYBOARD_KEY     +12.69s	*** (-1) released
 event0   KEYBOARD_KEY     +13.17s	KEY_LEFTMETA (125) pressed
 event0   KEYBOARD_KEY     +13.26s	KEY_UP (103) pressed
 event0   KEYBOARD_KEY     +13.37s	KEY_UP (103) released
 event0   KEYBOARD_KEY     +13.38s	KEY_LEFTMETA (125) released
-event15  TOUCH_DOWN       +15.24s	0 (0) 25.60/56.03 (74.38/91.08mm)
 event15  TOUCH_FRAME      +15.24s	
 event15  TOUCH_UP         +15.26s	
 event15  TOUCH_FRAME      +15.26s	
 event15  TOUCH_DOWN       +17.18s	0 (0) 25.60/98.01 (74.38/159.31mm)
 event15  TOUCH_FRAME      +17.18s	
 event15  TOUCH_UP         +17.20s	
 event15  TOUCH_FRAME      +17.20s	
 event15  TOUCH_DOWN       +22.62s	0 (0) 25.60/58.31 (74.38/94.77mm)
 event15  TOUCH_FRAME      +22.62s	
 event15  TOUCH_UP         +22.64s	
 event15  TOUCH_FRAME      +22.64s	
 event15  TOUCH_DOWN       +23.33s	0 (0) 25.60/57.79 (74.38/93.92mm)
 event15  TOUCH_FRAME      +23.33s	
 event15  TOUCH_UP         +23.34s	
 event15  TOUCH_FRAME      +23.34s	
 event15  TOUCH_DOWN       +24.98s	0 (0) 25.60/98.20 (74.38/159.62mm)
 event15  TOUCH_FRAME      +24.98s	
 event15  TOUCH_UP         +25.00s	
 event15  TOUCH_FRAME      +25.00s	
 event15  TOUCH_DOWN       +25.70s	0 (0) 25.60/53.38 (74.38/86.77mm)
 event15  TOUCH_FRAME      +25.70s	
 event15  TOUCH_UP         +25.72s	
 event15  TOUCH_FRAME      +25.72s	
 event15  TOUCH_DOWN       +27.74s	0 (0) 25.60/56.27 (74.38/91.46mm)
 event15  TOUCH_FRAME      +27.74s	
 event15  TOUCH_UP         +27.75s	
 event15  TOUCH_FRAME      +27.75s	
 event15  TOUCH_DOWN       +30.79s	0 (0) 25.60/55.75 (74.38/90.62mm)
 event15  TOUCH_FRAME      +30.79s	
 event15  TOUCH_MOTION     +30.79s	0 (0) 25.60/72.36 (74.38/117.62mm)
 event15  TOUCH_FRAME      +30.79s	
 event15  TOUCH_MOTION     +30.79s	0 (0) 25.60/96.45 (74.38/156.77mm)
 event15  TOUCH_FRAME      +30.79s	
 event15  TOUCH_UP         +30.80s	
 event15  TOUCH_FRAME      +30.80s	
 event15  TOUCH_DOWN       +35.41s	0 (0) 25.60/54.42 (74.38/88.46mm)
 event15  TOUCH_FRAME      +35.41s	
 event15  TOUCH_MOTION     +35.42s	0 (0) 25.60/72.03 (74.38/117.08mm)
 event15  TOUCH_FRAME      +35.42s	
 event15  TOUCH_MOTION     +35.43s	0 (0) 25.60/98.11 (74.38/159.46mm)
 event15  TOUCH_FRAME      +35.43s	
 event15  TOUCH_MOTION     +35.44s	0 (0) 25.60/93.75 (74.38/152.38mm)
 event15  TOUCH_FRAME      +35.44s	
 event15  TOUCH_MOTION     +35.45s	0 (0) 25.60/90.25 (74.38/146.69mm)
 event15  TOUCH_FRAME      +35.45s	
 event15  TOUCH_UP         +35.48s	
 event15  TOUCH_FRAME      +35.48s	
 event15  TOUCH_DOWN       +43.48s	0 (0) 25.60/98.06 (74.38/159.38mm)
 event15  TOUCH_FRAME      +43.48s	
 event15  TOUCH_UP         +43.49s	
 event15  TOUCH_FRAME      +43.49s	
 event15  TOUCH_DOWN       +43.89s	0 (0) 25.60/53.48 (74.38/86.92mm)
 event15  TOUCH_FRAME      +43.89s	
 event15  TOUCH_MOTION     +43.90s	0 (0) 25.60/60.67 (74.38/98.62mm)
 event15  TOUCH_FRAME      +43.90s	
 event15  TOUCH_UP         +43.91s	
 event15  TOUCH_FRAME      +43.91s	
 event15  TOUCH_DOWN       +44.71s	0 (0) 25.60/56.74 (74.38/92.23mm)
 event15  TOUCH_FRAME      +44.71s	
 event15  TOUCH_UP         +44.72s	
 event15  TOUCH_FRAME      +44.72s	
 event15  TOUCH_DOWN       +44.91s	0 (0) 25.60/53.29 (74.38/86.62mm)
 event15  TOUCH_FRAME      +44.91s	
 event15  TOUCH_UP         +44.92s	
 event15  TOUCH_FRAME      +44.92s	
-event0   KEYBOARD_KEY     +45.63s	*** (-1) pressed

 event0   KEYBOARD_KEY     +45.78s	*** (-1) released
-event15  TOUCH_DOWN       +51.69s	0 (0) 25.60/54.00 (74.38/87.77mm)
 event15  TOUCH_FRAME      +51.69s	
 event15  TOUCH_UP         +51.71s	
 event15  TOUCH_FRAME      +51.71s	
 event15  TOUCH_DOWN       +52.10s	0 (0) 25.60/57.08 (74.38/92.77mm)
 event15  TOUCH_FRAME      +52.10s	
 event15  TOUCH_MOTION     +52.11s	0 (0) 25.60/64.03 (74.38/104.08mm)
 event15  TOUCH_FRAME      +52.11s	
 event15  TOUCH_UP         +52.14s	
 event15  TOUCH_FRAME      +52.14s	
-event0   KEYBOARD_KEY     +54.02s	*** (-1) pressed
 event0   KEYBOARD_KEY     +54.88s	*** (-1) released
-event15  TOUCH_DOWN       +55.62s	0 (0) 25.60/56.13 (74.38/91.23mm)
 event15  TOUCH_FRAME      +55.62s	
 event15  TOUCH_UP         +55.64s	
 event15  TOUCH_FRAME      +55.64s	
-event0   KEYBOARD_KEY     +56.19s	*** (-1) pressed
 event0   KEYBOARD_KEY     +56.45s	*** (-1) pressed
^C2017-03-16 / 22:52:33 ♒♒♒  ☺
Comment 1 Peter Hutterer 2017-03-17 01:00:47 UTC
please run evemu-record against event15 and see if the events show up there. This is most likely a hardware problem, we don't generate touches in libinput and merely forward what the hardware gives us.
Comment 2 Ritesh Raj Sarraf 2017-03-17 12:31:12 UTC
(In reply to Peter Hutterer from comment #1)
> please run evemu-record against event15 and see if the events show up there.
> This is most likely a hardware problem, we don't generate touches in
> libinput and merely forward what the hardware gives us.

That is what I suspected too, that it could be a hardware problem. But 2 machines showing similar symptoms got me thinking otherwise.

The best will be to record evemu data on both machines when they trigger.

Please let's continue to keep this open. As soon as I get the trigger, I'll try to extract the data. Thanks.
Comment 3 Peter Hutterer 2017-03-22 05:51:45 UTC
any success?
Comment 4 Ritesh Raj Sarraf 2017-03-22 09:30:17 UTC
(In reply to Peter Hutterer from comment #3)
> any success?

No. I haven't been able to reproduce in the last week. I'm marking it closed. If I get enough data, I'll re-open this bug. Thanks.
Comment 5 Ritesh Raj Sarraf 2017-03-26 11:27:05 UTC
Created attachment 130466 [details]
evemu-record data for touch screen

I got to capture the data, not from the xserver session itself, but over the modesetted terminal. I hope this has useful information in it.
Comment 6 Peter Hutterer 2017-03-27 00:27:46 UTC
ok, this is a bug, but definitely not with libinput. the recording has 63 seconds of events through all 10 slots but without a single x axis value. This looks like a device going crazy, I would suggest this is a hardware issue. There isn't much we can do here, the heuristics to detect this are likely to be tricky. This bugzilla doesn't have a CANTFIX, so I'm using wontfix instead.

CC-ing benjamin in case he's aware of some kernel-level fix to avoid this issue.
Comment 7 Benjamin Tissoires 2017-03-27 08:36:16 UTC
It looks like a HW defect indeed. Just to be sure, could you attach a hid-recorder [1] output of a few touches? (doesn't matter if the bug is exposed or not I think).

[1] project hid-replay http://bentiss.github.io/hid-replay-docs/
Comment 8 Ritesh Raj Sarraf 2017-03-27 08:41:00 UTC
(In reply to Benjamin Tissoires from comment #7)
> It looks like a HW defect indeed. Just to be sure, could you attach a
> hid-recorder [1] output of a few touches? (doesn't matter if the bug is
> exposed or not I think).
> 
> [1] project hid-replay http://bentiss.github.io/hid-replay-docs/

I wouldn't conclude so quick. These are all talking over xHCI BUS, which has shown too many problems under Linux.

I also have Windows 8.1 running on the spare partition, where I have not had any of these errors.

I'll try to capture more data with the mentioned tool. I'm not sure when I can get back because the issue is intermittent.


@Peter: I'm still hoping to capture data from the other machine, which does not have touchscreen at all. I've seen similar (if not identical) behavior there, intermittently. The only common thing among the two is that they're both Haswell family machines.
Comment 9 Ritesh Raj Sarraf 2017-03-27 11:49:34 UTC
Created attachment 130482 [details]
Elan Touchscreen hid data

Luckily, I was able to reproduce it today itself. Please find attached the log details you asked.
Comment 10 Ritesh Raj Sarraf 2017-03-27 11:56:50 UTC
Looking at the Xorg logs, I see repetitive messages for the same input device. Is this expected ?



rrs@learner:~$ grep ELAN .local/share/xorg/Xorg.0.log
[    38.112] (II) config/udev: Adding input device ELAN Touchscreen (/dev/input/event15)
[    38.112] (**) ELAN Touchscreen: Applying InputClass "libinput touchscreen catchall"
[    38.112] (II) Using input driver 'libinput' for 'ELAN Touchscreen'
[    38.112] (**) ELAN Touchscreen: always reports core events
[    38.113] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[    38.113] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[    38.113] (II) XINPUT: Adding extended input device "ELAN Touchscreen" (type: TOUCHSCREEN, id 9)
[    38.113] (**) ELAN Touchscreen: (accel) selected scheme none/0
[    38.113] (**) ELAN Touchscreen: (accel) acceleration factor: 2.000
[    38.113] (**) ELAN Touchscreen: (accel) acceleration threshold: 4
[    38.113] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[    38.113] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[    38.114] (II) config/udev: Adding input device ELAN Touchscreen (/dev/input/mouse1)
[    56.898] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[    56.898] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[   481.416] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[   481.416] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[  1295.273] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[  1295.273] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[  3401.195] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[  3401.195] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[  3402.748] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[  3402.748] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[  3427.944] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[  3427.944] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[  8444.825] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[  8444.825] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 11666.309] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 11666.309] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 14478.226] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 14478.226] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 17175.361] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 17175.361] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 17290.441] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 17290.442] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 19715.230] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 19715.230] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 19883.063] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 19883.063] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 19974.331] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 19974.331] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 19974.546] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 19974.546] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 21107.535] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 21107.535] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
[ 23780.539] (II) SYN_DROPPED event from "ELAN Touchscreen" - some input events have been lost.
[ 24215.982] (II) input device 'ELAN Touchscreen', /dev/input/event15 is tagged by udev as: Touchscreen
[ 24215.982] (II) input device 'ELAN Touchscreen', /dev/input/event15 is a touch device
2017-03-27 / 17:25:13 ♒♒♒  ☺
Comment 11 Benjamin Tissoires 2017-03-27 14:30:38 UTC
The log clearly show a column of touches at coordinate X=967. From time to time we can see your true fingers, but the ghost line is still there. I doubt there is an issue in the USB communication but I strongly believe the FW fails at ignoring a ghost column of touches.

The weird part is that you do not have the same issue with Windows. It could be interesting comparing the USB events from Windows when inserting the driver from the ones we do under Linux. But I don't have high hope on whether it will help fixing the issue.
Comment 12 Ritesh Raj Sarraf 2017-03-27 17:01:17 UTC
(In reply to Benjamin Tissoires from comment #11)
> The log clearly show a column of touches at coordinate X=967. From time to
> time we can see your true fingers, but the ghost line is still there. I
> doubt there is an issue in the USB communication but I strongly believe the
> FW fails at ignoring a ghost column of touches.
> 
> The weird part is that you do not have the same issue with Windows. It could
> be interesting comparing the USB events from Windows when inserting the
> driver from the ones we do under Linux. But I don't have high hope on
> whether it will help fixing the issue.

Thanks Benjamin.

I spent the rest of the day today, running it under Windows. Eventually, after a couple of hours, I was able to reproduce it under Windows 8.1 too.

That led me to check Lenovo Support Forums.

https://support.lenovo.com/in/en/solutions/ht103512
http://laptopmedia.com/news/lenovos-solution-to-the-yoga-ghost-touches-problem/
https://forums.lenovo.com/t5/forums/v3_1/forumtopicpage/board-id/ll06_en/page/10/thread-id/26944


Almost the entire Yoga series seems to suffer from the problem. Lenovo stated in some of the threads that it may be a software problem. But I doubt that. Let's see... I'm going to try a couple of sw fixes, with very less hope.


Thank you for your time in analyzing the logs.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.