Bug 95231

Summary: Thinkpad touchpad edge e530 too sensitive
Product: Wayland Reporter: Christoph Larndorfer <christoph.larndorfer>
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: peter.hutterer
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Output of xinput --list-props
output of evemu-describe after applying evdev rules
Output of evemußdescribe after udevadm hwdb --update and udevadm control --reload
0001-udev-the-lenovo-E530-has-a-wobbly-touchpad.patch

Description Christoph Larndorfer 2016-05-01 20:27:47 UTC
Created attachment 123397 [details]
Output of xinput --list-props

I am using fedora 23 and had to switch back to the synaptics driver as libinput is much too sensitive for my thinkpad edge e530 synaptics touchpad. Clicks and taps are very inaccurate with the touchpad. Synaptics driver is also too sensitve, however, here I have the possibility to manually increase the noise cancellation and finger pressure levels with xinput, which does not give me these options when using the libinput driver.

It would be great if the noise cancellation settings and finger pressure settings are increased in libinput for this touchpad.

Attached the output from xinput after installing the synaptics driver with settings that work well with this model:
Comment 1 Peter Hutterer 2016-05-05 04:03:22 UTC
please run the touchpad-edge-detector (part of libevdev) and post the output here
Comment 2 Christoph Larndorfer 2016-05-05 20:12:29 UTC
(In reply to Peter Hutterer from comment #1)
> please run the touchpad-edge-detector (part of libevdev) and post the output
> here

Here is the output of the touchpad-edge-detector:

sudo touchpad-edge-detector /dev/input/event5
Touchpad SynPS/2 Synaptics TouchPad on /dev/input/event5
Move one finger around the touchpad to detect the actual edges
Kernel says:	x [1240..5702], y [1102..4750]
Touchpad sends:	x [1241..5703], y [1105..4820] |^C

Touchpad size as listed by the kernel: 87x54mm
Calculate resolution as:
	x axis: 4462/<width in mm>
	y axis: 3648/<height in mm>

Suggested udev rule:
# <Laptop model description goes here>
evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvnLENOVO:bvrH0ET96WW(2.56):bd06/12/2015:svnLENOVO:pn3259CTO:pvrThinkPadEdgeE530:rvnLENOVO:rn3259CTO:rvrNotAvailable:cvnLENOVO:ct10:cvrNotAvailable:*
 EVDEV_ABS_00=1241:5703:<x resolution>
 EVDEV_ABS_01=1105:4820:<y resolution>
 EVDEV_ABS_35=1241:5703:<x resolution>
 EVDEV_ABS_36=1105:4820:<y resolution>
Comment 3 Peter Hutterer 2016-05-05 22:53:09 UTC
(In reply to Christoph Larndorfer from comment #2)
> Touchpad size as listed by the kernel: 87x54mm

is this correct?
Comment 4 Christoph Larndorfer 2016-05-06 20:30:52 UTC
(In reply to Peter Hutterer from comment #3)
> (In reply to Christoph Larndorfer from comment #2)
> > Touchpad size as listed by the kernel: 87x54mm
> 
> is this correct?

I measured the touchpad with a ruler to be 92x60mm, however, I guess there are about 2mm margin where it is not sensitive (hard to say accurately). So The size is not far off. 

I am not sure if inaccurate size would cause the over-sensitivity, as I need to increase noise suppression and finger (pressure) in the synaptics settings to make it work nicer...
Comment 5 Peter Hutterer 2016-05-09 00:26:18 UTC
Look at the comment in /lib/udev/hwdb.d/60-evdev.hwdb for instructions and
please try out this ruleset here. You can verify with evemu-describe to make
sure the new axis ranges and resolutions are set.

# Lenovo E530
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO:pn*ThinkPadEdgeE530*
 EVDEV_ABS_00=1241:5703:49
 EVDEV_ABS_01=1105:4820:68
 EVDEV_ABS_35=1241:5703:49
 EVDEV_ABS_36=1105:4820:68

Once set you can restart X and libinput will pick up the new resolutions. Lemme know if that changes anything
Comment 6 Christoph Larndorfer 2016-05-09 07:28:08 UTC
Created attachment 123562 [details]
output of evemu-describe after applying evdev rules
Comment 7 Christoph Larndorfer 2016-05-09 07:30:21 UTC
I guess it did something, but I cannot verify the output of evemu-describe (I don't know what to look out for).

It would be great to know what I can tweak here, in order to improve the touchpad behaviour with libinput, but I guess I just need to read up on this evdev rules file.

The pointer still is a bit too sensitive in my mind and I am not sure if the felt improvement is not just a placebo...
Comment 8 Peter Hutterer 2016-05-09 07:35:23 UTC
ok, something didn't work, the output is still the same. make sure you run sudo udev hwdb --update, maybe reboot as well just in case.
Comment 9 Christoph Larndorfer 2016-05-14 13:46:55 UTC
Hi, sorry for not coming back earlier. I restarted and the output of evemu-describe still looks the same. I don't have a "udev" command in the shell, but udevadm.
Comment 10 Christoph Larndorfer 2016-05-14 13:57:24 UTC
Created attachment 123749 [details]
Output of evemußdescribe after udevadm hwdb --update and udevadm control --reload

Googled a bit and found this one, not sure if really related, however, helped me to update the hwdb:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1361338 

If I call "man udevadm" on my machine, it does not show me that I could call it with "hwdb" as argument... but that's another story. Now the evemu-describe def. changed to the new values! But still, the pointer is a bit too sensitive (just keeping my finger still on the touchpad makes it move around ever so slightly).

I guess we are on the way to resolving this though...
Comment 11 Peter Hutterer 2016-05-16 00:26:42 UTC
yeah, sorry, udevadm (and thus udevadm hwdb --update) is the right command, but updating the hwdb still requires triggering the rule on the specific device. Easiest is rebooting, but a sudo udevadm trigger /dev/input/eventX works too.
The updated ranges are now on the device, so that's a good sign. I get that fix into systemd upstream.
Comment 12 Peter Hutterer 2016-05-16 00:27:53 UTC
Created attachment 123764 [details] [review]
0001-udev-the-lenovo-E530-has-a-wobbly-touchpad.patch

Try this libinput patch please, same udevadm hwdb dance as before and the udevadm info output should show the new property being applied.
Comment 13 Peter Hutterer 2016-05-16 00:35:37 UTC
(In reply to Christoph Larndorfer from comment #10)
> If I call "man udevadm" on my machine, it does not show me that I could call
> it with "hwdb" as argument... but that's another story. 

looked at this in the upstream repo: as of systemd 219 udevadm-hwdb is now systemd-hwdb and "but all documentation is dropped to encourage use of the new
tool instead." (systemd commit 65eb4378c3e1de)
Comment 14 Peter Hutterer 2016-05-25 04:42:01 UTC
ping? (see comment 12)
Comment 15 Peter Hutterer 2016-06-17 01:03:36 UTC
commit 27078b2667def4ecde1f47b8258d510a576c8bb1
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jun 3 11:19:23 2016 +1000

    touchpad: restore the hysteresis by default

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.