Dear All
I was able to let the inflexionui_demo run on my IMX53 QSB with LVDS 10.1" display. However it is not possible to browse through the appliciation with my touchscreen. When I check in my putty console the command cat /dev/input/event1 my board responds to the touchscreen, so it is defenitly working. However it is not working on the inflexion ui demo.
Is anyone able to give me a hint into the right direction?
kind regards
Lieven
Hi Rogerio,
I was finally able to get MCIMX-LVDS working, I used raw co-ordinate values in /usr/share/hal/fdi/policy/20thirdparty/50-eGalax.fdi :
<merge key="input.x11_driver" type="string">evtouch</merge>
<merge key="input.x11_options.minx" type="string">0</merge>
<merge key="input.x11_options.miny" type="string">0</merge>
<merge key="input.x11_options.maxx" type="string">32767</merge>
<merge key="input.x11_options.maxy" type="string">32767</merge>
<snip>
The same values are even used in xorg.conf for MinX,MaxX,MinY,MaxY.
Now I am able to get perfect caliberated pointer on X session.
Thanks a lot for your suggestion.
Rogerio Pimentel said:
Hi Lieven,
Nice to know you got your touchscreen work!
Srikanth,
I didn´t have success when trying to use ts_calibrate (I don´t know why it returns wrong values)
Try to use evtest /dev/input/<your touch device>
after call it, move your pointer to the screen corners. It will return the raw coordinates to add on your xorg.conf.
IMPORTANT: If you´re using Ubuntu, you will need to shutdown gdm before call evtest.
I haven't found any better way to calibrate touchscreens on Ubuntu so far.
Rgds
Rogerio
What is the correct configuration for this touchscreen in ubuntu.
# evtest /dev/input/event2
works after
# service gdm stop
but how to configure xofg to use it correctly?
Xorg.0.log:
------------------------------------------------------------------------
(II) config/udev: Adding input device eGalax Touch Screen (/dev/input/event2)
(**) eGalax Touch Screen: Applying InputClass "evdev touchscreen catchall"
(**) eGalax Touch Screen: Applying InputClass "touchscreen catchall"
(II) LoadModule: "evtouch"
(II) Loading /usr/lib/xorg/modules/input/evtouch_drv.so
(II) Module evtouch: vendor="Kenan Esau"
compiled for 1.7.6, module version = 0.8.8
Module class: X.Org XInput Driver
ABI class: X.Org XInput driver, version 7.0
State: S_UNTOUCHED Action: No Action Button: 0
State: S_TOUCHED Action: No Action Button: 0
State: S_LONGTOUCHED Action: down Button: 1
State: S_MOVING Action: No Action Button: 0
State: S_MAYBETAPPED Action: click Button: 1
State: S_ONEANDAHALFTAP Action: down Button: 3
(**) EVTouch TouchScreen: always reports core events
(II) XINPUT: Adding extended input device "EVTouch TouchScreen" (type: TOUCHSCREEN)
(**) Option "Device" "/dev/input/event2"
(II) EVTouch TouchScreen: Found absolute axes
(II) config/udev: Adding input device eGalax Touch Screen (/dev/input/mouse0)
(**) eGalax Touch Screen: Applying InputClass "touchscreen catchall"
State: S_UNTOUCHED Action: No Action Button: 0
State: S_TOUCHED Action: No Action Button: 0
State: S_LONGTOUCHED Action: down Button: 1
State: S_MOVING Action: No Action Button: 0
State: S_MAYBETAPPED Action: click Button: 1
State: S_ONEANDAHALFTAP Action: down Button: 3
(**) EVTouch TouchScreen: always reports core events
(II) XINPUT: Adding extended input device "EVTouch TouchScreen" (type: TOUCHSCREEN)
(**) Option "Device" "/dev/input/mouse0"
(EE) ioctl EVIOCGNAME failed: Inappropriate ioctl for device
Unable to query/initialize EVTouch hardware.
[dix] couldn't enable device 11
(EE) Couldn't init device "eGalax Touch Screen"
(II) UnloadModule: "evtouch"
--------------------------------------------------------------------------------------------
xinput shows 4 touchscreens and only this with id=10 somehow works (generates click on same position every time), device with id=13 is enabled, but gives no output, devices 11 and 14 are disabled and try to get them enable restarts gdm.
--------------------------------------------------------------------------------------------
lucid@lucid-desktop:~$ xinput list
⥠Virtual core pointer id=2 [master pointer (3)]
â âł Virtual core XTEST pointer id=4 [slave pointer (2)]
â âł Logitech USB-PS/2 Optical Mouse id=8 [slave pointer (2)]
â âł EVTouch TouchScreen id=10 [slave pointer (2)]
â âł EVTouch TouchScreen id=13 [slave pointer (2)]
â âł EVTouch TouchScreen id=11 [slave pointer (2)]
â âł EVTouch TouchScreen id=14 [slave pointer (2)]
⣠Virtual core keyboard id=3 [master keyboard (2)]
âł Virtual core XTEST keyboard id=5 [slave keyboard (3)]
âł LITEON Technology USB Multimedia Keyboard id=6 [slave keyboard (3)]
âł LITEON Technology USB Multimedia Keyboard id=7 [slave keyboard (3)]
âł gpio-keys id=9 [slave keyboard (3)]
âł mxc_power_key id=12 [slave keyboard (3)]
lucid@lucid-desktop:~$ xinput list-props 10
Device 'EVTouch TouchScreen':
Device Enabled (115): 1
Device Accel Profile (237): 0
Device Accel Constant Deceleration (238): 1.000000
Device Accel Adaptive Deceleration (240): 1.000000
Device Accel Velocity Scaling (241): 10.000000
lucid@lucid-desktop:~$ xinput list-props 11
Device 'EVTouch TouchScreen':
Device Enabled (115): 0
Device Accel Profile (237): 0
Device Accel Constant Deceleration (238): 1.000000
Device Accel Adaptive Deceleration (240): 1.000000
Device Accel Velocity Scaling (241): 10.000000
lucid@lucid-desktop:~$ xinput list-props 13
Device 'EVTouch TouchScreen':
Device Enabled (115): 1
Device Accel Profile (237): 0
Device Accel Constant Deceleration (238): 1.000000
Device Accel Adaptive Deceleration (240): 1.000000
Device Accel Velocity Scaling (241): 10.000000
lucid@lucid-desktop:~$ xinput list-props 14
Device 'EVTouch TouchScreen':
Device Enabled (115): 0
Device Accel Profile (237): 0
Device Accel Constant Deceleration (238): 1.000000
Device Accel Adaptive Deceleration (240): 1.000000
Device Accel Velocity Scaling (241): 10.000000
lucid@lucid-desktop:~$ xinput test 10
motion a[0]=1023 a[1]=767
motion a[0]=1023 a[1]=767
motion a[0]=1023 a[1]=767
motion a[0]=1023 a[1]=767
motion a[0]=1023 a[1]=767
button press 1 a[0]=1023 a[1]=767
button release 1 a[0]=1023 a[1]=767
motion a[0]=1023 a[1]=767
motion a[0]=1023 a[1]=767
motion a[0]=1023 a[1]=767
motion a[0]=1023 a[1]=767
motion a[0]=1023 a[1]=767
button press 1 a[0]=1023 a[1]=767
button release 1 a[0]=1023 a[1]=767
^C
lucid@lucid-desktop:~$ xinput test 13
^C
lucid@lucid-desktop:~$
--------------------------------------------------------------------------------------------
Thanks for any advice.
Regards
Maciej Łaski
Hello,
comment to my prevoius post:
imx53qsb with ubuntu 10.04 and MCIMX-LVDS1 touchscreen
Regards
Maciej Łaski
Hi Lieven,
Nice to know you got your touchscreen work!
Srikanth,
I didn´t have success when trying to use ts_calibrate (I don´t know why it returns wrong values)
Try to use evtest /dev/input/<your touch device>
after call it, move your pointer to the screen corners. It will return the raw coordinates to add on your xorg.conf.
IMPORTANT: If you´re using Ubuntu, you will need to shutdown gdm before call evtest.
I haven't found any better way to calibrate touchscreens on Ubuntu so far.
Rgds
Rogerio
Ok, thank you very very much for your help. I have been sweating on this. I did not wanted to use the x11 because I want to keep my system as simple as possible.
I tried the suggestion of Mateen to check the output of your touchscreen. As suspected the thing was generating multitouch output. Probably something inflexion ui cannot cope with. So I just added the
#define FORCE_SINGLE_POINTER_SUPPORT line to my egalax_ts.c and recompiled the kernel. Uploaded the uImage and know it is working. It's a nice nye present for me :)
thank you very much all!
Rogerio,
I am into some what same situation here, I have L2.6.35_11.09 up and running on i.MX53 QSB, My MCIMX-LVDS is detected while bootup :
---------------------------------------------------------
input: eGalax Touch Screen as /devices/platform/imx-i2c.2/i2c-2/2-0004/input/input1
I: Bus=0018 Vendor=0eef Product=0020 Version=0001
N: Name="eGalax Touch Screen"
P: Phys=I2C
S: Sysfs=/devices/platform/imx-i2c.2/i2c-2/2-0004/input/input1
U: Uniq=
H: Handlers=mouse0 event1
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003
------------------------------------------------------
with xorg.conf :
Section "InputDevice"
Identifier "touchscreen"
Driver "evtouch"
Option "Device" "/dev/input/event1"
Option "DeviceName" "touchscreen"
Option "MinX" "0"
Option "MinY" "0"
Option "MaxX" "32767"
Option "MaxY" "32767"
Option "ReportingMode" "Raw"
Option "Emulate3Buttons" "false"
Option "Emulate3Timeout" "50"
Option "SendCoreEvents" "On"
EndSection
The "ts_caliberate" runs perfectly :
-------------------
root@FS-iMX53_QSB:~# ts_calibrate
xf86TslibControlProc
xres = 1024, yres = 768
Took 4 samples...
Top left : X = 1880 Y = 2208
Took 2 samples...
Top right : X = 31016 Y = 2448
Took 2 samples...
Bot right : X = 31216 Y = 30480
Took 5 samples...
Bot left : X = 1584 Y = 30032
Took 13 samples...
Center : X = 16608 Y = 16288
-6.422241 0.031442 0.000053
-1.030273 -0.000281 0.023918
Calibration constants: -420888 2060 3 -67520 -18 1567 65536
-------------------
But when I launch X session, I am not able to get calibrated pointer on touchscreen and behaving somewhat strangely, the cursor calibration is already is feeded in xorg.conf, but still I am not able to get proper calibration.
Any comments would be helpful.
Thanks.
Srikanth
You can check the manual: i.MX5x_EVK_Ubuntu_10.04_StartupGuide.pdf, page 21. It says:
If your LVDS uses eGalax touch screen, do as the followings:
• vi drivers/input/touchscreen/egalax_ts.c and enable single pointer support:
#define FORCE_SINGLE_POINTER_SUPPORT
• Please check /var/log/Xorg.0.log and search “eGalax” to get right /dev/input path. Then modify /etc/X11/xorg.conf:
Section "InputDevice"
Identifier "touchscreen"
Driver "evtouch"
Option "Device" "/dev/input/event2"
Option "DeviceName" "touchscreen"
Option "MinX" "0"
Option "MinY" "0"
Option "MaxX" "32767"
Option "MaxY" "32767"
Option "ReportingMode" "Raw"
Option "Emulate3Buttons" "false"
Option "Emulate3Timeout" "50"
Option "SendCoreEvents" "On"
EndSection
Check the manual for a complete reference.
Rgds,
Rogerio
Hi Rogerio,
I am trying to enable the touch screen for the imx6 sabreAuto but so far without success. I am using Yocto to build the Linux Image and followed the steps you mentioned before (modifying the kernel driver and the xorg configuration) as you can see in the following log:
~# cat /etc/X11/xorg.conf.d/50-egalax.conf
Section "InputDevice"
Identifier "touchscreen"
Driver "evtouch"
Option "Device" "/dev/input/event1"
Option "DeviceName" "touchscreen"
Option "MinX" "0"
Option "MinY" "0"
Option "MaxX" "32767"
Option "MaxY" "32767"
Option "ReportingMode" "Raw"
Option "Emulate3Buttons" "false"
Option "Emulate3Timeout" "50"
Option "SendCoreEvents" "On"
EndSection
root@imx6qsabreauto:~# cat /var/log/Xorg.0.log | grep -i egalax
[993426.521] (II) config/udev: Adding input device eGalax Touch Screen (/dev/input/event1)
[993426.521] (**) eGalax Touch Screen: Applying InputClass "evdev touchscreen catchall"
[993426.521] (II) Using input driver 'evdev' for 'eGalax Touch Screen'
[993426.521] (**) eGalax Touch Screen: always reports core events
[993426.521] (**) evdev: eGalax Touch Screen: Device: "/dev/input/event1"
[993426.521] (--) evdev: eGalax Touch Screen: Vendor 0xeef Product 0x20
[993426.521] (--) evdev: eGalax Touch Screen: Found absolute axes
[993426.521] (--) evdev: eGalax Touch Screen: Found x and y absolute axes
[993426.521] (--) evdev: eGalax Touch Screen: Found absolute touchscreen
[993426.521] (II) evdev: eGalax Touch Screen: Configuring as touchscreen
[993426.521] (**) evdev: eGalax Touch Screen: YAxisMapping: buttons 4 and 5
[993426.521] (**) evdev: eGalax Touch Screen: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[993426.521] (II) XINPUT: Adding extended input device "eGalax Touch Screen" (type: TOUCHSCREEN, id 7)
[993426.521] (II) evdev: eGalax Touch Screen: initialized for absolute axes.
[993426.522] (**) eGalax Touch Screen: (accel) keeping acceleration scheme 1
[993426.522] (**) eGalax Touch Screen: (accel) acceleration profile 0
[993426.522] (**) eGalax Touch Screen: (accel) acceleration factor: 2.000
[993426.522] (**) eGalax Touch Screen: (accel) acceleration threshold: 4
[993426.523] (II) config/udev: Adding input device eGalax Touch Screen (/dev/input/mouse0)
root@imx6qsabreauto:~#
One interesting point to notice is that the first time I touch the screen, the arrow pointer disappear. BTW, this is the bug I am working on https://bugzilla.yoctoproject.org/show_bug.cgi?id=3573
Any idea what about this issue?
Hi Leonardo,
Is the problem still present in your case? I'm also trying to enable the MCIMX-LVDS1 on my imx6 SABRE Auto with a YOCTO Build of fsl-image-gui... no success.
Do you have any clues?
I also get already input data over evtest but the cursor doesn't move on the screen (at the moment it is running the sato gui)
Best regards
Florian
Hi Florian. Let me check this next week. I let you know.
Leo
Oh, perfectly. Thanks! I also already reopened the Ticket on Bugzilla regarding the MCIMX-LVDS1 on the: https://bugzilla.yoctoproject.org/show_bug.cgi?id=3573
If you need any additional logs etc. I will send them to you as fast as I can.
Best regards
Flo
Hi Leonardo,
Unfortunately I dont have any idea. There is a long time I don t work with touchscreen.
Rgds,
Rogerio
@ Lieven.. Can you add following lines in the file framework_linux_generic.c and try the application again after rebuilding it.
Function PL_Process_Input_Events, just immediately after the while loop:
printf("Device Name = %s -- Input event -- event.type = %d event.value = %d event.code = %d eventCount = %d \r\n", dev->name, event.type, event.value, event.code, eventCount);
Function IFXF_Event_Handler, just after “case IFXFTouchDown:”
printf("%s %d (x,y)=(%d,%d))\r\n", __FUNCTION__, __LINE__, msg_buf[1], msg_buf[2]);
Once you run the updated application, try tapping on the touchscreen and then send us the serial output.
Ok, I tried compiling, I left the keyboard and the mouse out of the kernel options. (So only touchscreen) The screen is clearly recognized by my linux on /dev/input/event0. I used the new inflexion 2.4 setup (which gives me a demo application of 1024x768px instead of the 800x600 in the 2.3. But the touchscreen still does not work.
I hope somebody has a clue what to do.
Lieven said:
Thanks for the reply! I double checked my kernel configuration and the multitouch eGalax is enabled. I'm trying to build with tablet package enabled now. I have no clue what to do :)
Thanks for the reply! I double checked my kernel configuration and the multitouch eGalax is enabled. I'm trying to build with tablet package enabled now. I have no clue what to do :)
Hi Lieven,
I think the kernel is not built with dual touch display enabled by default. It's currently configured to be used with resistive touch screen.
I guess there are some instructions on i.MX53 QSB Ubuntu manual about how to configure kernel for dual touch displays.
Rgds
Rogerio