← Back to team overview

kernel-packages team mailing list archive

[Bug 1245328] Re: Synaptics kernel driver does not report finger width information, breaking usermode driver's palm detection

 

Ah, I see now that there are several points at which it could return
early and not reach the ABS_TOOL_WIDTH code.

I tried out your little patch to force the width to be reported and
captured evtest output during a session of normal computer use. First, I
noticed that still the width was not always reported, though it seemed
to be reported most often when I brushed my palm against the pad.
Secondly, I wanted to test the claim that it is not meaningful to report
pressure and width simultaneously so I parsed out the (width, pressure)
pairs from evtest and plotted them. While there is a positive
correlation between the two, it is definitely possible to have low
pressure/high width touches and vice versa.

Here are my data if you are curious:
https://gist.github.com/silverhammermba/43abb0fde7b17d557d2b

>From what I've read about the kernel multitouch protocol, the claim from
your previous link that "ABS_MT_PRESSURE and ABS_MT_TOUCH_MAJOR are
normally mutually exclusive" only makes sense if the tool width (i.e.
ABS_MT_WIDTH_MAJOR) is being reported. In that case the pressure should
be equivalent to the ratio of TOUCH_MAJOR to WIDTH_MAJOR and it would
not make sense for a device to report both. Thus there are two
acceptable situations for a device that claims to report tool width:
report tool width and pressure or report tool width and touch width.

The second problem - the palm detection code not working without width -
seems like it could be more generally useful if there are touchpads that
only report pressure. However I don't see that as the issue here since
it seems clear that my touchpad *can* report width.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1245328

Title:
  Synaptics kernel driver does not report finger width information,
  breaking usermode driver's palm detection

Status in “linux” package in Ubuntu:
  Confirmed

Bug description:
  While doing some work on the Xorg synaptics driver, I noticed that we
  never actually detect palm blocking even after running synclient
  PalmDetect=1. Digging in a bit, the driver claims in its capability
  bits that it should be sending ABS_TOOL_WIDTH records, but according
  to evtest(1), the driver never sends these advertised records to
  userspace. As a result, the Xorg synaptics driver never sees
  hw->fingerWidth become non-zero in SynapticsDetectFinger and never
  detects that I've mashed my palm into the large touchpad on this
  machine.

  Expected:

  Kill X. Run evtest(1). Select touchpad device. Move touchpad. See
  ABS_TOOL_WIDTH records in the event stream.

  Actual:

  No ABS_TOOL_WIDTH records even though the device claims to support
  them in its capability bits.

  ProblemType: Bug
  DistroRelease: Ubuntu 13.10
  Package: linux-image-3.11.0-12-generic 3.11.0-12.19 [modified: boot/vmlinuz-3.11.0-12-generic]
  ProcVersionSignature: Ubuntu 3.11.0-12.19-generic 3.11.3
  Uname: Linux 3.11.0-12-generic x86_64
  ApportVersion: 2.12.5-0ubuntu2.1
  Architecture: amd64
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  dancol     2258 F.... pulseaudio
  Date: Sun Oct 27 21:43:01 2013
  HibernationDevice: RESUME=UUID=7da7377a-42c7-49f8-a060-8dee466c61fd
  InstallationDate: Installed on 2013-10-23 (4 days ago)
  InstallationMedia: Ubuntu 13.10 "Saucy Salamander" - Release amd64 (20131016.1)
  MachineType: LENOVO 34601F5
  MarkForUpload: True
  ProcFB: 0 inteldrmfb
  ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-3.11.0-12-generic root=/dev/mapper/ubuntu--vg-root ro quiet splash vt.handoff=7
  RelatedPackageVersions:
   linux-restricted-modules-3.11.0-12-generic N/A
   linux-backports-modules-3.11.0-12-generic  N/A
   linux-firmware                             1.116
  SourcePackage: linux
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 04/29/2013
  dmi.bios.vendor: LENOVO
  dmi.bios.version: G6ET96WW (2.56 )
  dmi.board.asset.tag: Not Available
  dmi.board.name: 34601F5
  dmi.board.vendor: LENOVO
  dmi.board.version: Not Defined
  dmi.chassis.asset.tag: 2059198
  dmi.chassis.type: 10
  dmi.chassis.vendor: LENOVO
  dmi.chassis.version: Not Available
  dmi.modalias: dmi:bvnLENOVO:bvrG6ET96WW(2.56):bd04/29/2013:svnLENOVO:pn34601F5:pvrThinkPadX1Carbon:rvnLENOVO:rn34601F5:rvrNotDefined:cvnLENOVO:ct10:cvrNotAvailable:
  dmi.product.name: 34601F5
  dmi.product.version: ThinkPad X1 Carbon
  dmi.sys.vendor: LENOVO

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1245328/+subscriptions


References