LVDS touchscreen on inflexionui_demo

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LVDS touchscreen on inflexionui_demo

5,725 Views
Lyven
Contributor II

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

Tags (1)
16 Replies

3,448 Views
SrikantKrishnak
Contributor I

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

0 Kudos
Reply

3,448 Views
bamboosso
Contributor II

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


0 Kudos
Reply

3,448 Views
bamboosso
Contributor II

Hello,

comment to my prevoius post:

imx53qsb with ubuntu 10.04 and MCIMX-LVDS1 touchscreen

Regards

Maciej Łaski

0 Kudos
Reply

3,448 Views
rogerio_silva
NXP Employee
NXP Employee

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

0 Kudos
Reply

3,448 Views
Lyven
Contributor II

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!

0 Kudos
Reply

3,448 Views
SrikantKrishnak
Contributor I

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

0 Kudos
Reply

3,448 Views
rogerio_silva
NXP Employee
NXP Employee

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

0 Kudos
Reply

3,448 Views
LeonardoSandova
Specialist I

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?

0 Kudos
Reply

3,448 Views
florianl
Contributor III

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

0 Kudos
Reply

3,448 Views
LeonardoSandova
Specialist I

Hi Florian. Let me check this next week. I let you know.

Leo

0 Kudos
Reply

3,448 Views
florianl
Contributor III

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

0 Kudos
Reply

3,448 Views
rogerio_silva
NXP Employee
NXP Employee

Hi Leonardo,

Unfortunately I dont have any idea. There is a long time I don t work with touchscreen.

Rgds,

Rogerio

0 Kudos
Reply

3,448 Views
MateenHasan
Contributor I

@ 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.

0 Kudos
Reply

3,448 Views
Lyven
Contributor II

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 :)

0 Kudos
Reply

3,448 Views
Lyven
Contributor II

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 :)

0 Kudos
Reply

3,448 Views
rogerio_silva
NXP Employee
NXP Employee

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

0 Kudos
Reply