ELO touchscreen

From LinuxMCE
Revision as of 07:52, 19 August 2009 by Simon b (Talk | contribs)

Jump to: navigation, search


In 8.10 Intelli Touch from ELO is supported out-of-the-box thru evdev driver.

Sometimes the X and Y axes might be swapped, so you will need to use the evtouch driver to deal with it... Works great, no hard work...

   Following tutorial comes from Ubuntu forum, thanks to life4himsq!

First you need to find out where the usb is located in the system. Type this in the console.

   cat /proc/bus/input/devices

Should return a lot of stuff and one section should have the name of your monitor. Here is what I got.

   I: Bus=0003 Vendor=04e7 Product=0007 Version=0100
   N: Name="Elo TouchSystems, Inc. Elo TouchSystems IntelliTouch 2500U"
   P: Phys=usb-0000:00:02.0-4/input0
   S: Sysfs=/devices/pci0000:00/0000:00:02.0/usb2/2-4/2-4:1.0/input/input6
   U: Uniq=070kodak
   H: Handlers=mouse2 event6 js0
   B: EV=1b
   B: KEY=10000 0 0 0 0
   B: ABS=10000000003
   B: MSC=10


The event# on the Handlers= line will be used later. If you want to make sure you have the right number, you can type cat /dev/input/event6 replacing 6 with the number you found on yours. If you want to make sure you found the right event number, just type this into a console and touch the screen. Again, change the 6 to the number you found above.

Quote:

   cat /dev/input/event6

You should see a lot of random stuff fly up the console.


Following all the other formums, I ended up using driver xserver-xorg-input-evtouch. I have not tested to see if xserver-xorg-input-elographics works with the way I am doing it. You can try either one. You can install the driver with synaptic or the console. For the console just type

   sudo apt-get install xserver-xorg-input-evtouch


The xorg.conf might look like it is empty and not usable, but it is. I assume most of the info is missing because it is made up on the fly every time you boot so as to save clutter in the xorg.conf. You can edit xorg however you want to, I just typed "sudo gedit /etc/X11/xorg.conf" in a console. I put this near the top, right under the all the remarks and stuff.

Quote:

   Section "InputDevice"
     Identifier "touchscreen"
     Driver "evtouch"
     Option "device" "/dev/input/event6"
     Option "MinX" "0"
     Option "MinY" "0"
     Option "MaxX" "4096"
     Option "MaxY" "4096"
     Option "MoveLimit" "1"
     Option "sendCoreEvents" "On"
     Option "SwapY" "On"
     Option "SwapX" "On"
   EndSection


Add following to the

   Section "ServerLayout"
   InputDevice "touchscreen" "SendCoreEvents"

I had to play with the numbers for minx,y and maxx,y until the touch matched the screen. It really wasn't as hard as it sounds. FYI, I am running at 1024x768. Now just restart and it should work.



7.10 users please read the following

available starting with: LinuxMCE beta 4 only for the USB version of the touchscreen

The ELO touchscreen drivers only run on the 32 bit architecture (i386), not the 64-bit. You can install them on a media director that is 32 bit even if the core is 64 bit. Just be sure the architecture for the media director is i386 and not amd64.

To install the ELO touchscreen drivers in LinuxMCE 0710, run this command:

apt-get install elo-touchscreen

and reboot the computer.

The commands for running the calibration utility are:

cd /elo
./elova -u

These must the run under X.

   THE ABOVE SOLUTION ON MY 7.10 RC1 DID NOT WORK... SO i had to reinstall the MD, and use this solution 
   (taken from: http://ubuntuforums.org/showthread.php?t=579155 (thanks Chuy_Max!)
Elo Touch Screen Intelli Touch (USB)

First of all, this should work for touch screen monitors with IntelliTouch (Surface Acoustic Wave) technology, and hopefully other monitors.

www.elotouch.com offers you precompiled binaries for their monitors, unfortunately they just work for kernels <= 2.6.17. If you want them to compile for a special kernel/distro for you, they will charge you just a few $1,500 bucks (Hell no!, monitors I bought were expensive enough). I've found an open source driver called evtouch that works great in my PC (I'm using USB), so, let's begin.

1.-Sources, and an incomplete tutorial can be found here: http://stz-softwaretechnik.com/~ke/t...n/evtouch.html

Basic installation is copied from the website, but added my monitor's right values for xorg.conf, and udev-rules so the right events are triggered. 2.-The specs of the monitor I used, plus my PC specs:

   * Elo Touch Screen monitor with IntelliTouch (Surface Acoustic Wave). Model 1939L, I used USB although monitor also has Serial interface.
   * Linux ubuntu 2.6.20-16-generic #2 SMP Sun Sep 23 19:50:39 UTC 2007 i686 GNU/Linux
   * Ubuntu 7.04 Feisty Fawn
   * CPU: Intel P4 3Ghz with HT


3.-Why this guide? This guide is meant to help people install touch screen monitors that use IntelliTouch technology (Surface Acoustic Wave), hopefully, other technologies will also work, although I don't have the hardware to test it. This guide was also meant to complement the source's website, as it lacked right values for Elo Touch monitor, and tutorial didn't mention udev-rules, which are needed to set the right handlers for the linux kernel. 4.-Things you need: I used the precompiled binaries, you can find them in the website I mentioned in the first point. The latest at the time I'm writing this is:

Precompiled driver for X V0.8.7

Also, you will need to copy udev-rules, the file you need can be found also in the same website, inside a sources tarball:

X driver sources V0.8.4

5.-Installation Download precompiled binaries.

Code:


   tar -zxvf evtouch-0.8.7.tar.gz
   cd evtouch-0.8.7
   sudo cp evtouch_drv.so /usr/lib/xorg/modules/input/

Open /etc/X11/xorg.conf and add this lines:

Code:


   Section "InputDevice"
    Identifier "touchscreen"
    Driver "evtouch"
    Option "Device" "/dev/input/evtouch_event"
    Option "DeviceName" "touchscreen"
    Option "MinX" "4095"
    Option "MinY" "4095"
    Option "MaxX" "0"
    Option "MaxY" "0"
    Option "ReportingMode" "Raw"
    Option "Emulate3Buttons"
    Option "Emulate3Timeout" "50"
    Option "SendCoreEvents" "On"
   EndSection


   Section "InputDevice"
    Identifier "dummy"
    Driver "void"
    Option "Device" "/dev/input/mice"
   EndSection

If Min/Max values don't work correctly for you, you'll have to adjust that values manually (calibration application doesn't work, the author of the sources himself has stated that, at least at the writing of this how to).

Now search for "ServerLayout" section in the same file, and add this lines just before EndSection

Code:

   InputDevice     "touchscreen"   "CorePointer"
   InputDevice     "dummy"

Note that Section "InputDevice" with Identifier "dummy" and InputDevice "dummy" are only needed if you use xorg > 7.2.

Next, you have to find your monitors name:

Code:

   cat /proc/bus/input/devices

you'll get something like this:

Code:


   I: Bus=0003 Vendor=04e7 Product=0020 Version=0100
   N: Name="Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface"
   P: Phys=usb-0000:00:10.1-1/input0
   S: Sysfs=/class/input/input2
   H: Handlers=js0 event2
   B: EV=b
   B: KEY=10000 0 0 0 0 0 0 0 0
   B: ABS=100 3

Next, you have to add udev-rules to your system, download and extract "X driver sources V0.8.4":

Code:

   tar -jxvf xf86-input-evtouch-0.8.4.tar.bz2
   cd xf86-input-evtouch-0.8.4

Modify 69-touchscreen.rules file for your monitor, check the bold letters (or if you are using the same monitor as me, I will paste my file for you):

Code:


   # Evtouch udev.rules
   #
   # Because Evtouch can't autoprobe devices we assume that we only
   # Have one device so we can make it like this :P
   #
   # List here your touchscreen, check if it works  and send it to rpms_AT_ilmi_DOT_fi
   # Name can be found in /proc/bus/input/devices (In console make command 'cat /proc/bus/input/devices')
   #
   # Tested on Telepeak  Model 800-Y-Y-V (http://www.telepeak.com). Should work on most eGalax based stuff!
   KERNEL=="event*", SUBSYSTEM=="input", ATTRS{name}=="Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB 
   Touchmonitor Interface", SYMLINK+="input/evtouch_event"
   #
   # This could be also like this (eGalax Inc. USB TouchController)
   # KERNEL=="event*", SUBSYSTEM=="input", ATTRS{idVendor}=="0eef", ATTRS{idProduct}=="0001", SYMLINK+="input/evtouch_event"
   #

Now, copy the file to /etc/udev/rules.d/

That should be it, restart your system, and it should work.