Touch screen driver clicks at wrong location

Bug #573006 reported by nh2
62
This bug affects 9 people
Affects Status Importance Assigned to Milestone
Open Input Framework
Invalid
Undecided
Chase Douglas
xserver-xorg-input-evdev (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

Freeze Exception
-------------------
Some input devices provide information on proximity. For the X evdev module, X events are sent only while the device is in proximity. However, the kernel may send updates on the location of interaction while the device is not in proximity. One example is when a touch is lightly in contact with a resistive touchscreen. The kernel is sending coordinates, but X evdev doesn't pass them on until the kernel says the interaction has passed a pressure threshold and is now in good contact with the screen.

When the device goes into proximity, the last X and Y values at any time must be used. These values may be sent in the same packet as the in proximity data, or the values may have been sent while out of proximity. The change here checks for each valuator value if it has been set in the current packet along with the proximity change. If not, then it checks if there was a value sent while out of proximity. This ensures that each value is correctly handled, whereas before the change only the values set along side the proximity change would be propagated through X.

Without this change, a user may touch one location of a touchscreen, then touch a second location, and the X server will see the first touch and then a second touch which begins at the location of the first touch and is immediately dragged to the location of the second touch. With the change, the X events are set properly.

The change fixes a logic error in the original masked valuators code that I wrote and landed upstream. I believe the risk of regression to be very low as the fix is self contained and easy to verify.

Original Bug Report
-------------------
On Lucid, the touch screen of my Latitude 2100 is no longer handled by evtouch, but some other touchscreen driver having the following bug:

When I press my finger agains the screen, the expected behaviour is that the cursor clicks at the location where my finger is.
However, it clicks at the location where the pointer currently is and _afterwards_ moves to the location of my finger, what of course results in a selection between the original and the new position.

How can I find out which touchscreen driver is currently active?
I'd like to have a look at it.

Revision history for this message
Fabio Marconi (fabiomarconi) wrote :

Hello
Is this problem present with the latest updated Lucid's or Maverick's packages?
Thanks in advance
Fabio

Changed in ubuntu:
status: New → Incomplete
Revision history for this message
Fabio Marconi (fabiomarconi) wrote :

We are closing this bug report because it lacks the information we need to investigate the problem, as described in the previous comments. Please reopen it if you can give us the missing information, and don't hesitate to submit bug reports in the future. To reopen the bug report you can click on the current status, under the Status column, and change the Status back to "New". Thanks again!

Changed in ubuntu:
status: Incomplete → Invalid
Revision history for this message
nh2 (nh2) wrote :

Problem still present in current Natty.

Changed in ubuntu:
status: Invalid → New
Revision history for this message
cahayez (cahayez) wrote :

I also have the problem. Still running Karmic on my Asus EEEPC T91

Revision history for this message
Naugtur (naugtur) wrote :

Same thing on my lattitude 2100 with xubuntu Lucid (up-to-date)

Interesting thing, not sure if related: The device is listed twice in xinput list. (xinput list --long attached)
When I disable the first instance - it stops working. When I disable the second instance it still works and still makes drags from time to time.

Revision history for this message
cahayez (cahayez) wrote :

I also have 2 instances and the same behavior

Revision history for this message
Naugtur (naugtur) wrote :

Same problem on MSI Wind Top AE1920 with IDEACOM IDC 6681

(dell L2100 had IDEACOM IDC 6680)

Also - the problem makes it impossible to calibrate touchscreen without guessing the numbers for xinput. Calibration utilities can't work, because it's impossible to get 4 correct taps in a row.

Changed in ubuntu:
status: New → Confirmed
Revision history for this message
Naugtur (naugtur) wrote :

There is a driver package compatible with older distributions, but it depends on xorg.conf

See here: http://www.ideacom.com.tw/DR_IDC6681.htm
The driver on that page is supposed to work with IDC6680 IDC6681 IDC6690 IDC6691

No sources attached, but the config script might be worth reading.

Revision history for this message
Björn Kruggel (bkruggel) wrote :

I had a similar problem on Lucid, not in Maverick: typing on an onscreen keyboard testestestest might give something like tessestessest. Now I'm back on Lucid and resolved it by installing an evdev version above 2.5 (in my case 2.5.99 from xorg-edgers). You might wanna give it a try.

Revision history for this message
jaxxed (jaxxed) wrote :

Similar problem on Maverick with IDC 6650.

Driver evtouch works (requires calibration tuning, xinput_calibrator values don't work.) No multitouch capabilites.

Driver evdev for maverick and natty treat the device like a touchpad, not a touchscreen.

Evtouch for natty is in the repo, but it reports requirements for an older version of abi (wants 11, gets 12,) so it can't install.

I have lsusb, xinput --list --long and the section of xorg.0.log that are relevant. would you like any of them posted?

Revision history for this message
jaxxed (jaxxed) wrote :

Same problem.

Attached:
- lsusb
- xinput --list --long
- less /var/log/Xorg.0

All for a Gateway ZX with touchscreen, which is an IDC 6650 (one of those all-in-ones with the touchscreen.)

The evdev and synaptics (default) drivers treat the device like a laptop touchpad, so touching don't locate the cursor, but moves, drags and clicks are recorded.

Xinput --test captures events properly, including multitouch moves and clicks (up to three fingers.)

Revision history for this message
Naugtur (naugtur) wrote :

Björn Kruggel's suggestion helps. Add a ppa for xorg-edgers in your apt and update everything.

Revision history for this message
nh2 (nh2) wrote :

My one is IDC6680.

For me, it worked all fine with the 2.5.99 evdevs, but my most recent update brought the problems are back again.

I ran git bisect and found out that the regression is in the new XI 2.1 multitouch support commit: a12a1f9e2b80e8a9a1515c309d0094f898139a83

The commit b441e8e382a40dcb64c1715469952bf856e9cc40 before that works fine.

Revision history for this message
nh2 (nh2) wrote :

I found the commit that made the touchscreen work initally. It is "Add proximity support." b48f4c41c0d3386bba3e9d8fa3da91f18aae190b and was developed in the 2.5.99 series.

The commit before, 185ad42078a3bcb423b83e41ebeddbb7541fe26c, is the last one where it did not work.

I had to find these on Ubuntu 10.10 as these older versions do not compile on 11.04.

So to sum up:

newer <- broken
a12a1f9e2b80e8a9a1515c309d0094f898139a83 <- broken again (multitouch support)
b441e8e382a40dcb64c1715469952bf856e9cc40 <- fixed
in between <- fixed
b48f4c41c0d3386bba3e9d8fa3da91f18aae190b <- fixed (proximity support)
185ad42078a3bcb423b83e41ebeddbb7541fe26 <- broken
older <- broken

The it would be nice if the people who wrote the MT support / Xinput 2.1 could check the original fix (proximity support) to see if they forgot something.

nh2 (nh2)
affects: ubuntu → xserver-xorg-input-evdev (Ubuntu)
Revision history for this message
Chase Douglas (chasedouglas) wrote :

Hi nh2,

To help us reproduce the issue, please generate a recording of your touchscreen. Instructions may be found here:

https://wiki.ubuntu.com/Multitouch/Testing/uTouchEvEmu#Debugging

Because this bug involves the X evdev input module, you do not need to do any VT switching. You can skip steps 3, 4 and 9. Please attach the device.prop and device.record files to the bug.

Thanks!

Changed in xserver-xorg-input-evdev (Ubuntu):
status: Confirmed → Incomplete
importance: Undecided → Medium
Revision history for this message
nh2 (nh2) wrote :
Revision history for this message
nh2 (nh2) wrote :

In this record, I first swipe from bottom left to top right. Then I press at bottom left, the cursor stays at its position, and only when I move my finger a bit, it jumps to my finger, but clicking before the move so that everything in between gets mouse-box-selected.

Revision history for this message
jaxxed (jaxxed) wrote :

Gateway ZX (IDC 6650) Guy here.

I don't have the machine anymore, so I can't perform the debug, however I did try the Edger PPA, and forced the machine to use the evdev, and had the same behaviour. EVTouch worked on the device.

Thanks for the great work guys. I'm upgrading to a newer machine so a newer chipset. I look forward to using your software again.

Revision history for this message
Naugtur (naugtur) wrote :

If any extra experiments are needed - I'm still watching this thread.

I am currently using xubuntu 10.04 on dell L2100 with IDEACOM IDC 6680
I can't risk loosing the system, so I won't be able to do risky updates at the moment, but I'm working on it. (I have to do separate partitions first)

Changed in utouch:
assignee: nobody → Chase Douglas (chasedouglas)
status: New → Incomplete
Revision history for this message
Chase Douglas (chasedouglas) wrote :

I've uploaded a new version of evdev to ppa:utouch-team/unstable. The package fixes things for the device recording. Please test it out and report success or issues here. After you are done testing, you can remove the ppa with ppa-purge.

Note that it's not done building in the ppa yet, be patient :).

Thanks!

Revision history for this message
Martinique (martinique) wrote :

I was testing Natty on an Asus Eee Top (IDEACOM IDC 6681 touch screen) and came across this bug. The utouch-team/unstable PPA seems to fix the buggy touch screen behaviour.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package xserver-xorg-input-evdev - 1:2.6.0-1ubuntu11

---------------
xserver-xorg-input-evdev (1:2.6.0-1ubuntu11) natty; urgency=low

  [ Chase Douglas ]
  * Fix event handling for devices that provide proximity events (LP: #573006)

  [ Timo Aaltonen ]
  * Add debian/local/11-evdev-quirks.conf and install it to sysconfigdir.
    Included is a quirk to enable middle button emulation for the Ubuntu
    branded travel mouse (LP: #746639)
 -- Timo Aaltonen <email address hidden> Mon, 04 Apr 2011 16:58:27 +0300

Changed in xserver-xorg-input-evdev (Ubuntu):
status: Incomplete → Fix Released
Revision history for this message
cahayez (cahayez) wrote :

How do you calibrate the evtouch driver from xorg-edgers?

Revision history for this message
Timo Aaltonen (tjaalton) wrote :

There is no evtouch driver, at least for natty. For evdev there is xinput-calibrator, but it's still waiting in the NEW queue.

Revision history for this message
nh2 (nh2) wrote :

This is not fixed for me. Same behaviour as in #17. I uploaded a new utouch recording; the error is at the end.

Revision history for this message
nh2 (nh2) wrote :
Revision history for this message
nh2 (nh2) wrote :

Problem still present with 2.6.0-1ubuntu11 (ubuntu repo) and 2.6.0-1ubuntu11~utouch2 (PPA).

Changed in xserver-xorg-input-evdev (Ubuntu):
status: Fix Released → Confirmed
Changed in utouch:
status: Incomplete → Confirmed
Revision history for this message
Chase Douglas (chasedouglas) wrote :

nh2,

Could you describe what you did in the recording, what you expect, and what actually is happening for you? I don't see anything wrong with how X evdev is interpreting the input stream on my system.

Thanks!

Changed in xserver-xorg-input-evdev (Ubuntu):
status: Confirmed → Triaged
Changed in utouch:
status: Confirmed → Invalid
Changed in xserver-xorg-input-evdev (Ubuntu):
status: Triaged → Incomplete
Revision history for this message
nh2 (nh2) wrote :

I try: In the recording, I first moved the pointer in a fluid movement, which works fine. Then I clicked at a different location, resulting in what should happen: the pointer is moved and a click is emitted there.

But last, I did the same thing, clicked in top right direction of the current pointer position. Then the pointer did not what it is expected to do: Instead of being warped there and clicking, the pointer stayed at is Y axis position and only moved on the X axis, therefore being moved ~300px to the right only instead of ~300px to the right and ~200px to the top. Moving my finger (which is still on the screen) a bit, it makes it finally jump up, but resulting in a selection from where it was up to my finger.

Try starting the record with a gnome-terminal or a drawing program in the background, probably this will show what I mean. If it does not, please post here again, so that I can try to make a better recording.

Changed in xserver-xorg-input-evdev (Ubuntu):
status: Incomplete → Confirmed
Revision history for this message
Chase Douglas (chasedouglas) wrote :

nh2,

Ok, I think I found the last part of this bug :). I've uploaded a new test package to ppa:utouch-team/unstable. Please install it after it has built.

As a side note, the ppa includes some new bits under development. If you do an upgrade of all packages it will upgrade libutouch-grail1 which has a bug that causes the cursor to lag. I suggest only upgrading xserver-xorg-input-synaptics:

$ sudo apt-get install xserver-xorg-input-synaptics

Thanks!

Revision history for this message
nh2 (nh2) wrote :

(I think you referred to xserver-xorg-input-evdev instead of -synaptics, but ...)

Fixed! Thanks!
Now Natty is ready for the Latitude 2100 touch screen.

Changed in xserver-xorg-input-evdev (Ubuntu):
status: Confirmed → Fix Committed
Changed in xserver-xorg-input-evdev (Ubuntu):
milestone: none → ubuntu-11.04
Revision history for this message
Chase Douglas (chasedouglas) wrote :
description: updated
Changed in xserver-xorg-input-evdev (Ubuntu):
status: Fix Committed → New
Revision history for this message
Scott Kitterman (kitterman) wrote : Re: [Bug 573006] [NEW] Touch screen driver clicks at wrong location

This sounds like a bug fix, not a feature request, so please just upload and
the release tea m will review it in the queue.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package xserver-xorg-input-evdev - 1:2.6.0-1ubuntu12

---------------
xserver-xorg-input-evdev (1:2.6.0-1ubuntu12) natty; urgency=low

  * Another fix for event handling for devices that provide proximity events
    (LP: #573006)
 -- Chase Douglas <email address hidden> Thu, 14 Apr 2011 16:09:18 -0400

Changed in xserver-xorg-input-evdev (Ubuntu):
status: New → Fix Released
Revision history for this message
Gunnar Skjold (gskjold) wrote :

I got the exact problem explained in #29. Im on 11.04, upgraded from 10.10. I have checked that i have xserver-xorg-input-evdev (1:2.6.0-1ubuntu12). Am I missing something else? Please advice.

Revision history for this message
Gunnar Skjold (gskjold) wrote :
Revision history for this message
Gunnar Skjold (gskjold) wrote :

I have swapped axes, so the playback didn't exactly look the same as what I did. But ill describe it how you are suppose to experience it:

First i swipe with a stylus from bottom right to top left, and from bottom left to top right.

Then I use my finger to do the same. Watch how sketchy it becomes.

Last i touch with my finger, bottom right, bottom left, top right, top left. (Not in exact corners, but close)

Revision history for this message
Gunnar Skjold (gskjold) wrote :

The weird thing here is that when I play back on another computer, its not nearly as jumpy as the real deal. On the computer its on, it jumps to y=0 often when swiping in x direction, and to x=0 when swiping in y direction. It kind of jumps back and forth. It seems to stick in the direction I move though.

Revision history for this message
Gunnar Skjold (gskjold) wrote :

Ive identified the problem. If i don't set "SwapAxes", the problem isn't there.. However, the touch is useless since it doesn't map anymore..

Revision history for this message
Eric Seigne (eric-seigne) wrote :

I've got the same problem with a MSI Wind Top AE1920, here is a xorg.conf with full support. It works on ubuntu 12.04 and 12.10.

Revision history for this message
Eric Seigne (eric-seigne) wrote :

I've got the same problem with a MSI Wind Top AE1920, here is a xorg.conf with full support. It works on ubuntu 12.04 and 12.10.

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.