Hi everyone,
I asked a similar question over on the Ubuntu forums but haven't gotten any replies so I wanted to try a more generic audience. I'm using a Jetway J7F5 mini-itx main board with 1Gb RAM and a 1.5GHz processor. I'm running Ubuntu 7.10 with kernel 2.6.22-14-generic
This is going to be a media server that uses a 15" Intellitouch touchscreen in a black walnut case. Video is driven using the Via drivers for the unichrome chipset and they are working great with openGL and other acceleration. The problems I'm having are with the touchscreen.
This is an ELO1545L. It is a USB controlled surface acoustic wave touchscreen. The controller is the 2500U which is the predecessor to the 2700. I have been trying all different versions of possible drivers for the past two weeks with no luck. I have tried the ones from elo, the Unified USB drivers, elographics, elousb, and evtouch v0.8.6 and v0.8.7. I have been running Ubuntu on an older computer for over a year now but this is the first time I've gotten into the terminal heavily to compile scripts and run make so please bear with me.
As with other people, the USB event changed every time I rebooted. I modified /etc/udev/rules.d/65-persistent-input.rules to create a static reference to the monitor. I labeled it touch2500. When I "cat /dev/input/touch2500" I get random data when I touch the screen. Sometimes it even messes up the text on the terminal so that I have to close terminal and re-open a new one. I have been chasing this problem for a few weeks and having all sorts of luck crashing X and using the other VCs. Elousb crashes X and puts Ubuntu into low graphics mode and I think elographics is just for the serial version. /var/log/Xorg.0.log has been a big bit of fun. Maybe there are some who would suggest editing the C code for one of these drivers. I would really prefer not to because it's been about 4 years since I last wrote C and assembly. The closest it's gotten to working is with the evtouch driver v0.8.7.
I've searched what feels far and wide and there were a few vague references to using a generic driver or different company driver to run this screen. So far, I can't find anyone who has gotten this working in Ubuntu 7.10.
Here are the relevant sections from my xorg.conf:
Quote:
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
EndSection
Section "InputDevice"
Identifier "touchscreen"
# Driver "elo"
# Driver "elographics"
Driver "evtouch"
# Option "debuglevel" "5"
Option "Device" "/dev/input/touch2500"
Option "DeviceName" "touchscreen"
# Option "screeno" "0"
Option "MinX" "98"
Option "MaxX" "940"
Option "MinY" "43"
Option "MaxY" "925"
Option "ReportingMode" "Raw"
Option "Emulate3Buttons"
# Option "UntouchDelay" "3"
# Option "ReportDelay" "1"
Option "Emulate3Timeout" "50"
Option "SendCoreEvents" "On"
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "touchscreen" "CorePointer"
# InputDevice "stylus" "SendCoreEvents"
# InputDevice "cursor" "SendCoreEvents"
# InputDevice "eraser" "SendCoreEvents"
EndSection
Section "DRI"
Mode 0666
Group 0
EndSection
|
Please confirm that I have the persistent input done correctly. It's not in the USB section but the system still recognizes the device when I cat the touch2500 input.
Here is my persistent input rule file: /etc/udev/rules.d/65-persistent-input.rules
Quote:
ACTION!="add", GOTO="persistent_input_end"
SUBSYSTEM!="input", GOTO="persistent_input_end"
KERNEL=="input[0-9]*", GOTO="persistent_input_end"
# usb devices
SUBSYSTEMS=="usb", IMPORT{program}="usb_id --export"
SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="01", ENV{ID_CLASS}="kbd"
SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="02", ENV{ID_CLASS}="mouse"
# other devices
DRIVERS=="pcspkr", ENV{ID_CLASS}="spkr"
DRIVERS=="atkbd", ENV{ID_CLASS}="kbd"
DRIVERS=="psmouse", ENV{ID_CLASS}="mouse"
ATTRS{name}=="*dvb*|*DVB*|* IR *", ENV{ID_CLASS}="ir"
ATTRS{modalias}=="input:*-*a[068],*|input:*-*a*,[68],*m*", ATTRS{modalias}!="input:*-*k*14A,*r*", ENV{ID_CLASS}="joystick"
ATTRS{name}=="Elo TouchSystems, Inc. Elo TouchSystems IntelliTouch 2500U", SYMLINK=="input/touch2500"
# fill empty serial number
ENV{ID_CLASS}=="?*", ENV{ID_SERIAL}=="", ENV{ID_SERIAL}="noserial"
# by-id links
KERNEL=="mouse*|js*", ENV{ID_BUS}=="?*", ENV{ID_CLASS}=="?*", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{ID_CLASS}"
KERNEL=="event*", ENV{ID_BUS}=="?*", ENV{ID_CLASS}=="?*", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-event-$env{ID_CLASS}"
# by-path
IMPORT{program}="path_id %p"
ENV{ID_PATH}=="?*", KERNEL=="mouse*|js*", SYMLINK+="input/by-path/$env{ID_PATH}-$env{ID_CLASS}"
ENV{ID_PATH}=="?*", KERNEL=="event*", SYMLINK+="input/by-path/$env{ID_PATH}-event-$env{ID_CLASS}"
LABEL="persistent_input_end"
|
As for the output of the Xorg.0.log. I'll just append the items dealing with touch as well as warnings and errors. Just piped through grep.
Quote:
less /var/log/Xorg.0.log | grep touch
(**) |-->Input Device "touchscreen"
(WW) Duplicate core pointer devices. Removing core pointer attribute from "touchscreen"
(II) LoadModule: "evtouch"
(II) Loading /usr/lib/xorg/modules/input//evtouch_drv.so
(II) Module evtouch: vendor="Kenan Esau"
(**) Option "DeviceName" "touchscreen"
(**) touchscreen: always reports core events
(II) XINPUT: Adding extended input device "touchscreen" (type: TOUCHSCREEN)
(**) Option "Device" "/dev/input/touch2500"
(EE) touchscreen: Unable to grab device (Invalid argument).
|
"less /var/log/Xorg.0.log | grep EE" doesn't reveal anything more than those errors.
The last thing that may be of interest is the output of lsmod for any usb devices. There is no output for "lsmod | grep touch" or "lsmod | grep input". Not that I thought there should be, but had no way of knowing whether evtouch would be properly loaded.
Quote:
lsmod | grep usb
usbhid 29536 0
hid 28928 1 usbhid
usbcore 138632 5 usbhid,xpad,ehci_hcd,uhci_hcd
|
Well, why not add some data from dmesg piped through driver to look for some driver errors:
Quote:
[ 22.255435] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
[ 22.259729] RAMDISK driver initialized: 16 RAM disks of 65536K size 1024 blocksize
[ 25.281645] Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
[ 25.314568] usbcore: registered new interface driver usbfs
[ 25.314617] usbcore: registered new interface driver hub
[ 25.314651] usbcore: registered new device driver usb
[ 25.316452] USB Universal Host Controller Interface driver v3.0
[ 8.604000] Uniform CD-ROM driver Revision: 3.20
[ 8.852000] ehci_hcd 0000:00:10.4: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
[ 22.368000] usbcore: registered new interface driver xpad
[ 22.368000] /build/buildd/linux-source-2.6.22-2.6.22/drivers/input/joystick/xpad.c: driver for Xbox controllers v0.1.6
[ 22.448000] usbcore: registered new interface driver hiddev
[ 22.464000] usbcore: registered new interface driver usbhid
[ 22.464000] /build/buildd/linux-source-2.6.22-2.6.22/drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
[ 24.168000] lp: driver loaded but no devices found
|
Wow! This is a lot of information. I am really looking forward to being able to install the media programs I want and start populating it with media. My friend has talked me down from the edge a couple of times when I considered switching to Windows. If anybody could help get me pointed in the right directions I would really appreciate it. I'm getting frustrated trying to compile XFree86 drivers and drivers for old kernels etc etc. The old HCL link the hardware forum said this monitor isn't supported but that was last commented on in 2003 so I'm hoping that things have changed.
All my thanks in advance for any guidance and support.
Cheers!
UPDATE: I installed Hardy and the event driver is much better. I just installed evtouch, added a permanent input handle for my monitor and everything worked perfectly. Even setting up the new Xorg was simple.