Lenovo Yoga 11S touchpad is jittery

Bug #1749689 reported by Daniel van Vugt on 2018-02-15
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
libinput
Fix Released
Medium
libinput (Ubuntu)
Low
Unassigned

Bug Description

Lenovo Yoga 11S touchpad is jittery. The cursor moves a little even when I try to keep my finger still.

This is noticeable after hysteresis has turned off, but libinput hysteresis was definitely not helping since it made the touchpad unusably numb and unresponsive.

The same jitter happens with the synaptics driver if I turn off hysteresis there. Although synaptics with hysteresis provides a nice experience... seems to be a dramatically lower hysteresis threshold.

ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: libinput10 1.9.4-2ubuntu1
ProcVersionSignature: Ubuntu 4.13.0-32.35-generic 4.13.13
Uname: Linux 4.13.0-32-generic x86_64
ApportVersion: 2.20.8-0ubuntu10
Architecture: amd64
BootLog: Error: [Errno 13] Permission denied: '/var/log/boot.log'
Date: Thu Feb 15 19:45:27 2018
DistUpgraded: Fresh install
DistroCodename: bionic
DistroVariant: ubuntu
GraphicsCard:
 Intel Corporation Device [8086:0a1e] (rev 0b) (prog-if 00 [VGA controller])
   Subsystem: Lenovo Device [17aa:3978]
InstallationDate: Installed on 2018-02-14 (0 days ago)
InstallationMedia: Ubuntu 18.04 LTS "Bionic Beaver" - Alpha amd64 (20180206)
MachineType: LENOVO 20246
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.13.0-32-generic.efi.signed root=UUID=62a18c6e-1b14-489b-9fda-b9a70ac54dba ro quiet splash vt.handoff=1
SourcePackage: libinput
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 10/08/2013
dmi.bios.vendor: LENOVO
dmi.bios.version: 8FCN36WW(V1.03)
dmi.board.asset.tag: No Asset Tag
dmi.board.name: Yoga2
dmi.board.vendor: LENOVO
dmi.board.version: 31900003STD
dmi.chassis.asset.tag: No Asset Tag
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.version: Lenovo IdeaPad Yoga 11S
dmi.modalias: dmi:bvnLENOVO:bvr8FCN36WW(V1.03):bd10/08/2013:svnLENOVO:pn20246:pvrLenovoIdeaPadYoga11S:rvnLENOVO:rnYoga2:rvr31900003STD:cvnLENOVO:ct10:cvrLenovoIdeaPadYoga11S:
dmi.product.family: IDEAPAD
dmi.product.name: 20246
dmi.product.version: Lenovo IdeaPad Yoga 11S
dmi.sys.vendor: LENOVO
version.compiz: compiz N/A
version.libdrm2: libdrm2 2.4.89-1
version.libgl1-mesa-dri: libgl1-mesa-dri 17.3.3-0ubuntu1
version.libgl1-mesa-glx: libgl1-mesa-glx 17.3.3-0ubuntu1
version.xserver-xorg-core: xserver-xorg-core 2:1.19.6-1ubuntu1
version.xserver-xorg-input-evdev: xserver-xorg-input-evdev N/A
version.xserver-xorg-video-ati: xserver-xorg-video-ati 1:7.10.0-1
version.xserver-xorg-video-intel: xserver-xorg-video-intel 2:2.99.917+git20171229-1
version.xserver-xorg-video-nouveau: xserver-xorg-video-nouveau 1:1.0.15-2

Daniel van Vugt (vanvugt) wrote :
Changed in libinput (Ubuntu):
importance: Undecided → Low
status: New → Triaged
Changed in libinput:
importance: Unknown → Medium
status: Unknown → Confirmed
Changed in libinput:
status: Confirmed → Fix Released
Daniel van Vugt (vanvugt) wrote :

^^^
I think libinput 1.11.0 or 1.10.3 will contain the fix.

Daniel van Vugt (vanvugt) wrote :

Fixed in libinput master. Not sure when the fix will be released...

commit 1523d8bb2e066bec297f7a03ce4a0d8cada8f383
Author: Peter Hutterer <email address hidden>
Date: Mon Mar 5 13:17:43 2018 +1000

    Extract and reset the abs fuzz value for the x/y axes

    The kernel fuzz handling is buggy, especially when we want to rely on the fuzz
    value for our hysteresis. But since this is a hw property and (at least
    sometimes) set by the driver, we can't make this a pure libinput hwdb set
    either.

    So our workaround is:
    * extract the (non-zero) fuzz into a udev property so we don't lose it
    * set the fuzz to 0 to disable the in-kernel hysteresis
    * overwrite our internal absinfo with the property fuzz

    This way we get to use the hw-specified fuzz without having the kernel muck
    around with it. We also get to use the EVDEV_ABS_ values in 60-evdev.hwdb to
    override a driver-set fuzz.

    Two drawbacks:
    - we're resetting the kernel fuzz to 0, this affects any other users of the
      device node. That's probably a minor impact only.
    - we can only save this in a udev property there's a risk of this information
      getting lost when playing around with udev rules. That too should be a minor
      issue.

    https://bugs.freedesktop.org/show_bug.cgi?id=105303

    Signed-off-by: Peter Hutterer <email address hidden>

commit 1b64888a2248af2a287365598cf520e4e2be33fd
Author: Peter Hutterer <email address hidden>
Date: Fri Feb 23 11:44:23 2018 +1000

    touchpad: enable hysteresis based on a 0 fuzz value

    If the fuzz is 0, assume we don't need hysteresis and use the wobble detection
    code instead. If the fuzz is non-zero, enable it by default.

    Signed-off-by: Peter Hutterer <email address hidden>

Changed in libinput (Ubuntu):
status: Triaged → In Progress
Simon (simsamsom) wrote :

This is fixed for me in the latest set up 18.04 updates. It's wonderful.

Daniel van Vugt (vanvugt) wrote :
Changed in libinput (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.