Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
I´m trying to get this ELO touchscreen (ELO 1229L using the 2500U USB controller) to work in linux. I´ve already setup X to use the second display, but I´m having some difficulty getting the touch input setup. I have a linux driver for the monitor which I´ve compiled and installed and now I just need get the driver to talk to the device.
The problem is that I don´t know what /dev name to use. All the documentation for the touchscreens assume that one is using the RS232 version of the screen which plugs into a normal serial port so it talks on /dev/ttyS0. But what should I use for the USB device?
The usbserial kernel module claims to use /dev/ttyUSB0-255 but they didn´t exist on my machine so I used
mknod /dev/ttyUSB0 c 188 0
as directed by the kernel documentation. But when I tell the driver to use that, it gives me "System error while sending to Elographics touchscreen".
Are there any other /dev names that I can try?
Is there anyway of finding out to which /dev name a specific device is linked to? Programs like usbview does show the touchscreen USB device plugged in but doesn´t tell me which /dev name it´s using.
lsusb output:
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 003: ID 04e7:0007 Elo TouchSystems
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
After scratching around in about 100 other websites, text files, c-source files etc, I eventually discovered that the device I needed to talk to is /dev/input/event2.
# cat /proc/bus/input/devices
shows which handlers are used for the input device. These are all dev files in the /dev/input directory.
I also discovered, after listing /usr/X11R6/lib/modules/input/ that I was using the wrong driver name! The docs that came with the driver focusses on the RS232 serial version of the touchscreen and said to use "elographics" as driver in the XFree86/Xorg conf file. But it should actually be "elousb".
Congrats on solving the problem ZX_SA and thanks for posting back with the solution that worked for you. That will be a big help to future readers who might have the same question -- J.W.
I am also trying to use an elo touch, but can't get it to work. I am using debian testing and XFree86 4.5.0. I tried using the eloinput driver that comes with 4.5.0, but that didn't work. I also used elousb which I compiled against XFree86 4.5.0,
but the xf86 logs said that it can not open the serial device (?). I though the elousb driver was for usb devices?
Sorry for the late reply, I was out of town for a few weeks.
It seems like you may be telling the driver to use the wrong device. Don't worry about it complaining about a "serial" device. Remember that USB stands for Universal Serial Bus.
In your XF86Config file (or Xorg config file), you need to tell the driver which device to use. This is done in the touchscreen's input device section with a line similar to this:
Code:
Option "Device" "/dev/input/event4"
To find out which device your touchscreen uses, use the following command:
Code:
cat /proc/bus/input/devices
It will give a result similar to the following for all your input devices (keyboards, mice, etc):
Handlers=event4 tell you which device to use. For this example, the device is /dev/input/event4.
Also, note that the elousb driver on ELO's website contains bugs. It will look for the X axis information in the wrong place. At least, it does for my touch controller (the 2500U). If you PM me your email address, I'll send you a copy of my "fixed" elousb driver.
Since I've had a colleage complaining about a similar issue today, I've changed the elousb driver to scan /proc/bus/input/devices to automatically find the correct /dev/input/eventX device name. So it's no longer necessary to specify it in the xf86config file.
If anyone is interested in my version of the elousb driver, PM me an email address. A warning though: I do not offer any support and I do not assume any responsibility for any damage, difficulty, problems suffered due to using my driver. I may also make the driver available on my website in the near future. When I do, and remember about this, I'll post a link here.
ZX_SA, I can't pm but I would love to see the code for the driver. My email
is steve at nothinbut dot net. I am thinking about writing a driver for the elo touch under qt-embedded. If you are interested in tackling this project together, let me know.
It seems that there are a number of people interested in a working driver for ELO USB touchscreens. Therefore, I have now added a tarball of my driver to my website: http://www.softcoded.net/eduard/elousb.html
Use the original driver then. I've heard from one other person that came across a touchscreen that has that problem. There seems to be different versions of firmware used in the touchscreens.
To compile the original driver you can still use the directions in the readme file in my tarball. Just replace the source files with the originals.
I also have working the Elo Touchscreen 2216 (USB) using the elousb original driver with the Debian 3.1 distribution (Kernel 2.6.8).
Well, I should say "not completly working". When I move the "touch" up, the cursor moves down. Also the cursor position is not corresponding with the "touch" position". This seems to be a calibration problem, except perhaps for the down - up problem.
There are some tools to help you calibrate the screen, but I think these were written for the serial version (instead of the USB version). With my LCD screens I found that if I simply tell the driver to use the maximum values for each axis, it maps quite nicely (and is well calibrated).
You can change the values in the Xorg.conf (Xf86config) file. You should have a InputDevice section for the touchscreen and there are some options for the driver that you can specify here. The ones you'll need now are:
MinX, MaxX, MinY, MaxY -- Play with these to do the calibration. I simply used 0-4095 for both the X and Y axes and it works fine.
To flip the Y axis I *think* you can simply make MinY=4096 and MaxY=0. I think I did something like that when I first started playing with the elousb driver, but I can't promise you that it will work.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.