Bug 104812

Summary: kernel: touchpad jump (libinput 1.9.3) Lenovo R61
Product: Wayland Reporter: Dave <davefreitag>
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED WONTFIX QA Contact:
Severity: normal    
Priority: medium CC: benjamin.tissoires, peter.hutterer
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: evemu-record capture of the event
dmesg output

Description Dave 2018-01-27 18:46:26 UTC
Created attachment 136989 [details]
evemu-record capture of the event

I've noticed this message in my journal logs. Seems to occur intermittently when I'm doing a two-finger scroll on my touch pad.

Journal messages:
Jan 27 12:25:25 localhost.localdomain org.gnome.Shell.desktop[1441]: libinput error: event4  - libinput error: SynPS/2 Synaptics TouchPad: libinput error: kernel bug: Touch jump detected and discarded.
Jan 27 12:25:25 localhost.localdomain org.gnome.Shell.desktop[1441]: See https://wayland.freedesktop.org/libinput/doc/1.9.3/touchpad_jumping_cursor.html for details

Followed the instructions at the site to gather info. (Hope I didn't miss anything)

Machine - Lenovo R61
Touch pad measures 56mm wide x 38mm tall
OS - Fedora 27

# rpm -qa | grep libinput
xorg-x11-drv-libinput-0.26.0-1.fc27.x86_64
libinput-1.9.3-2.fc27.x86_64

# uname -a
Linux localhost.localdomain 4.14.14-300.fc27.x86_64 #1 SMP Fri Jan 19 13:19:54 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ xwayland-pointer:13                     	id=6	[slave  pointer  (2)]
⎜   ↳ xwayland-relative-pointer:13            	id=7	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ xwayland-keyboard:13                    	id=8	[slave  keyboard (3)]

$ xinput list-props 2
Device 'Virtual core pointer':
	Device Enabled (117):	1
	Coordinate Transformation Matrix (119):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

$ xinput list-props 4
Device 'Virtual core XTEST pointer':
	Device Enabled (117):	1
	Coordinate Transformation Matrix (119):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	XTEST Device (236):	1

$ xinput list-props 6
Device 'xwayland-pointer:13':
	Device Enabled (117):	1
	Coordinate Transformation Matrix (119):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	Device Accel Profile (242):	0
	Device Accel Constant Deceleration (243):	1.000000
	Device Accel Adaptive Deceleration (244):	1.000000
	Device Accel Velocity Scaling (245):	10.000000

$ xinput list-props 7
Device 'xwayland-relative-pointer:13':
	Device Enabled (117):	1
	Coordinate Transformation Matrix (119):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	Device Accel Profile (242):	0
	Device Accel Constant Deceleration (243):	1.000000
	Device Accel Adaptive Deceleration (244):	1.000000
	Device Accel Velocity Scaling (245):	10.000000


# cat /sys/class/dmi/id/modalias
dmi:bvnLENOVO:bvr7LET39WW(1.09):bd05/14/2007:svnLENOVO:pn77331CU:pvrThinkPadR61:rvnLENOVO:rn77331CU:rvrNotAvailable:cvnLENOVO:ct10:cvrNotAvailable:

# udevadm info /sys/class/input/event4
P: /devices/platform/i8042/serio1/input/input5/event4
N: input/event4
E: DEVNAME=/dev/input/event4
E: DEVPATH=/devices/platform/i8042/serio1/input/input5/event4
E: ID_BUS=i8042
E: ID_INPUT=1
E: ID_INPUT_HEIGHT_MM=24
E: ID_INPUT_TOUCHPAD=1
E: ID_INPUT_TOUCHPAD_INTEGRATION=internal
E: ID_INPUT_WIDTH_MM=43
E: LIBINPUT_DEVICE_GROUP=11/2/7:isa0060/serio1
E: LIBINPUT_MODEL_SYNAPTICS_SERIAL_TOUCHPAD=1
E: MAJOR=13
E: MINOR=68
E: SUBSYSTEM=input
E: USEC_INITIALIZED=13296045

Attached evemu-record recording (scroll.evemu). Verified that it recreates with evemu-play /dev/input/event4 < scroll.evemu .
Comment 1 Peter Hutterer 2018-02-01 05:02:21 UTC
Attach a dmesg please and the output of hid-record for the device, thanks.
Comment 2 Dave 2018-02-03 20:20:38 UTC
Created attachment 137157 [details]
dmesg output
Comment 3 Dave 2018-02-03 20:34:34 UTC
Dmesg output attached. I tried using hid-recorder against the input device, but it just returns an error.

```
# hid-recorder /dev/input/event4
D: 0
HIDIOCGRDESCSIZE: Invalid argument
Unable to open device: Invalid argument

No events where recorded.
```

Everything I've seen online and in the man pages indicates it should be recording a /dev/hidraw<x> device, but I don't have any hidraw devices anywhere under /dev. Is there something I need to do to enable those devices?
Comment 4 Krasi 2018-02-09 11:08:58 UTC
seems similar to the bug I just reported

https://bugs.freedesktop.org/show_bug.cgi?id=105022
Comment 5 Peter Hutterer 2018-03-19 04:42:14 UTC
benjamin, any comments?
Comment 6 Benjamin Tissoires 2018-03-19 08:16:16 UTC
(In reply to Dave from comment #3)
> Dmesg output attached. I tried using hid-recorder against the input device,
> but it just returns an error.
> 
> ```
> # hid-recorder /dev/input/event4
> D: 0
> HIDIOCGRDESCSIZE: Invalid argument
> Unable to open device: Invalid argument
> 
> No events where recorded.
> ```
> 
> Everything I've seen online and in the man pages indicates it should be
> recording a /dev/hidraw<x> device, but I don't have any hidraw devices
> anywhere under /dev. Is there something I need to do to enable those devices?

Well, your touchpad is using PS/2 so no it's normal you do not have any hidraw node. The dmesg shows that your touchpad is ps2 only, so there won't be much we can do in the kernel if the evemu-record. Peter if you can pinpoint where the jump happens in the evemu-file I might be able to tell if if this is fixable in the kernel or not.
Comment 7 Peter Hutterer 2018-03-20 04:51:32 UTC
sorry, should've checked myself first. Jump happens on single-finger to double-finger change, see 

E: 0.703993 0003 0000 2457      # EV_ABS / ABS_X                2457
E: 0.703993 0003 0001 2527      # EV_ABS / ABS_Y                2527
E: 0.703993 0003 001c 0005      # EV_ABS / ABS_TOOL_WIDTH       5
E: 0.703993 0001 0145 0000      # EV_KEY / BTN_TOOL_FINGER      0
E: 0.703993 0001 014d 0001      # EV_KEY / BTN_TOOL_DOUBLETAP   1
E: 0.703993 0000 0000 0000      # ------------ SYN_REPORT (0) ---------- +10ms
E: 0.716439 0003 0000 2525      # EV_ABS / ABS_X                2525
E: 0.716439 0003 0001 5159      # EV_ABS / ABS_Y                5159
E: 0.716439 0003 001c 0010      # EV_ABS / ABS_TOOL_WIDTH       10
E: 0.716439 0001 0145 0001      # EV_KEY / BTN_TOOL_FINGER      1
E: 0.716439 0001 014d 0000      # EV_KEY / BTN_TOOL_DOUBLETAP   0
E: 0.716439 0000 0000 0000      # ------------ SYN_REPORT (0) ---------- +13ms
E: 0.729451 0003 0000 2639      # EV_ABS / ABS_X                2639
E: 0.729451 0003 0001 5132      # EV_ABS / ABS_Y                5132
E: 0.729451 0003 001c 0008      # EV_ABS / ABS_TOOL_WIDTH       8
E: 0.729451 0000 0000 0000      # ------------ SYN_REPORT (0) ---------- +13ms

Needs an axis range fix too, still using the traditional made-up synaptics ranges and 5132 is quite a bit out of that...

Anyway, I noticed this is a touchpad from 2007. We have some code in place to ignore jumps on finger count changes and that should/may work with this touchpad but tbh, I don't have any spare time to invest in hw that's 10 years old.

Given that we notice the jump and discard it, the worst bit right now is the error message, right? So I'll just do the jedi-wave, tell you this is not the error message you're looking for and close this as WONTFIX. Sorry.

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.