Some touchpads' right button doesn't work under I2C mode, need support of clickpads

Bug #1456881 reported by Adam Lee
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
HWE Next
Fix Released
High
Adam Lee
linux (Ubuntu)
Fix Released
High
Adam Lee
Trusty
Fix Released
High
Adam Lee
Utopic
Fix Released
High
Adam Lee

Bug Description

We need to add this support, otherwise some touchpads' right button doesn't work under I2C mode.

commit 015fdaa9f8edd89a456b3331088e1b77ebdad9d0 (patch)
HID: multitouch: add support of clickpads
Touchpads that have only one button are called clickpads and should
be advertised as such by the kernel.

Signed-off-by: Benjamin Tissoires <email address hidden>
Tested-by: Jason Ekstrand <email address hidden>
Signed-off-by: Jiri Kosina <email address hidden>

CVE References

Adam Lee (adam8157)
Changed in hwe-next:
importance: Undecided → High
assignee: nobody → Adam Lee (adam8157)
summary: - Need support of clickpads
+ Some touchpads' right button doesn't work under I2C mode, need support
+ of clickpads
Revision history for this message
Adam Lee (adam8157) wrote :

patch for trusty and utopic has been submitted to kernel-team@. vivid has that commit already.

Adam Lee (adam8157)
Changed in hwe-next:
status: New → In Progress
Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

It seems the following commit in vivid is also needed for the better support for trusty and utopic.

Author: Seth Forshee <email address hidden>
AuthorDate: Fri Mar 20 11:06:52 2015 -0500
Commit: Andy Whitcroft <email address hidden>
CommitDate: Fri Mar 27 10:44:38 2015 +0000

    HID: multitouch: Add support for button type usage

    According to [1], Windows Precision Touchpad devices must supply
    a button type usage in the device capabilities feature report. A
    value of 0 indicates that the device contains a depressible
    button (i.e. it's a click-pad) whereas a value of 1 indicates
    a non-depressible button. Add support for this usage and set
    INPUT_PROP_BUTTONPAD on the touchpad input device whenever a
    depressible button is present.

    [1] https://msdn.microsoft.com/en-us/library/windows/hardware/dn467314(v=vs.85).aspx

    Signed-off-by: Seth Forshee <email address hidden>
    Reviewed-by: Benjamin Tissoires <email address hidden>
    Signed-off-by: Jiri Kosina <email address hidden>

    (cherry picked from commit 2c6e0277e1eab3df5db81c59e408b7b1c14b1b72
     git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git)
    Acked-by: Stefan Bader <email address hidden>
    Acked-by: Chris J Arges <email address hidden>
    Signed-off-by: Andy Whitcroft <email address hidden>

Revision history for this message
Seth Forshee (sforshee) wrote :

On the only sample I have (the xps 13 9343) either patch gets the job done. The reason we have both upstream is that they both were sent to the linux-input list at about the same time, and both got picked up. There _may_ be cases where one works and the other doesn't, but I'm not currently aware of any.

Luis Henriques (henrix)
Changed in linux (Ubuntu Trusty):
status: New → Fix Committed
Luis Henriques (henrix)
Changed in linux (Ubuntu Utopic):
status: New → Fix Committed
Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

We found under some extreme system usage that comment #2 can fix the problem.

Run some application/operation (e.g: Play youtube on background, launch libreoffice for awhile (about 5-10min) or insert USB to copy some files : The touchpad cursor were no function after some operation, sometime it scrolling automatically or keep send press signal.

Without the patch of comment #2, when the issue occurred we also check the touchpad event on ttyl1 by "evtest", we can found the event keeping output without move cursor/click touchpad.

Our observation is the HiDPI platform may have more loading cause this issue and sometimes its also cause xorg crash.

Revision history for this message
Adam Lee (adam8157) wrote :

additional info of #4,
the machine is "Dell XPS 13 (2015) with HiDPI", "HID: multitouch: add support of clickpads" is not enough to fix its problem, also needs "HID: multitouch: Add support for button type usage"

Revision history for this message
Adam Lee (adam8157) wrote :

the other patch has been submitted to kernel-team@

Revision history for this message
Adam Lee (adam8157) wrote :

On Thu, May 28, 2015 at 07:48:23AM -0500, Seth Forshee wrote:
> This doesn't make any sense to me. All of the detection done by this
> patch happens when the device is probed, and once INPUT_PROP_BUTTONPAD
> is set it shouldn't get cleared later due to heavy load. The device is
> defined in the ACPI tables, so it's not going to be vanishing then
> reappearing to be reprobed.
>
> So I'm skeptical that this patch really fixes the problem. Not that I
> think it will do any harm, but I can't understand how it would possibly
> help.
>
> Seth

@Shih-Yuan, please double check your testing? if "HID: multitouch: add support of clickpads" is not sufficient and your problem is fixed by "HID: multitouch: Add support for button type usage".

I'm checking the code at the same time.

Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

Because the hardware has some problem that it will miss some packs of the touchpad events randomly.
It will cause some unpredictable results, but Seth's commit just avoid some situation that will cause the abnormal behavior under the condition of comment #4.

Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

Regarding comment #2, #4 & #8, our QA just still reproduce the problem by Seth's commit today.
Our QA can not reproduce the problem yesterday by using the same patch.
Sorry for any inconvenience.

Revision history for this message
Luis Henriques (henrix) 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-trusty' to 'verification-done-trusty'.

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-trusty
Revision history for this message
Luis Henriques (henrix) 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-utopic' to 'verification-done-utopic'.

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-utopic
Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

I have verified Linux kernel 3.16.0-39.53 and the right button works.

tags: added: verification-done-utopic
removed: verification-needed-utopic
Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

I have verified Linux kernel 3.13.0-54.91 but the right button doesn't work.
In fact, the touchpad doesn't work at all.

tags: added: verification-failed-trusty
removed: verification-needed-trusty
Revision history for this message
Adam Lee (adam8157) wrote :

Quote from Seth, he NAKed the "HID: multitouch: Add support for button type usage"

"If I'm understanding the bug comments it sounds like additional testing
has shown that the patch doesn't actually fix the problem. Based on that
I'm nacking these patches."

Revision history for this message
Adam Lee (adam8157) wrote :

Shih-Yuan Lee (FourDollars), your comment #13 "(3.13.0-54.91) In
fact, the touchpad doesn't work at all" looks like a regression, could
you please double check it? Please compare to the version 3.13.0-53.89.

I also built a kernel with all patches, please check if it works.

My testing kernel(based on3.13.0-53.87):
http://kernel.ubuntu.com/~adamlee/lp1456881_all_patches/
(sorry, pls confirm it's my kernel installed via timestamp or sth. after
you reboot)

Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

@Adam,

I mean Linux kernel 3.13 doesn't support the touchpad of Dell XPS 13 (2015) in I2C mode originally.
It may need more patches to make the touchpad in I2C mode work.

Revision history for this message
Luis Henriques (henrix) wrote :

Comment #13 isn't very clear regarding the behaviour in the 3.13 kernel: do we have a regression in Trusty? Or the touchpad did never worked with Trusty?

Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

The touchpad of Dell XPS 13 (2015) in I2C mode never works with trusty 3.13 kernel.
However the touchpad of Dell XPS 13 (2015) in PS/2 mode does work with trusty 3.13 kernel by default.
I need to use osi_acpi="Windows 2013" to make it function in I2C mode with trusty 3.13 kernel.

Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

The touchpad of Dell XPS 13 (2015) in I2C mode doesn't work at all.
So there is no regression that I can tell.
It doesn't work worse.
It doesn't work better either.
Maybe it does work on some platform, however I don't know.

tags: added: verification-needed-trusty
removed: verification-failed-trusty
Revision history for this message
Adam Lee (adam8157) wrote :

@Shih-Yuan, How about this kernel, which contains all the patches we might need? http://kernel.ubuntu.com/~adamlee/lp1456881_all_patches/

Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

@kengyu:
There is no event for the touchpad of Dell XPS 13 (2015) in I2C mode with trusty-updates and trusty-proposed kernel.
No cursor, no left button, no right button, no tap, just nothing at all.

Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

@Adam,

It still doesn't work by http://kernel.ubuntu.com/~adamlee/lp1456881_all_patches/.
There is no event by evtest at all.

Revision history for this message
Adam Lee (adam8157) wrote :

@Shih-Yuan, it's actually synaptic-i2c-hid dkms needs those patches in
kernel, but only kernel itself is not supposed to work, right? Does that
dkms need all patches in?

Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

synaptic-i2c-hid is created by AceLan.
I am not the original creator.
AceLan may know more details for it.

Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (14.6 KiB)

This bug was fixed in the package linux - 3.16.0-39.53

---------------
linux (3.16.0-39.53) utopic; urgency=low

  [ Luis Henriques ]

  * Release Tracking Bug
    - LP: #1458778

  [ Brad Figg ]

  * hyper-v -- add hid and fb drivers to linux-virtual
    - LP: #1444179

  [ Chris J Arges ]

  * [Config] CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y on ppc64el
    - LP: #1450497

  [ Luis Henriques ]

  * SAUCE: (no-up) trace: fix trace_open_exec() invocation
    - LP: #1453848

  [ Paolo Pisati ]

  * [Config] armhf: GENERIC_CPUFREQ_CPU0=y
    - LP: #1457781

  [ Upstream Kernel Changes ]

  * DT doc: net: cpsw mac-address is optional
    - LP: #1452628
  * net: cpsw: Add missing return value
    - LP: #1452628
  * net: cpsw: header, Add missing include
    - LP: #1452628
  * net: cpsw: Replace pr_err by dev_err
    - LP: #1452628
  * net: cpsw: Add am33xx MACID readout
    - LP: #1452628
  * am33xx: define syscon control module device node
    - LP: #1452628
  * arm: dts: am33xx, Add syscon phandle to cpsw node
    - LP: #1452628
  * x86: kvm: Revert "remove sched notifier for cross-cpu migrations"
    - LP: #1450584
  * x86: vdso: fix pvclock races with task migration
    - LP: #1450584
  * n_tty: Fix read buffer overwrite when no newline
    - LP: #1454202
  * spi: spidev: fix possible arithmetic overflow for multi-transfer
    message
    - LP: #1454202
  * arm64: vdso: fix build error when switching from LE to BE
    - LP: #1454202
  * uas: Do not blacklist ASM1153 disk enclosures
    - LP: #1454202
  * KVM: x86: Fix lost interrupt on irr_pending race
    - LP: #1454202
  * tcp: prevent fetching dst twice in early demux code
    - LP: #1454202
  * ipv6: protect skb->sk accesses from recursive dereference inside the
    stack
    - LP: #1454202
  * tcp: tcp_make_synack() should clear skb->tstamp
    - LP: #1454202
  * usbnet: Fix tx_packets stat for FLAG_MULTI_FRAME drivers
    - LP: #1454202
  * usbnet: Fix tx_bytes statistic running backward in cdc_ncm
    - LP: #1454202
  * bonding: Bonding Overriding Configuration logic restored.
    - LP: #1454202
  * HID: add ALWAYS_POLL quirk for a Logitech 0xc007
    - LP: #1454202
  * PCI/AER: Avoid info leak in __print_tlp_header()
    - LP: #1454202
  * PCI: cpcihp: Add missing curly braces in cpci_configure_slot()
    - LP: #1454202
  * sh_veu: v4l2_dev wasn't set
    - LP: #1454202
  * media: s5p-mfc: fix mmap support for 64bit arch
    - LP: #1454202
  * cpufreq: Schedule work for the first-online CPU on resume
    - LP: #1454202
  * cpuidle: remove state_count field from struct cpuidle_device
    - LP: #1454202
  * cpuidle: ACPI: do not overwrite name and description of C0
    - LP: #1454202
  * ioctx_alloc(): fix vma (and file) leak on failure
    - LP: #1454202
  * drm/i915/vlv: save/restore the power context base reg
    - LP: #1454202
  * drm/i915/chv: Remove Wait for a previous gfx force-off
    - LP: #1454202
  * drm/i915/vlv: remove wait for previous GFX clk disable request
    - LP: #1454202
  * ALSA: hda/realtek - Make more stable to get pin sense for ALC283
    - LP: #1454202
  * ALSA: bebob: fix to processing in big-endian machine for sending cue
    - LP: #1454202
  * be2iscsi: Fix kern...

Changed in linux (Ubuntu Utopic):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (9.3 KiB)

This bug was fixed in the package linux - 3.13.0-54.91

---------------
linux (3.13.0-54.91) trusty; urgency=medium

  [ Luis Henriques ]

  * Release Tracking Bug
    - LP: #1458618

  [ Upstream Kernel Changes ]

  * [3.13-stable only] Revert "gianfar: Carefully free skbs in functions
    called by netpoll."
    - LP: #1454746

linux (3.13.0-54.90) trusty; urgency=low

  [ Luis Henriques ]

  * Release Tracking Bug
    - LP: #1458618

  [ Andy Whitcroft ]

  * [Config] push off linux-lts-{utopic, vivid}-tools-common
    - LP: #1405807

  [ Brad Figg ]

  * hyper-v -- add hid and fb drivers to linux-virtual
    - LP: #1444179

  [ Upstream Kernel Changes ]

  * DT doc: net: cpsw mac-address is optional
    - LP: #1452628
  * net: cpsw: Add missing return value
    - LP: #1452628
  * net: cpsw: header, Add missing include
    - LP: #1452628
  * net: cpsw: Add am33xx MACID readout
    - LP: #1452628
  * am33xx: define syscon control module device node
    - LP: #1452628
  * arm: dts: am33xx, Add syscon phandle to cpsw node
    - LP: #1452628
  * net: cpsw: do not register cpts twice
    - LP: #1452620
  * x86: kvm: Revert "remove sched notifier for cross-cpu migrations"
    - LP: #1450584
  * x86: vdso: fix pvclock races with task migration
    - LP: #1450584
  * n_tty: Fix read buffer overwrite when no newline
    - LP: #1381005, #1454746
  * KVM: x86: Fix lost interrupt on irr_pending race
    - LP: #1454746
  * writeback: add missing INITIAL_JIFFIES init in
    global_update_bandwidth()
    - LP: #1454746
  * nbd: fix possible memory leak
    - LP: #1454746
  * mfd: kempld-core: Fix callback return value check
    - LP: #1454746
  * KVM: nVMX: mask unrestricted_guest if disabled on L0
    - LP: #1454746
  * spi: trigger trace event for message-done before mesg->complete
    - LP: #1454746
  * powerpc/pseries: Little endian fixes for post mobility device tree
    update
    - LP: #1454746
  * net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5}
    - LP: #1454746
  * perf: Fix irq_work 'tail' recursion
    - LP: #1454746
  * arm64: Use the reserved TTBR0 if context switching to the init_mm
    - LP: #1454746
  * selinux: fix sel_write_enforce broken return value
    - LP: #1454746
  * mm: fix anon_vma->degree underflow in anon_vma endless growing
    prevention
    - LP: #1454746
  * mm/memory hotplug: postpone the reset of obsolete pgdat
    - LP: #1454746
  * hfsplus: fix B-tree corruption after insertion at position 0
    - LP: #1454746
  * ARC: SA_SIGINFO ucontext regs off-by-one
    - LP: #1454746
  * writeback: fix possible underflow in write bandwidth calculation
    - LP: #1454746
  * iio: fix drivers that check buffer->scan_mask
    - LP: #1454746
  * iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo
    - LP: #1454746
  * iio: core: Fix double free.
    - LP: #1454746
  * USB: ftdi_sio: Added custom PID for Synapse Wireless product
    - LP: #1454746
  * iwlwifi: dvm: run INIT firmware again upon .start()
    - LP: #1454746
  * USB: keyspan_pda: add new device id
    - LP: #1454746
  * cifs: smb2_clone_range() - exit on unhandled error
    - LP: #1454746
  * cifs: fix use-after-free bug in find_wri...

Read more...

Changed in linux (Ubuntu Trusty):
status: Fix Committed → Fix Released
Adam Lee (adam8157)
Changed in linux (Ubuntu):
status: In Progress → Fix Released
Changed in hwe-next:
status: In Progress → Fix Released
Changed in linux (Ubuntu Trusty):
importance: Undecided → High
Changed in linux (Ubuntu Utopic):
importance: Undecided → High
Changed in linux (Ubuntu Trusty):
assignee: nobody → Adam Lee (adam8157)
Changed in linux (Ubuntu Utopic):
assignee: nobody → Adam Lee (adam8157)
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

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