Bug 94918

Summary: Pointer wobbles on absolute touchscreen
Product: xorg Reporter: kwontaeyoung <xoduddk123>
Component: Input/evdevAssignee: Peter Hutterer <peter.hutterer>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: peter.hutterer, xoduddk123
Version: unspecified   
Hardware: ARM   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Send and receive mail with .
none
my touchscreen evemu-record log
none
evemu(git_version) compile failed.... sorry.. i'll try continue
none
evemu-describe log
none
evemu-record(evemu-2.3.1) log none

Description kwontaeyoung 2016-04-13 10:48:41 UTC
Created attachment 122893 [details]
Send and receive mail with .

Good morning.

I have a problem in using the X11.

I am used to cross-compile all the X11-related packages .

I use the touch screen. 
 
 
 
But it touches the touch-screen cursor is unstable.
But they tried to try to adjust the settings have not found the relevant settings.

Below is a video of my symptoms . ( I posted directly to YouTube. ) 
https://youtu.be/jMub9-T_wEA 
 
 
 
 
Below is the package version and configuration files that I use. 
xorg-server : xorg-server-1.17.3

x-input-driver : xf86-input-evdev-2.10.0

Below are the details of my settings.(/etc/X11/xorg.conf.d/99-calibration.conf)

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "my Touchscreen"
        Option  "Calibration"   "166 3939 186 3814"
        Option  "SwapAxes"      "1"
        Option  "InvertX"   "on"
        Option  "InvertY"   "on"
EndSection
 
 
I looked up the relevant article in the stackoverflow question. (http://unix.stackexchange.com/questions/275867/x11-touch-the-value-of-the-shivers-is-there-any-way)

I use tsc2007 the touch driver .
The results confirm the value of the touch driver shivers slightly .


What can I do to solve this phenomenon?

The inexperienced English 'm sorry :)
Comment 1 Peter Hutterer 2016-04-13 23:12:31 UTC
I'll need you to run sudo evemu-record against your device and attach the output here. This should tell us the type of device you have and the extent of the wobbles. Just a short recording with a single touch, held for a couple of seconds is enough.

see http://www.freedesktop.org/wiki/Evemu
Comment 2 kwontaeyoung 2016-04-14 00:21:56 UTC
Created attachment 122905 [details]
my touchscreen evemu-record log


evemu has compiled a version of Ubuntu below.
https://launchpad.net/evemu (evemu-1.0.10)

It has compiled a evemu.
Attach the evemu-record log. (evemu-record /dev/input/event0 > mytouch.desc)

Thank you.
Comment 3 Peter Hutterer 2016-04-14 02:18:05 UTC
ouch, that is one old version of evemu, what version of ubuntu is this? in that case I'll also need the output of evemu-describe for the same device, or ideally grab evemu from git so I don't need to convert the recordings: https://cgit.freedesktop.org/evemu/
Comment 4 kwontaeyoung 2016-04-14 02:54:53 UTC
Created attachment 122908 [details]
evemu(git_version) compile failed.... sorry.. i'll try continue

Initially, I compiled with the git version.
But I failed to compile. (evemu(git_version)_compile_fail_T_T.txt)

I'll continue to try to compile git version.

evemu version of ubuntu to attach a log of evemu-describe.(evemu-describe_log.txt)

I'm really sorry. I'll keep trying to compile the latest version of evemu.
Comment 5 kwontaeyoung 2016-04-14 02:55:17 UTC
Created attachment 122909 [details]
evemu-describe log
Comment 6 kwontaeyoung 2016-04-14 03:13:37 UTC
Created attachment 122911 [details]
evemu-record(evemu-2.3.1) log


I fail to compile the evemu-2.4.0.

But evemu-2.3.1 version was successfully compiled.

Attach a log of evemu-record (evemu-2.3.1). (More information itneyo been recorded.)


Thank youn.
Comment 7 kwontaeyoung 2016-04-14 03:14:51 UTC
Comment on attachment 122893 [details]
Send and receive mail with .

>Re: X11 touch the value of the shivers. 
>16-04-13 (¼ö) 07:25
>º¸³½»ç¶÷
>:  Peter Hutterer<peter.hutterer@who-t.net> ¹Þ´Â»ç¶÷
>: ±ÇÅ¿µ<xoduddk123@naver.com>
>ÂüÁ¶
>: <xorg@freedesktop.org>
>On Tue, Apr 12, 2016 at 11:28:48AM +0900, ±ÇÅ¿µ wrote:
>>   
>> Good morning.
>> 
>> I have a problem in using the X11.
>> 
>> I am used to cross-compile all the X11-related packages .
>> 
>> I use the touch screen. 
>>  
>> But it touches the touch-screen cursor is unstable.
>> But they tried to try to adjust the settings have not found the relevant settings.
>> 
>> Below is a video of my symptoms . ( I posted directly to YouTube. ) 
>> https://youtu.be/jMub9-T_wEA 
>
>short answer: there is currently no option you can set in evdev (or
>libinput, for that matter) that fixes this issue. you'll need something like
>a hysteresis but that's only available for touchpads at the moment. 123
>
>Please file a bug against evdev and libinput for this and assign them to me.
>
>Cheers,
>   Peter
>
>> Below is the package version and configuration files that I use. 
>> xorg-server : xorg-server-1.17.3
>> x-input-driver : xf86-input-evdev-2.10.0
>> Below are the details of my settings.(/etc/X11/xorg.conf.d/99-calibration.conf)
>> Section "InputClass"
>>         Identifier      "calibration"
>>         MatchProduct    "my Touchscreen"
>>         Option  "Calibration"   "166 3939 186 3814"
>>         Option  "SwapAxes"      "1"
>>         Option  "InvertX"   "on"
>>         Option  "InvertY"   "on"
>> EndSection 
>>  
>> I looked up the relevant article in the stackoverflow question. (http://unix.stackexchange.com/questions/275867/x11-touch-the-value-of-the-shivers-is-there-any-way)
>> 
>> 
>> 
>> What can I do to solve this phenomenon?
>> 
>> The inexperienced English 'm sorry :)
Comment 8 Peter Hutterer 2016-04-18 03:08:13 UTC
fwiw, this is addressed now in libinput with the commit below

commit fcc9a2bf187ee0e7aacf6f2f2d691337f4d471a6
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Apr 14 15:21:50 2016 +1000

    evdev: always defuzz absolute touchscreens


No ETA on a patch for evdev yet, sorry.
Comment 9 kwontaeyoung 2016-04-19 01:24:34 UTC
I was just looking at here.
I knew the report today. :)


I apply the patch. (/usr/lib/xorg/modules/input/libinput_drv.so)


But still unstable.

List compiled by installing
1. libinput
2. xf86-input-libinput
	root@test:/usr/lib/xorg/modules/input# ldd libinput_drv.so
	        libinput.so.10 => /usr/lib/libinput.so.10 (0xb6f54000)
	        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6e72000)
	        libmtdev.so.1 => /usr/lib/libmtdev.so.1 (0xb6e67000)
	        libudev.so.0 => /lib/libudev.so.0 (0xb6e57000)
	        libevdev.so.2 => /usr/lib/libevdev.so.2 (0xb6e41000)
	        librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb6e32000)
	        libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6dc8000)
	        libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6da7000)
	        /lib/ld-linux-armhf.so.3 (0xb6f87000)
	        libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6d8c000)
	root@test:/usr/lib/xorg/modules/input#


Below are the details of my settings.(/etc/X11/xorg.conf.d/99-calibration.conf)
	Section "InputClass"
	        Identifier      "calibration"
	        Driver  "libinput"
	        MatchDevicePath "/dev/input/event0"
	        #MatchProduct    "adsemi_tsdxx Touchscreen"
	        Option  "MinX"  "2147"
	        Option  "MaxX"  "62789"
	        Option  "MinY"  "2746"
	        Option  "MaxY"  "61412"
	        Option  "SwapXY"        "1" # unless it was already set to 1
	EndSection



Below is my /var/log/Xorg.0.log.
	[   318.909] (II) config/udev: Adding input device adsemi_tsdxx Touchscreen (/dev/input/event0)
	[   318.909] (**) adsemi_tsdxx Touchscreen: Applying InputClass "calibration"
	[   318.909] (II) LoadModule: "libinput"
	[   318.909] (II) Loading /usr/lib/xorg/modules/input/libinput_drv.so
	[   318.912] (II) Module libinput: vendor="X.Org Foundation"
	[   318.912]    compiled for 1.17.3, module version = 0.6.0
	[   318.912]    Module class: X.Org XInput Driver
	[   318.912]    ABI class: X.Org XInput driver, version 21.0
	[   318.912] (II) Using input driver 'libinput' for 'adsemi_tsdxx Touchscreen'
	[   318.912]    Option "_source" "server/udev"
	[   318.912]    Option "name" "adsemi_tsdxx Touchscreen"
	[   318.912]    Option "path" "/dev/input/event0"
	[   318.912]    Option "device" "/dev/input/event0"
	[   318.912]    Option "major" "13"
	[   318.912]    Option "minor" "64"
	[   318.912]    Option "config_info" "udev:/sys/devices/virtual/input/input0/event0"
	[   318.912]    Option "MinX" "2147"
	[   318.912]    Option "MaxX" "62789"
	[   318.912]    Option "MinY" "2746"
	[   318.912]    Option "MaxY" "61412"
	[   318.912]    Option "SwapXY" "1"
	[   318.913]    Option "driver" "libinput"
	[   318.913] (**) adsemi_tsdxx Touchscreen: always reports core events
	[   318.913] (**) Option "Device" "/dev/input/event0"
	[   318.914] (II) input device 'adsemi_tsdxx Touchscreen', /dev/input/event0 is tagged by udev as: Touchscreen
	[   318.915] (II) input device 'adsemi_tsdxx Touchscreen', /dev/input/event0 is a touch device
	[   318.970] (**) Option "config_info" "udev:/sys/devices/virtual/input/input0/event0"
	[   318.970] (II) XINPUT: Adding extended input device "adsemi_tsdxx Touchscreen" (type: TOUCHSCREEN, id 6)
	[   318.971] (**) Option "AccelerationScheme" "none"
	[   318.971] (**) adsemi_tsdxx Touchscreen: (accel) selected scheme none/0
	[   318.972] (**) adsemi_tsdxx Touchscreen: (accel) acceleration factor: 2.000
	[   318.972] (**) adsemi_tsdxx Touchscreen: (accel) acceleration threshold: 4
	[   318.973] (II) input device 'adsemi_tsdxx Touchscreen', /dev/input/event0 is tagged by udev as: Touchscreen
	[   318.973] (II) input device 'adsemi_tsdxx Touchscreen', /dev/input/event0 is a touch device
	[   318.974] (II) config/udev: Adding input device adsemi_tsdxx Touchscreen (/dev/input/mouse0)
	[   318.974] (II) No input driver specified, ignoring this device.
	[   318.974] (II) This device may have been added with another device file.



I xf86-input-evdev instead xf86-input-libinput is required.
I need an operation to xf86-input-evdev available options such as "InvertX", "InvertY".(The touch screen is mounted upside down. :) )
evdev is going not?
Comment 10 Peter Hutterer 2016-04-19 01:50:29 UTC
first: libinput doesn't have the min/max options, we rely on the lower levels to be correct. so you'd have to fix this up with a udev rule, similar to https://github.com/systemd/systemd/blob/master/hwdb/60-evdev.hwdb
same with the swapxy or invertx/y, afaiu the kernel drivers have options exposed to fix this in the kernel already.

For this patch to take effect, you'll need the fuzz value set on the kernel device. Either through the kernel driver directly, or you can fix it up with a udev hwdb entry in the form of
evdev:name:.... # see the other entries for the format here
 EVDEV_ABS_00=:::4
 EVDEV_ABS_01=:::4
 EVDEV_ABS_35=:::4
 EVDEV_ABS_36=:::4

this would set a fuzz of 4 for ABS_X, Y, MT_POSITION_X and Y. See the 60-evdev.hwdb file for detailed docs. That fuzz is then used to stop the pointer wobbling.
Comment 11 kwontaeyoung 2016-04-26 01:16:43 UTC
Thank you
Through input_set_abs_params () function from the input driver gave the Kernel set the fuzz value.
I have set the fuzz value to 10 .
example)
   input_set_abs_params (input_dev, ABS_X, 0, MAX_12BIT, 10, 0);
After a shaky touch symptoms disappeared.
Thank you.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.