AW: Touchscreen on embedded Linux can't tap / click
Walter Hofstädtler
walter at hofstaedtler.com
Fri Jul 1 18:42:47 UTC 2016
Benjamin,
now I managed to install evemu and tools.
I recorded the events as requested:
# evemu-record /dev/input/event0 > evemu-record.txt
# EVEMU 1.3
# Kernel: 3.10.17-1.0.2_ga+g33597e3
# Input device name: "max11801_ts"
# Input device ID: bus 0x18 vendor 0000 product 0000 version 0000
# Supported events:
# Event type 0 (EV_SYN)
# Event code 0 (SYN_REPORT)
# Event code 1 (SYN_CONFIG)
# Event code 2 (SYN_MT_REPORT)
# Event code 3 (SYN_DROPPED)
# Event code 4 ((null))
# Event code 5 ((null))
# Event code 6 ((null))
# Event code 7 ((null))
# Event code 8 ((null))
# Event code 9 ((null))
# Event code 10 ((null))
# Event code 11 ((null))
# Event code 12 ((null))
# Event code 13 ((null))
# Event code 14 ((null))
# Event type 1 (EV_KEY)
# Event code 330 (BTN_TOUCH)
# Event type 3 (EV_ABS)
# Event code 0 (ABS_X)
# Value 1055
# Min 0
# Max 4095
# Fuzz 0
# Flat 0
# Resolution 0
# Event code 1 (ABS_Y)
# Value 2175
# Min 0
# Max 4095
# Fuzz 0
# Flat 0
# Resolution 0
# Event code 24 (ABS_PRESSURE)
# Value 0
# Min 0
# Max 1
# Fuzz 0
# Flat 0
# Resolution 0
# Properties:
N: max11801_ts
I: 0018 0000 0000 0000
P: 00 00 00 00 00 00 00 00
B: 00 0b 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 04 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 02 00 00 00 00 00 00 00 00
B: 03 03 00 00 01 00 00 00 00
B: 04 00 00 00 00 00 00 00 00
B: 05 00 00 00 00 00 00 00 00
B: 11 00 00 00 00 00 00 00 00
B: 12 00 00 00 00 00 00 00 00
B: 14 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
A: 00 0 4095 0 0 0
A: 01 0 4095 0 0 0
A: 18 0 1 0 0 0
################################
# Waiting for events #
################################
E: 0.000001 0003 0000 1099 # EV_ABS / ABS_X 1099
E: 0.000001 0003 0001 2267 # EV_ABS / ABS_Y 2267
E: 0.000001 0003 0018 0001 # EV_ABS / ABS_PRESSURE 1
E: 0.000001 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +0ms
E: 0.008188 0003 0000 1101 # EV_ABS / ABS_X 1101
E: 0.008188 0003 0001 2269 # EV_ABS / ABS_Y 2269
E: 0.008188 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms
E: 0.016291 0003 0000 1102 # EV_ABS / ABS_X 1102
E: 0.016291 0003 0001 2272 # EV_ABS / ABS_Y 2272
E: 0.016291 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms
E: 0.024413 0003 0000 1105 # EV_ABS / ABS_X 1105
E: 0.024413 0003 0001 2276 # EV_ABS / ABS_Y 2276
E: 0.024413 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms
E: 0.048606 0003 0018 0000 # EV_ABS / ABS_PRESSURE 0
E: 0.048606 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +24ms
E: 0.175553 0003 0000 1097 # EV_ABS / ABS_X 1097
E: 0.175553 0003 0001 2309 # EV_ABS / ABS_Y 2309
E: 0.175553 0003 0018 0001 # EV_ABS / ABS_PRESSURE 1
...
X11 with evdev do not see the touch/tap events.
So I configured X11 to use tslib with this configuration file: /etc/X11/xorg.conf.d/tslib.conf
~~~
Section "InputDevice"
Identifier "tslib"
Driver "tslib"
Option "CorePointer"
Option "SendCoreEvent" "yes"
Option "Protocol" "Auto"
Option "Device" "/dev/input/event0"
Option "ScreenNumber" "0"
Option "Width" "0"
Option "Height" "0"
Option "Rotate" "NONE"
EndSection
Section "InputClass"
Identifier "evdev touchscreen fallback"
Option "Ignore" "true"
EndSection
~~~
Using tslib, everything works, X11 recognizes all touch/tap events.
Using tslib, X11 treats " EV_ABS / ABS_PRESSURE 1" as an touch / tab event as expected.
I am curious why X11 can't work when using evdev but successfully works when using tslib?
An idea what's wrong?
Walter
-----Ursprüngliche Nachricht-----
Von: Benjamin Tissoires [mailto:benjamin.tissoires at gmail.com]
Gesendet: Donnerstag, 23. Juni 2016 08:32
An: Walter Hofstädtler
Cc: Input Tools
Betreff: Re: Touchscreen on embedded Linux can't tap / click
On Thu, Jun 23, 2016 at 8:24 AM, Walter Hofstädtler <walter at hofstaedtler.com> wrote:
> Benjamin,
>
> sorry for the long delay, I tried to install evemu-record into my image.
> I did not found an evemu.bb file, so I created my own "evemu_1.0.bb" file.
>
> ~~~
> SUMMARY = "Kernel evdev device emulation"
> DESCRIPTION = "The evemu library and tools are used to describe devices, record data, create devices and replay data from kernel evdev devices. "
> HOMEPAGE = "https://www.freedesktop.org/wiki/Evemu/"
>
> LICENSE = "GPLv3"
> LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
>
> inherit autotools
>
> # this is the rev of your recipe. Bumping it will toss the cache and
> redo everything PR = "r2"
>
> # pick up latest svn rev for this module. Note this a deferred evaluation!
> SRCREV = "${AUTOREV}"
>
> # ${PV} is pulled from the recipe filename, e.g. helloworld_2.7.bb -> ${PV} expands to "2.7".
> # We use immediate evaluation to define a new var PVBASE holding the original value of ${PV}.
> PVBASE := "${PV}"
>
> # We need to tell bitbake about our current directory structure or we
> won't be able to find patches after we mess with ${PV} FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PVBASE}:"
>
> # Then redefine PV to tack the svn rev onto the base version. This is evaluated at fetch time.
> # Then the package will get rebuilt any time the relevant part of the source tree changes.
> PV = "${PVBASE}.${SRCPV}"
>
> # Now we format the source code URI.
> SRC_URI = "git://git.freedesktop.org/git/evemu"
>
> # build will fail without this; it specifies where in the workdir to
> find the source. The # name must be the same as the "module" name in SRC_URI.
> # S = "${WORKDIR}/example"
> S = "${WORKDIR}/git"
>
> PARALLEL_MAKE = ""
> ~~~
>
> But this will not compile, I always see this error:
>
> ---
> | /home/user/yocto_daisy/fsl-community-bsp/WH_icedtea/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/evemu/1.0.AUTOINC+4fc604554c-r2/git/configure: line 16167: syntax error near unexpected token `LIBEVDEV,'
> | /home/user/yocto_daisy/fsl-community-bsp/WH_icedtea/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/evemu/1.0.AUTOINC+4fc604554c-r2/git/configure: line 16167: `PKG_CHECK_MODULES(LIBEVDEV, libevdev >= 1.2.99.902)'
> | Configure failed. The contents of all config.log files follows to
> | aid debugging
> | ERROR: oe_runconf failed
> | WARNING: exit code 1 from a shell command.
> | ERROR: Function failed: do_configure (log file is located at
> | /home/user/yocto_daisy/fsl-community-bsp/WH_icedtea/tmp/work/cortexa
> | 9hf-vfp-neon-poky-linux-gnueabi/evemu/1.0.AUTOINC+4fc604554c-r2/temp
> | /log.do_configure.13923)
> ERROR: Task 329 (/home/user/yocto_daisy/fsl-community-bsp/sources/meta-wh/recipes-core/evemu/evemu_1.0.bb, do_configure) failed with exit code '1'
> NOTE: Tasks Summary: Attempted 5583 tasks of which 5582 didn't need to be rerun and 1 failed.
> No currently running tasks (3816 of 5593)
> ---
>
> Do you know how to fix this error: " syntax error near unexpected token `LIBEVDEV,'" ?
libevdev is a hard dependency for evemu. You need to have the development files for this lib installed too (https://www.freedesktop.org/wiki/Software/libevdev/).
Cheers,
Benjamin
>
>
> Walter
>
>
> -----Ursprüngliche Nachricht-----
> Von: Benjamin Tissoires [mailto:benjamin.tissoires at gmail.com]
> Gesendet: Mittwoch, 1. Juni 2016 09:56
> An: Walter Hofstädtler
> Cc: Input Tools
> Betreff: Re: Touchscreen on embedded Linux can't tap / click
>
> On Tue, May 31, 2016 at 9:21 PM, Walter Hofstädtler <walter at hofstaedtler.com> wrote:
>> Benjamin,
>>
>> attached you find dmesg log.
>>
>> Touch driver is a: max11801_ts.
>
> OK thanks.
> The max11801_ts driver has basically had no changes since its inclusion in 3.0. And there, it reports BTN_TOUCH correctly. So both the 3.10 and 3.14 reports correct events according to the sources:
> http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto-3.10/tree/driver
> s/input/touchscreen/max11801_ts.c#n139
> http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto-3.14/tree/driver
> s/input/touchscreen/max11801_ts.c#n138
>
> Now, the weird part is that your evtest output shows ABS_PRESSURE events while nothing in the code suggests that the driver will report those events.
>
> So either you are using a different max11801_ts driver (which seems unlikely), or maybe something in userspace corrupts the event node (with some udev rules), or evtest is just lost as it's not maintained anymore.
>
> Please try recording the event node through evemu-record[1] which is known to work better.
>
>>
>> I tried other touch tools and find some of this tools are working.
>> The most interesting part is: ts_calibrate, this tool works but xinput_calibrator do not work.
>
> xinput_calibrator works at the X level, while ts_calibrate might not.
> If X is not happy because it doesn't see the BTN_TOUCH events, xinput_calibrator will not be happy either.
>
>> All of this programs uses the same /dev/input/event0 device.
>> I am curious about why ts_calibrate works (sees tap / click events) but other programs like xinput_calibrator do not work?
>
>
> Cheers,
> Benjamin
>
> [1] https://www.freedesktop.org/wiki/Evemu/
>
>>
>>
>> With best regards
>>
>> Walter
>>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Benjamin Tissoires [mailto:benjamin.tissoires at gmail.com]
>> Gesendet: Dienstag, 31. Mai 2016 17:06
>> An: Walter Hofstädtler
>> Cc: input-tools at lists.freedesktop.org
>> Betreff: Re: Touchscreen on embedded Linux can't tap / click
>>
>> On Sat, May 28, 2016 at 3:05 PM, Walter Hofstädtler <walter at hofstaedtler.com> wrote:
>>> Benjamin,
>>>
>>>
>>> thank you for your answer.
>>>
>>> The issue about updating is, the board support package supports
>>> Yocto
>>> 1.7 with kernel 3.10.17 and some tests are done with Yocto 1.8 with
>>> kernel 3.14.38.
>>>
>>> Kernel 3.14.38 is also quite old. Do you believe that kernel 3.14.38
>>> fixes this issue?
>>>
>>
>> Well, I know nothing about your touchscreen so I can't give you more information. At least please provide a dmesg or the name of the actual module used so we can check whether it has been updated between 3.10 and 3.14.
>> Worse case, you are not using an upstream driver, and you will have to request the Yocto community to fix it.
>>
>> Cheers,
>> Benjamin
>>
>>>
>>> Walter
>>>
>>>
>>>
>>>
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Benjamin Tissoires <benjamin.tissoires at gmail.com>
>>> Gesendet: Sam 28 Mai 2016 14:09
>>> An: Walter Hofstädtler <walter at hofstaedtler.com>
>>> CC: input-tools at lists.freedesktop.org
>>> Betreff: Re: Touchscreen on embedded Linux can't tap / click
>>>
>>> Hi Walter,
>>>
>>> On Sat, May 28, 2016 at 1:13 PM, Walter Hofstädtler
>>> <walter at hofstaedtler.com> wrote:
>>>> Hi,
>>>>
>>>>
>>>> I use a 7" display with resistive touchscreen, embedded Linux for ARM CPU.
>>>> Manufacturer Engicam, design is similar to Freescale / NXP i.MX6
>>>> Sabre board.
>>>>
>>>>
>>>> With Yocto 1.7.3 and Engicam board support package I created an X11
>>>> application, basically a Firefox browser. Most of this application
>>>> work with one exception: I can't tap / click on any item. When I
>>>> touch the screen and move around, cursor will follow my finger,
>>>> unfortunately a tap / click will not work. I searched with Google
>>>> and find some tips but nothing solved this issue.
>>>>
>>>>
>>>> Kernel: Linux display 3.10.17-1.0.2_ga+g33597e3 #1 SMP PREEMPT Sun
>>>> May 22
>>>> 20:00:34 CEST 2016 armv7l GNU/Linux
>>>>
>>>>
>>>> Doing some debugging, I found that ts_test gets the BTN_TOUCH
>>>> events but evtest do *not* see any BTN_TOUCH events.
>>>>
>>>>
>>>>
>>>> # evtest
>>>>
>>>> No device specified, trying to scan all of /dev/input/event*
>>>>
>>>> Available devices:
>>>>
>>>> /dev/input/event0: max11801_ts
>>>>
>>>> Select the device event number [0-0]: 0
>>>>
>>>> Input driver version is 1.0.1
>>>>
>>>> Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
>>>>
>>>> Input device name: "max11801_ts"
>>>>
>>>> Supported events:
>>>>
>>>> Event type 0 (EV_SYN)
>>>>
>>>> Event type 1 (EV_KEY)
>>>>
>>>> Event code 330 (BTN_TOUCH)
>>>>
>>>> Event type 3 (EV_ABS)
>>>>
>>>> Event code 0 (ABS_X)
>>>>
>>>> Value 1308
>>>>
>>>> Min 0
>>>>
>>>> Max 4095
>>>>
>>>> Event code 1 (ABS_Y)
>>>>
>>>> Value 476
>>>>
>>>> Min 0
>>>>
>>>> Max 4095
>>>>
>>>> Event code 24 (ABS_PRESSURE)
>>>>
>>>> Value 0
>>>>
>>>> Min 0
>>>>
>>>> Max 1
>>>>
>>>> Properties:
>>>>
>>>> Testing ... (interrupt to exit)
>>>>
>>>> Event: time 1464027536.266584, type 3 (EV_ABS), code 0 (ABS_X),
>>>> value
>>>> 1167
>>>>
>>>> Event: time 1464027536.266584, type 3 (EV_ABS), code 1 (ABS_Y),
>>>> value
>>>> 2282
>>>>
>>>> Event: time 1464027536.266584, type 3 (EV_ABS), code 24
>>>> (ABS_PRESSURE), value 1
>>>>
>>>> Event: time 1464027536.266584, -------------- EV_SYN ------------
>>>>
>>>> Event: time 1464027536.282916, type 3 (EV_ABS), code 0 (ABS_X),
>>>> value
>>>> 1168
>>>>
>>>> Event: time 1464027536.282916, -------------- EV_SYN ------------
>>>>
>>>> Event: time 1464027536.299472, type 3 (EV_ABS), code 0 (ABS_X),
>>>> value
>>>> 1169
>>>>
>>>> Event: time 1464027536.299472, -------------- EV_SYN ------------
>>>>
>>>> Event: time 1464027536.315900, type 3 (EV_ABS), code 0 (ABS_X),
>>>> value
>>>> 1171
>>>>
>>>> Event: time 1464027536.315900, type 3 (EV_ABS), code 1 (ABS_Y),
>>>> value
>>>> 2281
>>>>
>>>> Event: time 1464027536.315900, -------------- EV_SYN ------------
>>>>
>>>> Event: time 1464027536.340587, type 3 (EV_ABS), code 0 (ABS_X),
>>>> value
>>>> 1172
>>>>
>>>> Event: time 1464027536.340587, -------------- EV_SYN ------------
>>>>
>>>> Event: time 1464027536.348821, type 3 (EV_ABS), code 0 (ABS_X),
>>>> value
>>>> 1173
>>>>
>>>> Event: time 1464027536.348821, -------------- EV_SYN ------------
>>>>
>>>> Event: time 1464027536.357047, type 3 (EV_ABS), code 0 (ABS_X),
>>>> value
>>>> 1174
>>>>
>>>> Event: time 1464027536.357047, type 3 (EV_ABS), code 1 (ABS_Y),
>>>> value
>>>> 2283
>>>>
>>>> Event: time 1464027536.357047, -------------- EV_SYN ------------
>>>>
>>>> Event: time 1464027536.365190, type 3 (EV_ABS), code 24
>>>> (ABS_PRESSURE), value 0
>>>>
>>>> Event: time 1464027536.365190, -------------- EV_SYN ------------
>>>>
>>>>
>>>> While capturing this output, I touched the screen but I did *not*
>>>> get BTN_TOUCH events.
>>>
>>> Yep, that's a driver bug. Please check which driver you are using (I
>>> guess not hid-multitouch given the bus is i2c and the VID/PID are
>>> 0/0), and check whether an updated driver fixes your problem.
>>>
>>>>
>>>>
>>>> # TSLIB_TSDEVICE=/dev/input/touchscreen0 ts_test
>>>>
>>>> 1464048778.716232: 399 239 1
>>>>
>>>> 1464048778.724452: 399 239 1
>>>>
>>>> 1464048778.732621: 399 239 1
>>>>
>>>> 1464048778.740965: 399 238 1
>>>>
>>>> 1464048778.749177: 399 237 1
>>>>
>>>> 1464048778.757422: 399 236 0
>>>>
>>>>
>>>> Fortunately ts_test gets BTN_TOUCH events, I assume last column are
>>>> the BTN_TOUCH events.
>>>
>>> Well, no, the last column would suggest that the client interprets
>>> the finger as touch through the pressure information, not that it
>>> gets actual BTN_TOUCH event. I believe ts_test is less strict
>>> regarding BTN_TOUCH and consider pressure > 0 meanining touch.
>>>
>>>>
>>>>
>>>> Worth to mention, ts_calibrate works (I am able to tap / click) but
>>>> xinput_calibrator do not work, cursor follows pen but do not accept
>>>> tap / click.
>>>>
>>>>
>>>> As evtest do not see the BTN_TOUCH events I assume X11 will also
>>>> not see BTN_TOUCH events so I can't tap / click in X11.
>>>>
>>>>
>>>> Question why evtest do not see the BTN_TOUCH events? Is this an
>>>> configuration issue or a bug?
>>>
>>> Definitively kernel bug. 3.10 is quite old now, so it would be
>>> interesting to upgrade the kernel first if possible, and also check
>>> if the kernel driver has been updated since.
>>>
>>> Cheers,
>>> Benjamin
>>>
>>>>
>>>>
>>>> Any help would be greatly appreciated.
>>>>
>>>>
>>>> With best regards
>>>>
>>>> Walter
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Input-tools mailing list
>>>> Input-tools at lists.freedesktop.org
>>>> https://lists.freedesktop.org/mailman/listinfo/input-tools
>
More information about the Input-tools
mailing list