Elo TouchScreen ET1515L and OpenSuSE 11.3

Hi Everyone,

Using a combination of various google’d posts from other sites, I’ve been able to cobble together something that kinda works, except that the mouse cursor fails to move/respond when the screen is touched.

My relevant configuration entries for the /etc/X11/xorg.conf file as as follows:

Section “ServerLayout”
Identifier “X.org Configured”
Screen 0 “Screen0” 0 0
InputDevice “Mouse0” “CorePointer”
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “TouchScreen” “SendCoreEvents”
EndSection

Section “Module”
Load “dri2”
Load “glx”
Load “extmod”

Load “vnc” # TODO: Commented out, as Xvnc fails to work.

    Load  "dbe"
    Load  "dri"
    Load  "elographics"

EndSection

Section “InputDevice”
Identifier “TouchScreen”
Driver “elographics”
Option “DeviceName” “Elo”
Option “Device” “/dev/ttyS0”
Option “Port” “/dev/ttyS0”
Option “AlwaysCore”
Option “CorePointer” “true”
Option “screenno” “0”
Option “MinX” “0”
Option “MaxX” “4000”
Option “MinY” “0”
Option “MaxY” “4000”
Option “UntouchDelay” “3”
Option “ReportDelay” “1”
Option “debuglevel” “5”
EndSection

The Log file outputs:

3778.568] (==) ServerLayout “X.org Configured”
3778.568] () |–>Screen “Screen0” (0)
3778.568] (
) | |–>Monitor “Monitor0”
3778.568] () | |–>Device “Card0”
3778.568] (
) |–>Input Device “Mouse0”
3778.568] () |–>Input Device “Keyboard0”
3778.568] (
) |–>Input Device “TouchScreen”
3778.569] () Option “BlankTime” “0”
3778.569] (
) Option “StandbyTime” “0”
3778.569] () Option “SuspendTime” “0”
3778.569] (
) Option “OffTime” “0”
3778.569] () Option “Xinerama” “On”
3778.569] (
) Option “IgnoreABI” “True”
3778.569] () Ignoring ABI Version
3778.569] (==) Automatically adding devices
3778.569] (==) Automatically enabling devices
3778.569] (
) Xinerama: enabled

3778.613] (II) LoadModule: “elographics”
3778.614] (II) Loading /usr/lib/xorg/modules/input/elographics_drv.so
3778.614] (II) Module elographics: vendor=“X.Org Foundation”
3778.615] compiled for 1.8.0, module version = 1.2.3
3778.615] Module class: X.Org XInput Driver
3778.615] ABI class: X.Org XInput driver, version 9.0

3778.619] (II) LoadModule: “elographics”
3778.619] (II) Reloading /usr/lib/xorg/modules/input/elographics_drv.so
3778.619] (II) VESA: driver for VESA chipsets: vesa
3778.619] (–) using VT number 4
3778.620] (II) Primary Device is: PCI 01@00:00:0

3779.383] (II) VESA(0): Monitor name: ET1515L-8CWC
3779.383] (II) VESA(0): Ranges: V min: 55 V max: 75 Hz, H min: 31 H max: 60 kHz, PixClock max 80 MHz
3779.383] (II) VESA(0):
3779.383] (II) VESA(0): EDID (in hex):
3779.383] (II) VESA(0): 00ffffffffffff00158f891118060000
3779.384] (II) VESA(0): 011201036e1e1778ea6d8c9859509326
3779.388] (II) VESA(0): 204c52bfee00314f454f614f01010101
3779.388] (II) VESA(0): 01010101010164190040410026301888
3779.388] (II) VESA(0): 3600000000000000000000fc00455431
3779.388] (II) VESA(0): 3531354c2d384357430a000000fd0037
3779.388] (II) VESA(0): 4b1f3c080000000000000000000000fe
3779.388] (II) VESA(0): 00200a0a0a0a0a0a0a0a0a0a0a0a00c7
3779.388] (II) VESA(0): EDID vendor “ELO”, prod id 4489

3780.364] () Option “AlwaysCore”
3780.364] (
) Option “SendCoreEvents”
3780.364] () Option “CorePointer” “False”
3780.364] (
) TOUCHSCREEN: doesn’t report core events
3780.364] () Option “DeviceName” “Elo”
3780.364] (
) Elographics X device name: Elo
3780.364] () Option “ScreenNo” “0”
3780.364] (
) Elographics associated screen: 0
3780.364] () Option “UntouchDelay” “3”
3780.364] (
) Elographics untouch delay: 30 ms
3780.364] () Option “ReportDelay” “1”
3780.364] (
) Elographics report delay: 10 ms
3780.364] () Option “MaxX” “4000”
3780.364] (
) Elographics maximum x position: 4000
3780.365] () Option “MinX” “0”
3780.365] (
) Elographics minimum x position: 0
3780.365] () Option “MaxY” “4000”
3780.365] (
) Elographics maximum y position: 4000
3780.365] () Option “MinY” “0”
3780.365] (
) Elographics minimum y position: 0
3780.365] () Option “DebugLevel” “5”
3780.365] (
) Elographics debug level sets to 5
3780.365] () Elographics device will work in Landscape mode
3780.365] (II) XINPUT: Adding extended input device “Elo” (type: Elographics TouchScreen)
3780.365] Elographics touchscreen init…
3780.365] Done.
3780.365] [mi] miSpriteRealizeCursor called for floating device.
3780.365] [mi] miSpriteRealizeCursor called for floating device.
3780.365] [mi] miSpriteRealizeCursor called for floating device.
3780.365] Elographics touchscreen on…
3780.365] Elographics touchscreen opening : /dev/ttyS0
3780.365] (
) Option “Device” “/dev/ttyS0”
3780.366] () Option “BaudRate” “9600”
3780.366] (
) Option “StopBits” “1”
3780.366] () Option “DataBits” “8”
3780.366] (
) Option “Parity” “None”
3780.366] () Option “Vmin” “10”
3780.366] (
) Option “Vtime” “1”
3780.366] (**) Option “FlowControl” “None”
3780.366] Sending packet : 0x55 0x70 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x6F
3780.366] , 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fWaiting a ‘P’ reply
3780.366] Waiting 100 ms for data from port
3780.392] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
3780.392] buffer_p is 0, Trying to read 10 bytes from link
3780.404] Read 10 bytes
3780.404] 0x55–>0xFF 0x50–>0x4F 0x30–>0x7F 0x5–>0x84 0x4–>0x88 0x0–>0x88 0x0–>0x88 0x0–>0x88 0x0–>0x88 Expecting checksum 136, got 136
3780.404] Waiting a ‘A’ reply
3780.404] Waiting 100 ms for data from port
3780.404] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
3780.404] buffer_p is 0, Trying to read 10 bytes from link
3780.412] Read 10 bytes
3780.412] 0x55–>0xFF 0x41–>0x40 0x30–>0x70 0x30–>0xA0 0x30–>0xD0 0x30–>0x0 0x0–>0x0 0x0–>0x0 0x0–>0x0 Expecting checksum 0, got 0
3780.412] Sending packet : 0x55 0x69 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x68
3780.412] , 0x69, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x68Waiting a ‘I’ reply
3780.412] Waiting 100 ms for data from port
3780.441] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
3780.441] buffer_p is 0, Trying to read 10 bytes from link
3780.448] Read 10 bytes
3780.448] 0x55–>0xFF 0x49–>0x48 0x32–>0x7A 0x30–>0xAA 0x90–>0x3A 0x9–>0x43 0x1–>0x44 0xF–>0x53 0x20–>0x73 Expecting checksum 115, got 115
3780.448] Waiting a ‘A’ reply
3780.448] Waiting 100 ms for data from port
3780.448] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
3780.448] buffer_p is 0, Trying to read 10 bytes from link
3780.456] Read 10 bytes
3780.456] 0x55–>0xFF 0x41–>0x40 0x30–>0x70 0x30–>0xA0 0x30–>0xD0 0x30–>0x0 0x0–>0x0 0x0–>0x0 0x0–>0x0 Expecting checksum 0, got 0
3780.456] (–) Elographics touchscreen is a Intellitouch, connected through a serial link.
3780.456] (–) The controller is a model E271-2200, firmware revision 1.9.
3780.456] (–) Additional features:
3780.456] (–) External A/D converter
3780.456] (–) Z axis active
3780.456] Sending packet : 0x55 0x4D 0x0 0x7 0x40 0x0 0x0 0x0 0x0 0x93
3780.456] , 0x4d, 0x0, 0x7, 0x40, 0x0, 0x0, 0x0, 0x0, 0x93Waiting a ‘A’ reply
3780.456] Waiting 100 ms for data from port
3780.492] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
3780.492] buffer_p is 0, Trying to read 10 bytes from link
3780.496] Read 10 bytes
3780.496] 0x55–>0xFF 0x41–>0x40 0x30–>0x70 0x30–>0xA0 0x30–>0xD0 0x30–>0x0 0x0–>0x0 0x0–>0x0 0x0–>0x0 Expecting checksum 0, got 0
3780.496] Sending packet : 0x55 0x42 0x3 0x1 0x0 0x0 0x0 0x0 0x0 0x45
3780.496] , 0x42, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45Waiting a ‘A’ reply
3780.496] Waiting 100 ms for data from port
3780.524] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
3780.524] buffer_p is 0, Trying to read 10 bytes from link
3780.532] Read 10 bytes
3780.532] 0x55–>0xFF 0x41–>0x40 0x30–>0x70 0x30–>0xA0 0x30–>0xD0 0x30–>0x0 0x0–>0x0 0x0–>0x0 0x0–>0x0 Expecting checksum 0, got 0
3780.532] Done

Again, I’ve trimmed out all the non-elo related cruft to try to keep this post small, if more of the log file is required I can post those specific sections.

Because I have the debug level set, when I run my finger across the screen I see the following output in the /var/log/Xorg.0.log file:

5711.976] Entering ReadInput
5711.976] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
5711.976] buffer_p is 0, Trying to read 10 bytes from link
5711.984] Read 10 bytes
5711.984] 0x55–>0xFF 0x54–>0x53 0x1–>0x54 0x64–>0xB8 0x2–>0xBA 0x92–>0x4C 0xA–>0x56 0xFF–>0x55 0x0–>0x55 Expecting checksum 85, got 85
5711.984] EloConvert Before Fix: Screen(0) - x(612), y(2706)
5711.984] EloConvert: Screen(0) - v0(612), v1(2706)
5711.984] EloConvert: Screen(0) - x(156), y(249)
5711.984] EloConvert During Fix: Screen(0) - x(156), y(249)
5711.984] EloConvert After Fix: Screen(0) - x(156), y(249)
5711.984] TouchScreen: x(156), y(249), Press
5712.004] Entering ReadInput
5712.004] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
5712.004] buffer_p is 0, Trying to read 10 bytes from link
5712.012] Read 10 bytes
5712.012] 0x55–>0xFF 0x54–>0x53 0x2–>0x55 0x65–>0xBA 0x2–>0xBC 0x92–>0x4E 0xA–>0x58 0xFF–>0x57 0x0–>0x57 Expecting checksum 87, got 87
5712.012] EloConvert Before Fix: Screen(0) - x(613), y(2706)
5712.012] EloConvert: Screen(0) - v0(613), v1(2706)
5712.012] EloConvert: Screen(0) - x(156), y(249)
5712.012] EloConvert During Fix: Screen(0) - x(156), y(249)
5712.012] EloConvert After Fix: Screen(0) - x(156), y(249)
5712.012] TouchScreen: x(156), y(249), Stream
5712.012] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
5712.012] buffer_p is 0, Trying to read 10 bytes from link
5712.020] Read 10 bytes
5712.020] 0x55–>0xFF 0x54–>0x53 0x2–>0x55 0x65–>0xBA 0x2–>0xBC 0x91–>0x4D 0xA–>0x57 0xFF–>0x56 0x0–>0x56 Expecting checksum 86, got 86
5712.020] EloConvert Before Fix: Screen(0) - x(613), y(2705)
5712.020] EloConvert: Screen(0) - v0(613), v1(2705)
5712.020] EloConvert: Screen(0) - x(156), y(249)
5712.020] EloConvert During Fix: Screen(0) - x(156), y(249)
5712.020] EloConvert After Fix: Screen(0) - x(156), y(249)
5712.020] TouchScreen: x(156), y(249), Stream
5712.036] Entering ReadInput
5712.036] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
5712.036] buffer_p is 0, Trying to read 10 bytes from link
5712.044] Read 10 bytes

5712.148] 0x55–>0xFF 0x54–>0x53 0x2–>0x55 0x65–>0xBA 0x2–>0xBC 0x8B–>0x47 0xA–>0x51 0xFF–>0x50 0x0–>0x50 Expecting checksum 80, got 80
5712.148] EloConvert Before Fix: Screen(0) - x(613), y(2699)
5712.148] EloConvert: Screen(0) - v0(613), v1(2699)
5712.148] EloConvert: Screen(0) - x(156), y(250)
5712.148] EloConvert During Fix: Screen(0) - x(156), y(250)
5712.148] EloConvert After Fix: Screen(0) - x(156), y(250)
5712.148] TouchScreen: x(156), y(250), Stream
5712.180] Entering ReadInput
5712.180] Entering xf86EloGetPacket with checksum == 170 and buffer_p == 0
5712.180] buffer_p is 0, Trying to read 10 bytes from link
5712.188] Read 10 bytes
5712.188] 0x55–>0xFF 0x54–>0x53 0x4–>0x57 0x65–>0xBC 0x2–>0xBE 0x8B–>0x49 0xA–>0x53 0x0–>0x53 0x0–>0x53 Expecting checksum 83, got 83
5712.188] EloConvert Before Fix: Screen(0) - x(613), y(2699)
5712.188] EloConvert: Screen(0) - v0(613), v1(2699)
5712.188] EloConvert: Screen(0) - x(156), y(250)
5712.188] EloConvert During Fix: Screen(0) - x(156), y(250)
5712.188] EloConvert After Fix: Screen(0) - x(156), y(250)
5712.188] TouchScreen: x(156), y(250), Release

This tells me the driver is loaded, but somewhere there is a disconnect and the events are not being transmitted to the Core Pointer facility. I suspect that the following error in the log file (during hardware initializations in X) may be the root of my problem:

3780.364] (**) TOUCHSCREEN: doesn’t report core events

Any ideas/help would be much appreciated, thank you.

I have resolved my own issue, I had to change the following two lines:

InputDevice “Mouse0” “SendCoreEvents”
InputDevice “TouchScreen” “CorePointer”