Add proper palm detection support for MS Precision Touchpad

Bug #1593124 reported by Phidias on 2016-06-16
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
HWE Next
Undecided
Phidias
Xenial
Undecided
Phidias
Linux
Unknown
Unknown
linux (Ubuntu)
Undecided
Phidias
Nominated for Vivid by Phidias
Nominated for Yakkety by Anthony Wong
Xenial
Undecided
Unassigned

Bug Description

Sometimes touchpad doesn't work properly after palm is rejected. The pointer either jumping around (described on bugzilla[1]) or doesn't move at all (in our cases).

This problem is introduced with commit: 25a84db15b3f3a24d3ea7d2baf90693bcff34b0c (HID: multitouch: enable palm rejection if device implements confidence usage), by reverting it the touchpad can work properly.

We also contacted with Synaptics, and they provided a workaround to fix this issue. Not sure if the workaround will be upstreamed and needs to keep co-working with them.

Commit 25a84db applies to Xenial and Yakkety so only these two release were affected.

The maintainer has provided a patch set to fix this issue and add proper palm detection support and the patch set has been merged. We also need to introduce this feature to Vivid at OEM's demands.

[1]: https://bugzilla.kernel.org/show_bug.cgi?id=112791

Phidias (phidias-chiang) on 2016-06-16
tags: added: originate-from-1580427 somerville

This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:

apport-collect 1593124

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
Changed in hwe-next:
assignee: nobody → Phidias (phidias-chiang)
Changed in linux (Ubuntu):
status: Incomplete → Confirmed
Changed in hwe-next:
status: New → Confirmed
Phidias (phidias-chiang) on 2016-07-06
no longer affects: hwe-next/yakkety
tags: added: vivid
Phidias (phidias-chiang) on 2016-07-06
summary: - Palm rejection for MS Precision Touchpad causes touchpad unusable
+ Add proper palm detection support for MS Precision Touchpad
Phidias (phidias-chiang) on 2016-07-06
description: updated
Changed in linux (Ubuntu Xenial):
status: New → Fix Committed
Launchpad Janitor (janitor) wrote :
Download full text (14.6 KiB)

This bug was fixed in the package linux - 4.4.0-33.52

---------------
linux (4.4.0-33.52) xenial; urgency=low

  [ Seth Forshee ]

  * Release Tracking Bug
    - LP: #1605709

  * [regression] NFS client: access problems after updating to kernel
    4.4.0-31-generic (LP: #1603719)
    - SAUCE: (namespace) Bypass sget() capability check for nfs

linux (4.4.0-32.51) xenial; urgency=low

  [ Seth Forshee ]

  * Release Tracking Bug
    - LP: #1604443

  * thinkpad yoga 260 wacom touchscreen not working (LP: #1603975)
    - HID: wacom: break out parsing of device and registering of input
    - HID: wacom: Initialize hid_data.inputmode to -1
    - HID: wacom: Support switching from vendor-defined device mode on G9 and G11

  * changelog: add CVEs as first class citizens (LP: #1604344)
    - use CVE numbers in changelog

  * [Xenial] Include Huawei PCIe SSD hio kernel driver (LP: #1603483)
    - SAUCE: import Huawei ES3000_V2 (2.1.0.23)
    - SAUCE: hio: bio_endio() no longer takes errors arg
    - SAUCE: hio: blk_queue make_request_fn now returns a blk_qc_t
    - SAUCE: hio: use alloc_cpumask_var to avoid -Wframe-larger-than
    - SAUCE: hio: fix mask maybe-uninitialized warning
    - [config] enable CONFIG_HIO (Huawei ES3000_V2 PCIe SSD driver)
    - SAUCE: hio: Makefile and Kconfig

  * CVE-2016-5243 (LP: #1589036)
    - tipc: fix an infoleak in tipc_nl_compat_link_dump
    - tipc: fix nl compat regression for link statistics

  * CVE-2016-4470
    - KEYS: potential uninitialized variable

  * integer overflow in xt_alloc_table_info (LP: #1555353)
    - netfilter: x_tables: check for size overflow

  * CVE-2016-3135:
    - Revert "UBUNTU: SAUCE: (noup) netfilter: x_tables: check for size overflow"

  * CVE-2016-4440 (LP: #1584192)
    - kvm:vmx: more complete state update on APICv on/off

  * the system hangs in the dma driver when reboot or shutdown on a baytrail-m
    laptop (LP: #1602579)
    - dmaengine: dw: platform: power on device on shutdown
    - ACPI / LPSS: override power state for LPSS DMA device

  * Add proper palm detection support for MS Precision Touchpad (LP: #1593124)
    - Revert "HID: multitouch: enable palm rejection if device implements
      confidence usage"
    - HID: multitouch: enable palm rejection for Windows Precision Touchpad

  * Add support for Intel 8265 Bluetooth ([8087:0A2B]) (LP: #1599068)
    - Bluetooth: Add support for Intel Bluetooth device 8265 [8087:0a2b]

  * CVE-2016-4794 (LP: #1581871)
    - percpu: fix synchronization between chunk->map_extend_work and chunk
      destruction
    - percpu: fix synchronization between synchronous map extension and chunk
      destruction

  * Xenial update to v4.4.15 stable release (LP: #1601952)
    - net_sched: fix pfifo_head_drop behavior vs backlog
    - net: Don't forget pr_fmt on net_dbg_ratelimited for CONFIG_DYNAMIC_DEBUG
    - sit: correct IP protocol used in ipip6_err
    - esp: Fix ESN generation under UDP encapsulation
    - netem: fix a use after free
    - ipmr/ip6mr: Initialize the last assert time of mfc entries.
    - Bridge: Fix ipv6 mc snooping if bridge has no ipv6 address
    - sock_diag: do not broadcast raw socket destruction
    - bpf, perf...

Changed in linux (Ubuntu):
status: Confirmed → Fix Released
Seth Forshee (sforshee) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-xenial' to 'verification-done-xenial'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-xenial
pauljohn32 (pauljohn) wrote :

I installed kernel from proposed today:

$ uname -a
Linux delllap-16 4.4.0-34-generic #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

On Dell Precision 5510, I don't see any improvement while using the synaptics client. I especially still have the symptom that the cursor flies to the bottom of the screen in a seemingly random way.

The "disable while typing" feature is the only thing that really helps, but if you use that, then you go crazy because, when you stop typing, you have to stop and wait a second or two in order to use the touchpad again.

I can't find any settings for the Palm features that make a noticeable difference. The synaptics documentation is pretty vague on the numbers and their meaning, but i've tried all kinds of variations like

$ synclient -l | grep Palm
    PalmDetect = 1
    PalmMinWidth = 15
    PalmMinZ = 10

$ synclient -l | grep Palm
    PalmDetect = 1
    PalmMinWidth = 5
    PalmMinZ = 50

It looks like this latter one means any touch wider than a finger counts as a palm, but I still see the cursor thrashing about wildly while I move my lower hand and brush the keyboard.

The most horrible element in this is that, if I'm typing while looking at a book, sometimes the cursor will jump to a new position, a section will get highlighted, and then it is obliterated by the next thing I type.

I will try with libinput, but I don't really want to because I have to give up a lot of features I depend on from day to day. Several tapping and coasting settings have not been implemented there yet.

Phidias (phidias-chiang) wrote :

@pauljohn:

I also tested on Precision 5510 with 4.4.0-34 after re-installing the system, can't reproduce the issue. I also set PalmDetect to 1 (default is 0), can't reproduce the issue either.

Don't think BIOS version affects this issue but can you provide the information with `sudo dmidecode -s bios-version`? FYI we're using 01.02.10.

pauljohn32 (pauljohn) wrote :

@Phidias

I withdraw my complaint. I updated the bios and installed a new OS partition and this new kernel works much better now. I fear that I had tried to adjust miscellaneous settings so much in the past 2 months that my fixes were blocking the beneficial changes. I had put a blacklist line on i2c_hid before and I suspect that was preventing the change from taking effect.

$ sudo dmidecode -s bios-version
[sudo] password for pauljohn:
01.02.10

 I stopped using synclient entirely, am using libinput with only a minor change in X11/xorg.conf.d, just the very last line of this:

$ cat /etc/X11/xorg.conf.d/90-libinput.conf
# Match on all types of devices but tablet devices and joysticks
Section "InputClass"
        Identifier "libinput pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "MyTouchpad"
        MatchIsTouchpad "on"
        Driver "libinput"
        Option "Tapping" "on"
EndSection

I no longer see the frequent accidental select and delete behavior I was seeing in editors like Emacs and LyX.

The only problem I see now is that, while using Gimp, the cursor fairly often flies to the bottom and points at the desktop panel.

Seth Forshee (sforshee) wrote :

@Phidias: Do I understand correctly that you tested the proposed kernel and it fixes the problem for you? If so could you please update the tags to indicate that verification has been done? Thanks!

Phidias (phidias-chiang) wrote :

@Seth,

I was waiting for pauljohn's feedback and now it looks actually fix the problem so I'll change it to done, thanks :)

tags: added: verification-done-xenial
removed: verification-needed-xenial
Launchpad Janitor (janitor) wrote :
Download full text (15.0 KiB)

This bug was fixed in the package linux - 4.4.0-34.53

---------------
linux (4.4.0-34.53) xenial; urgency=low

  [ Seth Forshee ]

  * Release Tracking Bug
    - LP: #1606960

  * [APL][SAUCE] Slow system response time due to a monitor bug (LP: #1606147)
    - x86/cpu/intel: Introduce macros for Intel family numbers
    - SAUCE: x86/cpu: Add workaround for MONITOR instruction erratum on Goldmont
      based CPUs

linux (4.4.0-33.52) xenial; urgency=low

  [ Seth Forshee ]

  * Release Tracking Bug
    - LP: #1605709

  * [regression] NFS client: access problems after updating to kernel
    4.4.0-31-generic (LP: #1603719)
    - SAUCE: (namespace) Bypass sget() capability check for nfs

linux (4.4.0-32.51) xenial; urgency=low

  [ Seth Forshee ]

  * Release Tracking Bug
    - LP: #1604443

  * thinkpad yoga 260 wacom touchscreen not working (LP: #1603975)
    - HID: wacom: break out parsing of device and registering of input
    - HID: wacom: Initialize hid_data.inputmode to -1
    - HID: wacom: Support switching from vendor-defined device mode on G9 and G11

  * changelog: add CVEs as first class citizens (LP: #1604344)
    - use CVE numbers in changelog

  * [Xenial] Include Huawei PCIe SSD hio kernel driver (LP: #1603483)
    - SAUCE: import Huawei ES3000_V2 (2.1.0.23)
    - SAUCE: hio: bio_endio() no longer takes errors arg
    - SAUCE: hio: blk_queue make_request_fn now returns a blk_qc_t
    - SAUCE: hio: use alloc_cpumask_var to avoid -Wframe-larger-than
    - SAUCE: hio: fix mask maybe-uninitialized warning
    - [config] enable CONFIG_HIO (Huawei ES3000_V2 PCIe SSD driver)
    - SAUCE: hio: Makefile and Kconfig

  * CVE-2016-5243 (LP: #1589036)
    - tipc: fix an infoleak in tipc_nl_compat_link_dump
    - tipc: fix nl compat regression for link statistics

  * CVE-2016-4470
    - KEYS: potential uninitialized variable

  * integer overflow in xt_alloc_table_info (LP: #1555353)
    - netfilter: x_tables: check for size overflow

  * CVE-2016-3135:
    - Revert "UBUNTU: SAUCE: (noup) netfilter: x_tables: check for size overflow"

  * CVE-2016-4440 (LP: #1584192)
    - kvm:vmx: more complete state update on APICv on/off

  * the system hangs in the dma driver when reboot or shutdown on a baytrail-m
    laptop (LP: #1602579)
    - dmaengine: dw: platform: power on device on shutdown
    - ACPI / LPSS: override power state for LPSS DMA device

  * Add proper palm detection support for MS Precision Touchpad (LP: #1593124)
    - Revert "HID: multitouch: enable palm rejection if device implements
      confidence usage"
    - HID: multitouch: enable palm rejection for Windows Precision Touchpad

  * Add support for Intel 8265 Bluetooth ([8087:0A2B]) (LP: #1599068)
    - Bluetooth: Add support for Intel Bluetooth device 8265 [8087:0a2b]

  * CVE-2016-4794 (LP: #1581871)
    - percpu: fix synchronization between chunk->map_extend_work and chunk
      destruction
    - percpu: fix synchronization between synchronous map extension and chunk
      destruction

  * Xenial update to v4.4.15 stable release (LP: #1601952)
    - net_sched: fix pfifo_head_drop behavior vs backlog
    - net: Don't forget pr_fmt on net_dbg_ratelimited for CONFIG_DYNAMIC...

Changed in linux (Ubuntu Xenial):
status: Fix Committed → 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.