LG L1730SF touch screen setup in Ubuntu Dapper Drake 6.06

A few days ago I bought a 17" touch screen, LG L1730SF. This is an ordinary LCD panel from LG, but includes a resistive touch screen in an affordable price (about 400 euros in a Finnish web shop, http://www.verkkokauppa.com). I'm planning to put it somewhere in my house, probably hanging on a wall, and use it as a user interface to my Linux-based home server computer. Somewhat similar setup is described at http://www.viitalat.net, with the exactly same display model.

My server computer is running Ubuntu Dapper Drake 6.06, so I needed to make the the touch feature working with that distro. A tough fight it was! Since I couldn't find enough documentation from the web, I decided to post here what I did to make it work for me. Maybe this helps someone. It took two long nights to get it going, and I wrote this couple of days after the work - I hope I haven't missed anything.

Here's an image of the display (sorry about the bad image quality, I used my camera phone in a hurry):

The device has four connectors: power, analog VGA, USB, and RS-232 serial port. You hook it up to your computer just like a normal monitor, but if you intend to use the touch feature (well of course you do!) you need to use either one of the serial ports so that the computer can read the touch events. I used the USB. According to the manual, it is possible to control the monitor (turn power on/off, setup contrast, etc.) via using commands over RS-232 cable. I might use that feature later, but haven't tried it yet.

Making the display to work

After connecting power and VGA cables, I started the computer. Ubuntu desktop was showing nicely on my new LCD screen, but console screens did not! Apparently the display could not fix to the refresh rate my computer was using with console screen resolution. So I needed to change it. I found good instructions from here: http://www.ubuntuforums.org/showthread.php?p=1541970.

Basically, you need to edit grub boot loader's configuration file, and reboot the computer. Type sudo pico /boot/grub/menu.lst to open the file in a text editor, look for a line describing the boot configuration you are using, and add a parameter to set the screen resolution - I used "vga=0x317" to setup all consoles using 1024x768 resolution.

This is what I used to have there:

title Ubuntu, kernel 2.6.15-28-386
root (hd0,0)
kernel /boot/vmlinuz-2.6.15-28-386 root=/dev/md0 ro quiet splash
initrd /boot/initrd.img-2.6.15-28-386
savedefault
boot

I changed the line starting with "kernel" to this:

kernel /boot/vmlinuz-2.6.15-28-386 root=/dev/md0 ro quiet splash vga=0x317

Reboot. Console screens should appear nicely.

Testing the touch feature...

I found a couple of good web pages dealing with touch screens in Linux. I used them to get the basic understanding of what I need to do. You might wan't to check them out:
http://ubuntuforums.org/showthread.php?t=216047&page=2
http://stz-softwaretechnik.com/~ke/touchscreen/evtouch.html#config%22

As a first step, I connected the USB cable from the display to the computer, and checked if my computer can find it. Typing command lsusb should give an output similar to this:
Bus 001 Device 002: ID 0403:f9e9 Future Technology Devices International, Ltd
This means that the computer has found the touch screen USB device.

Next step is to check the driver modules. Type lsmod | grep usb to get a list of loaded modules with "usb" in their name. This is what I got:
usbcore 130820 3 itmtouch,uhci_hcd
Notice the term "itmtouch", that is the driver for the touch screen. (In Ubuntu Edge Eft 6.10, you'll probably see there usbtouchscreen - this is a newer, combined driver for different touch screens). If you see "itmtouch" or "usbtouchscreen", it means that the driver is already loaded. Unfortunately they don't work with this display. Dapper's version of itmtouch does create some output, but it is all wrong. Edgy's version of usbtouchscreen did not give me any output at all.

Removing the non-working driver

First, remove the USB cable so that the computer stops using the driver.

Type sudo rmmod itmtouch to unload the driver module.

Then cd /lib/modules/2.6.15-28-386/kernel/drivers/usb/input to go to the directory containing the driver file. Notice that you might have different kernel version, type uname -r to find it out and use that when cd'ing to the folder containing the driver file!

Rename the old driver so that it won't be used anymore: sudo mv itmtouch.ko itmtouch.ko.old

Creating and installing a working driver

The source code for the itmtouch driver can be downloaded from here: http://www.mivu.no/itmtouch/. Unfortunately, it is rather old (2005) and does not work with newer kernel versions that are used in Dapper and Edgy. Then again, the versions that come with those Ubuntu releases are of course compatible with newer kernel, but do not support this display device... Hmm, this could have been handled better. Anyway, I could not find a working version anywhere, so I made it myself by combining the source code available at mivu.no and fixes/comments made by Dmitry Torokhov to an earlier release of the driver. Basically what I needed to do was to download the latest driver from mivu.no and change it to use dynamic memory allocation, just like Dmitry had done to an earlier release.

You don't have to do that again, since I've put the file on my web pages. Here is the modified source file that works for me: http://www.rantakokko.net/node/44

You should download the itmtouch source code package from mivu.no, and replace the source code in file itmtouch.c with my modified code. Then go to the folder where the source file exists, and type commands make clean, make, and sudo make install. You should now have created and installed a new version of imtouch.ko driver module into /lib/modules/[your kernel version]/itmtouch.

To make use of this new driver, type sudo depmod and then sudo modprobe itmtouch. That should do the trick.

Now you can attach the USB cable back to the computer. Type lsmod | grep usb to check that the driver is loaded.

Testing the driver

Type command cat /proc/bus/input/devices to view how different input devices are mapped to handlers. There are probably several enries, but we are only interested to see this:


I: Bus=0003 Vendor=0403 Product=f9e9 Version=0100
N: Name="ITM Inc USB Touch Panel"
P: Phys=/input0
S: Sysfs=/class/input/input2
H: Handlers=mouse0 event2 ts0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003

Note that the handlers and input channels might be slightly different in your case. Type sudo cat /dev/input/eventX, where X is the event channel where to touch screen was mapped (see the print above). In my case it is number two, so I type sudo cat /dev/input/event2 and get something like this when I tap the touch screen of my LCD:

�F�▒�F�J�F��F�l�F��F�▒��F�J�

Don't worry about it, you are not suppose to be able to read anything from this. The only thing that matters is that something will be printed every time you tap the screen.

Disabling mouse

You might also see that the mouse cursor moves when you tap the screen. However, it is probably not going to move to the same spot you tapped. The reason for this is that your touch screen gets mapped to mouse events too (Remember the handlers? In my case there are three handlers for touch screen input: mouse0, event2, and ts0. The mouse driver gets the data and moves the cursor, but since it can't interpret the data properly, you are not exactly getting what you want...). You can prevent this for example by disabling mouse control from your xorg.conf. Type sudo pico /etc/X11/xorg.conf, look for ServerLayout section, and comment out the line saying "InputDevice" "Configured Mouse". This will disable all mouses in X. Another alternative is to look for InputDevice section that defines "Configured Mouse", and change
Option "Device" "/dev/input/mice"
to
Option "Device" "/dev/input/mouse0"
, where "mouse0" represent the input channel for your mouse (NOT to your touch screen!). This will make X to use only one mouse device. However, if you reboot your computer, remove the USB cable of your mouse, or do something similar, the event id number might change and your mouse doesn't work anymore... (e.g. mouse0 changes to mouse2).

Setting up touch handler

Since the mouse driver will not work properly with a touch screen, we need to add a driver the does. One of these is evtouch. You can download it from http://stz-softwaretechnik.com/~ke/touchscreen/evtouch.html. Note that if you choose to use the pre-compiled binaries, you need to use version 0.8.0 - the newer ones don't work with Dapper because they need newer version of Xorg.

Download the driver package, extract it, and look for file evtouch_drv.o. You need to copy that to /usr/lib/xorg/modules/input/ folder. Now X can utilize touch screen events via this driver.

Next, we need to configure X to actually use this driver. Type sudo pico /etc/X11/xorg.conf. Look for ServerLayout section, and add
"InputDevice" "touchscreen"
Then add a new InputDevice section:

Section "InputDevice"
Identifier "touchscreen"
Driver "evtouch"
Option "CorePointer"
Option "Device" "/dev/input/itmtouch"
Option "DeviceName" "touchscreen"
Option "MinX" "120"
Option "MinY" "289"
Option "MaxX" "3894"
Option "MaxY" "3799"
Option "ReportingMode" "Raw"
Option "Emulate3Buttons"
Option "Emulate3Timeout" "50"
Option "SendCoreEvents" "On"
Option “Swapy” “1”
EndSection

Notice that we are using evtouch as a driver. However, the input device is defined to be /dev/input/itmtouch. What is that? We did not have such in the devices, didn't we? Nope. We'll do that now.

As I mentioned with mouse events, the id number of the event may change when you restart your computer. We need to dynamically match your touch screen input event channel to an event channel name that remains static in your xorg.conf file. And we need to make this readable to X. So, type sudo pico /etc/udev/rules.d/40-permission.rules. Go to the end of the file, and add DRIVER="itmtouch", KERNEL="event[0-9]*", SYMLINK="input/itmtouch%e", MODE=0666. (To make your system more secure, you can reduce the amount of read/write/access rights to touch screen events after you have everything working.) What did you just do? That line will look for events from itmtouch driver, and map them to a new /dev/input/itmtouch event channel, which we can use in the xorg.conf file.

Now were done! Reboot your computer and try out your new touch screen! It should work. In case there is some gap between the point you touched on the screen and the point where the mouse cursor moved, you can calibrate the touch screen by modifying the calibration values in the xorg.conf file (check out MinX, MaxX, MinY, MaxY values in the InputDevice section you just added).

That's all. I hope this helped!


Works on a Debian Etch

Hi guys!
I wrote a little guide about how this monitor works on a Debian Etch.
I have to thank you for the advices!!!

You can find the guide, with a video, on: http://gnagnibu.nireblog.com/post/2008/06/26/installare-e-configurare-mo...

Sorry, but it's in italian ;D

Bye


itmtouch on ubuntu 8.04

Anyone made an itmtouch.c version of file for Ubuntu 8.04?
I've managed to compile (I think you'll need to leave out a single LONG cast) but it seems it won't work with same evtouch_drv.so file that worked for me under 7.10...Any chance to find out what's wrong!?


Problems on Debian Etch with calibration

Hi

Thanks for all the help provided here. I have a HP T5735 Thin Client with preinstalled Debian Etch. The LG L1730sf is recognized ok, but calibration is off and y-axis is swaped.

After a long ride I have managed to build the itmtouch driver from source, but I still have the same problems, but a little better.

It seems like the options in xorg.conf is not used. No matter what Options I change there is no change on the behavior.

Doing 'cat /proc/bus/usb/devices' shows the device.
Doing '/sbin/lsmod' shows that itmtouch is loaded in usbcore.
Doing 'rmmod itmtouch' disables the touch feature.
Doing 'modprobe itmtouch' enables the touch feature.

I have not been able to build the ev_calibration tool, so my xorg.conf options is added manually.

Could you please help - I'm getting really fustrated after using several days trying to make the touch feature work!!!

My xorg.conf looks like this:

Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "aticonfig-Screen[0]" 0 0
Screen "aticonfig-Screen[1]" RightOf "aticonfig-Screen[0]"
InputDevice "Generic Keyboard"
InputDevice "usbtouchscreen"
InputDevice "Configured Mouse" "CorePointer"
InputDevice "Generic Mouse"
InputDevice "dummy"
Option "AllowMouseOpenFail" "true"
EndSection

Section "InputDevice"
Identifier "usbtouchscreen"
Driver "itmtouch"
# Option "CorePointer"
Option "Device" "/dev/input/event1"
# Option "Device" "/dev/input/itmtouch"
Option "DeviceName" "touchscreen"
# Option "Calibrate" "1"
Option "MinX" "120"
Option "MinY" "289"
Option "MaxX" "3894"
Option "MaxY" "3799"
Option "ReportingMode" "Raw"
Option "Emulate3Buttons"
Option "Emulate3Timeout" "50"
Option "SendCoreEvents"
Option "Rotate" "cw"
Option "SwapY" "On"
EndSection

My Xorg.0.log shows (only lines with itmtouch):

(II) LoadModule: "itmtouch"
(WW) Warning, couldn't open module itmtouch
(II) UnloadModule: "itmtouch"
(EE) Failed to load module "itmtouch" (module does not exist, 0)

When changing xorg.conf Driver to "evtouch" the results in Xorg.0.log is:

...
(II) LoadModule: "evtouch"
(II) Loading /usr/lib/xorg/modules/input/evtouch_drv.so
(II) Module evtouch: vendor="Kenan Esau"
compiled for 4.3.99.902, module version = 0.8.3
Module class: X.Org XInput Driver
ABI class: X.Org XInput driver, version 0.5
...
(**) Option "Device" "/dev/input/event1"
evdev device opened successfully
(**) Option "MinX" "120"
(**) Option "MaxX" "3894"
(**) Option "MinY" "289"
(**) Option "MaxY" "3799"
(**) Option "Emulate3Buttons"
(**) Option "Emulate3Timeout" "50"
(**) Option "SwapY" "On"
QUERY HARDWARE
(**) Option "DeviceName" "touchscreen"
(**) Option "SendCoreEvents"
(**) touchscreen: always reports core events

The results using evtouch or itmtouch is the same. Feature is working but calibration and y-axis is off.

To make the itmtouch I had to do several steps and a hack renaming 'itmtouch.ko' to 'usbtouchscreen.ko', that might be the cause of my problems, but that was the only way I could make the driver load.

Please see the description of steps here:


After downloading the source I tried 'make' and 'make install' but they failed. Trying procompiled versions gave problem with glibc_2.4, so the only options is to build the driver.

I found that I needed utils-dev (this might not be nessesary). Get it by doing:

# apt-get install xutils-dev

Now do:

# ./configure

From the output I found that pkg-config was missing.

Before I could get it I had to make some modifications to '/etc/apt/sources.list'. Do:

# vi /etc/apt/sources.list

Add to the top:

deb-src http://ftp.dk.debian.org/debian unstable main contrib non-free
deb http://ftp.dk.debian.org/debian etch main

Then do:

# apt-get update
# apt-get install linux-headers_2.6.18-5-686

Modify itmtouch.c. Change:

'#include ' to '#include '

and comment line 341: '.owner = THIS_MODULE,
' to '//.owner = THIS_MODULE,
'

Now try to make:

# make
# make install

This worked for me. The build was a success and I now had the itmtouch.ko driver.

I then made the modifications to /etc/X11/xorg.conf (actually I already had done that several times).

The problem was that I couldn't get the evtouch/itmtouch to load. I got the following errors:

Trying 'evtouch': In Xorg.0.log: "No Input driver matching evtouch"

Trying 'itmtouch': I got error that '/lib/modules/2.6.18-5-686/kernel/drivers/usb/input/usbtouchscreen.ko' could not be found.

After several tries to load itmtouch i finally tried to copy itmtouch.ko to '/lib/modules/2.6.18-5-686/kernel/drivers/usb/input/' and renaming it to 'usbtouchscreen.ko'!

Then trying to load itmtouch again:

# modprobe itmtouch

The driver was loaded and the screen is working. Only step that remains is to calibrate!

Thanks!


Hello thomasd, I think you

Hello thomasd,

I think you are pretty close if calibration and y-axel swap are the only thing not working. Don't give up yet. Although, I am not sure if I can help you. I am not using Debian Etch myself, and unfortunately being very busy at the moment.

Since you have some kind of touch control working, itmtouch driver should be fine but Evtouch and its configuration in xorg.conf probably needs some work.

From commented lines in your xorg.conf I can see that you have tried multiple combinations. I think you should have these lines:
...
Driver "itmtouch"
...
Option "Device" "/dev/input/itmtouch"
...

I'm not sure what is the reason why you needed to rename the module to usbtouchscreen.ko, and what that means to configuration. Maybe you need to put it like this:

Option "Device" "/dev/input/usbtouchscreen"

Or, maybe not. I don't know.

However, if you are indeed using itmtouch driver compiled by yourself, you could get away with swapping the y axel by changing something in the code (proper configuration in xorg.conf would of course be the right way to do it). Anyway, see line number 148 in itmtouch.c, it should be now like this:
if (swapy)
and you could change it like this:
if (!swapy)
i.e. by adding '!' character, you turn the meaning of the if-clause upside down. I think that should swap y axel if it is currently wrong.

But in case the calibration is really wrong this won't get you too far. Calibration must be handled with evtouch, not itmtouch. So you're back at configuring xorg.conf. By the way are you using the correct version of evtouch? I had to use 0.8.0 as newer ones did not work for me.


Compiling evtouch driver 0.8.7 - errata corrige

Sorry guys!
I didn't note that ./configure gave me some errors:

./configure: line 20023: syntax error near unexpected token `XORG,'
./configure: line 20023: `PKG_CHECK_MODULES(XORG, xorg-server xproto $REQUIRED_MODULES)'

So, I had to install some packages, like intltool pkg-config xserver-xorg-dev x11proto-core-dev x11proto-fonts-dev.

Now, ./configure can make a Makefile but I got errors during compiling with make command:

make all-am
make[1]: Entering directory `/home/accesso/xf86-input-evtouch-0.8.7'
if /bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DXINPUT -g -O2 -DXFree86Server -DIN_MODULE -DXFree86Module -DXFree86LOADER -I/usr/include/xorg -g -O2 -MT evtouch_drv_la-evtouch.lo -MD -MP -MF ".deps/evtouch_drv_la-evtouch.Tpo" -c -o evtouch_drv_la-evtouch.lo `test -f 'evtouch.c' || echo './'`evtouch.c; \
then mv -f ".deps/evtouch_drv_la-evtouch.Tpo" ".deps/evtouch_drv_la-evtouch.Plo"; else rm -f ".deps/evtouch_drv_la-evtouch.Tpo"; exit 1; fi
gcc -DHAVE_CONFIG_H -I. -I. -I. -DXINPUT -g -O2 -DXFree86Server -DIN_MODULE -DXFree86Module -DXFree86LOADER -I/usr/include/xorg -g -O2 -MT evtouch_drv_la-evtouch.lo -MD -MP -MF .deps/evtouch_drv_la-evtouch.Tpo -c evtouch.c -fPIC -DPIC -o .libs/evtouch_drv_la-evtouch.o
In file included from evtouch.c:63:
/usr/include/xorg/xf86.h:45:34: error: X11/extensions/randr.h: No such file or directory
In file included from evtouch.c:63:
/usr/include/xorg/xf86.h:424: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'xf86GetRotation'
evtouch.c:66:31: error: X11/extensions/XI.h: No such file or directory
evtouch.c:67:36: error: X11/extensions/XIproto.h: No such file or directory
In file included from evtouch.c:69:
/usr/include/xorg/extinit.h:56: error: expected declaration specifiers or '...' before 'xGrabDeviceReply'
/usr/include/xorg/extinit.h:67: error: expected ')' before '*' token
/usr/include/xorg/extinit.h:73: error: expected ')' before '*' token
/usr/include/xorg/extinit.h:79: error: expected ')' before '*' token
/usr/include/xorg/extinit.h:85: error: expected ')' before '*' token
/usr/include/xorg/extinit.h:91: error: expected ')' before '*' token
/usr/include/xorg/extinit.h:97: error: expected ')' before '*' token
/usr/include/xorg/extinit.h:103: error: expected ')' before '*' token
In file included from /usr/include/xorg/xf86Xinput.h:65,
from evtouch.c:75:
/usr/include/xorg/XIstubs.h:74: error: expected declaration specifiers or '...' before 'xDeviceCtl'
In file included from evtouch.c:75:
/usr/include/xorg/xf86Xinput.h:126: error: expected declaration specifiers or '...' before 'xDeviceCtl'
In file included from evtouch.c:76:
/usr/include/xorg/exevents.h:157: error: expected ')' before '*' token
/usr/include/xorg/exevents.h:163: error: expected declaration specifiers or '...' before 'deviceKeyButtonPointer'
In file included from evtouch.c:78:
/usr/include/xorg/randrstr.h:52: error: expected declaration specifiers or '...' before 'Rotation'
/usr/include/xorg/randrstr.h:56: error: expected declaration specifiers or '...' before 'Rotation'
/usr/include/xorg/randrstr.h:70: error: expected specifier-qualifier-list before 'Rotation'
/usr/include/xorg/randrstr.h:115: error: expected declaration specifiers or '...' before 'Rotation'
/usr/include/xorg/randrstr.h:122: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'RRGetRotation'
/usr/include/xorg/randrstr.h:126: error: expected declaration specifiers or '...' before 'Rotation'
/usr/include/xorg/randrstr.h:134: error: expected declaration specifiers or '...' before 'Rotation'
/usr/include/xorg/randrstr.h:138: error: expected declaration specifiers or '...' before 'Rotation'
evtouch.c:183: error: expected declaration specifiers or '...' before 'xDeviceCtl'
evtouch.c: In function 'DeviceInit':
evtouch.c:635: error: 'Absolute' undeclared (first use in this function)
evtouch.c:635: error: (Each undeclared identifier is reported only once
evtouch.c:635: error: for each function it appears in.)
evtouch.c: At top level:
evtouch.c:837: error: expected declaration specifiers or '...' before 'xDeviceCtl'
evtouch.c: In function 'ConvertProc':
evtouch.c:905: error: 'Rotation' undeclared (first use in this function)
evtouch.c:905: error: expected ';' before 'rotation'
evtouch.c:1055: error: 'rotation' undeclared (first use in this function)
evtouch.c:1056: error: 'RR_Rotate_0' undeclared (first use in this function)
evtouch.c:1060: error: 'RR_Rotate_180' undeclared (first use in this function)
evtouch.c:1064: error: 'RR_Rotate_90' undeclared (first use in this function)
evtouch.c:1069: error: 'RR_Rotate_270' undeclared (first use in this function)
evtouch.c: In function 'EVTouchPreInit':
evtouch.c:1116: error: 'XI_TOUCHSCREEN' undeclared (first use in this function)
evtouch.c:1200: warning: incompatible implicit declaration of built-in function 'sprintf'
make[1]: *** [evtouch_drv_la-evtouch.lo] Error 1
make[1]: Leaving directory `/home/accesso/xf86-input-evtouch-0.8.7'
make: *** [all] Error 2

Is the code bugged?


Compiling evtouch driver 0.8.7

Hi everybody!
I try to compile evtouch driver 0.8.7 on a Debian Etch, but I failed.
I follow the INSTALL file into driver directory;

- autogen.sh doesn't exist, so I downloaded it from web
- I had to create 'po' directory, because when I typed
./autogen.sh /usr/bin/X
it failed with this error:
cp: impossible to create file `po/Makefile.in.in': No such file or directory
intltoolize: cannot copy '/usr/share/intltool/Makefile.in.in' to 'po/Makefile.in.in'
- so, when I typed make, it failed with this error:
make: *** No targets specified and no makefile found. Stop.

Any helps??? Thanks!


Cant find linux/config.h

Hi all!

I have LG L1510F too, and it's a ray of light to my actual situation.

I'm under ubuntu 7.04, and have usbtouchscreen instead itmtouch.

Whatever, i rename the module to no use it, download itmtouch source code and the patched file (thanks), but when i type MAKE, i have the next reports:

make -C /lib/modules/2.6.20-16-generic/build SUBDIRS=/home/tpvtec/Desktop/itmtouch modules
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.20-16-generic'
CC [M] /home/tpvtec/Desktop/itmtouch/itmtouch.o

/home/tpvtec/Desktop/itmtouch/itmtouch.c:54:26: error: linux/config.h: No existe el fichero ó directorio

/home/tpvtec/Desktop/itmtouch/itmtouch.c:68:29: error: linux/usb_input.h: No existe el fichero ó directorio

--------------------------------------------------------
[EDIT]

Ok, i solve it.

At kernel 2.6.20 we need to change something

linux/config.h -> linux/autoconf.h
linux/usb_input.h -> linux/usb/input.h

And delete "input_regs(dev, regs);" (i hope it's no so important...)

Now works on the X/Y, but it's not calibrated (why, why, why??)

Thanks for the guide.


Ubuntu 7.07

Do you have any experience using this touchscreen with Ubuntu 7.07?

On the Ubuntu forums there are a lot of posts about problems with getting touchscreens to work. This scares me a little since I don't have the technical know-how to change drivers and such. Are there any touchscreens you know that function right out of the box?


I have tested this touch

I have tested this touch screen with Ubuntu Dapper Drake 6.06 and Edgy Eft 6.10. Unfortunately, I don't know what is the status with the latest release Feisty Fawn 7.04, or if any changes are coming with 7.10.

I bought this touch screen because it was the only model with big screen, reasonable price and good availability. I don't have any personal experience with other touch screens, but based on all the discussion forums I'd say that in general you should not expect that any model works perfectly out-of-the-box (if somebody knows better, let me know).

After you get pass the driver issues and get it working, you might still find the way how the driver emulates the mouse unsuitable for certain applications. For example, when you tap the screen, the driver moves the mouse cursor to the location you tapped AND sends a left mouse click to this location. However, if you keep the pressure longer, the driver will interpret this long touch as a RIGHT mouse click. In some applications this is not a good at all. Also drag'n drop is practically impossible, and the virtual keyboard in Ubuntu is meant for disabled people and does not work well with touch screen input.

However, basic pointing works well and a touch screen is fun to use.
If your device supports multi-touch, the driver will calculate the mean value, i.e. if you push with thumb and middle finger, the mouse cursor will appear in the middle point of these locations. With some changes to the driver, you might be able to get out multiple touches simultaneously and build some pretty interesting user interfaces... if you've seen the touch screen videos in youtube you know what I'm talking about.


guys im struggling with the

guys im struggling with the L1730sf running on Edgy. i tried using the dapper drake settings but i can't get it to work. n e one out there to help?
paledi


experimenting

Thanks for your response! I meant 7.04 of rcourse.

I am thinking about doing a behavioral experiment with a touch screen, which allows me to closely measure 2D actions, instead of the 1D actions measurable with a keyboard. A little bit of system administration is no problem, but I do need to be certain the response times of the touch screen are more or less stable (about as stable as those of a keyboard: average 19 msec extra waiting time) and that the touch screen doesn't fail at random moments during an experiment.

Do you experience stable responsiveness of the touch screen? (Don't go testing for me: how is your daily experience?)

Have you tried to use the touch screen as a HID device in Python? I have done some experimenting with PyEPL in which you can use a mouse or joystick's HID axes. Since you define it as a kind of mouse, it sounds like Python might be able to use it as an input device without too much trouble.

Do you have any idea if the touch screen could be used with Python / PyGame / PyEPL ? (I will ask this in the PyEPL forum as well.)


Responsiveness

My experience, coming from personal use of this display and watching others to use it, is that the touch feature seems stable and responsive, but to be really precise it should be measured.

The touch feature in this display is built using resistive technology, which means that one needs to actually push the screen a little so that it will recognize the touch. Some displays use capacitive method, and are much more sensitive - often direct touch is not necessary and the finger just needs to be very close the surface of the display. In practice I have found that with this type of display new users miss a lot of touches because they push the screen too gently, and might be a little irritated about that. It takes a little time to learn to use it more reliably (how to touch firmly enough). Even after that when you're not focused you'll still miss some touches because you forget to touch in proper way. The best way to touch reliably and precisely seems to be to use a little bit of finger nail too when you point the screen with a finger.

I haven't tried using Python with it, but I think it should work without problems just by using Python's mouse/pointing API. I have written some programs with Java and they worked fine with it.


Thanks

Thank you! It seems like the screen may serve my purposes.


It worked !

Thanks !!! it helped me a lot !!
I am trying to configure an LG L1510BF and I almost did it.
The default driver usbtouchscreen.ko was doing the job but the X and Y were swaped, as soon as i installed the compiled module it worked as a charm !!
the only problem i got now is the calibration thing as when i touch one point on the screen, it increasingly points to a higher value.
cheers !


THANK YOU!!!

Great! I've been trying to get this to work for ages. Havn't tried your solution yet, but I'm just so happy sombody tried it and bothered to help the rest of us.
Cheers - I'll buy you a pint anyday :0)


note

Could you please provide a plain source itmtouch.c instead of HTML formatted source code ;-)

/marco


source file...

... is now available for downloading:
http://www.rantakokko.net/projects/touchscreen/itmtouch.c


Ubuntu 7.10

Sorry for resurecting this old news, but just an update concerning itmtouch working on ubuntu 7.10 desktop (not server)...
Beside doing all the things you needed to do for 7.04, you'll need to comment out the /* .owner = THIS_MODULE, */ field in the itmtouch_driver struct.
Also, I think you should use evtouch 0.8.7 (ppl say it's buggy but I haven't noticed that yet) since with 0.8.6 you'll be getting double pointer click events (after the second click almost any key I touch on the virual keyboard seems to translate to double click).

I have just one question for anyone that can help please!
It's concerning DRIVER="itmtouch", KERNEL="event[0-9]*", SYMLINK="input/itmtouch%e", MODE=0666 in the /etc/udev/rules.d/40-permission.rules (or any other udev rules file - I tried also making empty 00-itmtouch.rules file with only that one line written above). Unfortuantelly, that whole thing isn't working for me. No matter what I do I can't make the /dev/input/itmtouch device file appear!? Are you suppose to create an empty file beforehand maybe or something?! Or should I write it some other way for Ubuntu 7.10?! I just don't know enough about udev to figure that one on my own so good ppl if you know more, help would be greatly appreciated!!! :)


Help for debugging

In console, type cat /proc/bus/input/devices. From the output, look for section with name "ITM Inc USB Touch Panel". Note the line that tells the Sysfs path, e.g. "Sysfs=/class/input/input1".

Next, type udevinfo -a -p /class/input/input1 | grep DRIVER, but remember to use the sysfs output you got on your own system. You should get a list of lines showing drivers chain for your touch screen. For example:
DRIVER=="itmtouch"
DRIVER=="usb"
DRIVER=="usb"
DRIVER=="uhci_hcd"
DRIVER=="unknown"
Note the name of the driver on the top of the list, here "itmtouch".

Then, edit your "/etc/udev/rules.d/40-permission.rules" file, and use the name of the driver you just found out, as shown below:

DRIVER=="itmtouch", KERNEL=="event[0-9]*", SYMLINK="input/itmtouch%e", MODE=0666

Note those double '==' characters in DRIVER and KERNEL phrases. They mean "matching", where as single '=' characters mean "assigning". The command above tells the udev system look for events from itmtouch driver, and create a symbolic link /dev/input/itmtouch with suitable read/write/access permissions. In my previous posts there are sometimes only single '=' characters, which (I have recently learned) appears to be incorrect syntax.

This is still for Dapper. Newer versions of Ubuntu probably have different versions of udev, and the syntax may have changed. I am going to upgrade my system from dapper to hardy heron when it is released after two months, I will probably upgrade this guide then.

Meanwhile, more information on creating udev rules can be found here:
http://www.reactivated.net/writing_udev_rules.html