I'm trying to use the driver with my eGalaxy-Touchscreen (Vendor: 0eef, Product: 0001). Which kernel driver should I use?
I tried to use tkusb.ko provided by EETI but it only gives a /dev/tkpanel0 device but not an /dev/input/eventX. How can I connet both?
Flo
hi,
you need the linux kernel usbtouchscreen and evdev driver
regards
elmar
I will try it in one of the next days, but I ve to install X11R7 on my Debian first.
But what I m wondering about is that in recent kernel versions (e.g. 2.6.33) the usbtouchscreen is not designated for eGalax (0eef:0001).
usbtouchscreen.c:
#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
149 /* ignore the HID capable devices, handled by usbhid */
150 {USB_DEVICE_HID_CLASS(0x0eef, 0x0001), .driver_info = DEVTYPE_IGNORE},
151 {USB_DEVICE_HID_CLASS(0x0eef, 0x0002), .driver_info = DEVTYPE_IGNORE},
152
153 /* normal device IDs */
154 {USB_DEVICE(0x3823, 0x0001), .driver_info = DEVTYPE_EGALAX},
155 {USB_DEVICE(0x3823, 0x0002), .driver_info = DEVTYPE_EGALAX},
156 {USB_DEVICE(0x0123, 0x0001), .driver_info = DEVTYPE_EGALAX},
157 {USB_DEVICE(0x0eef, 0x0001), .driver_info = DEVTYPE_EGALAX},
158 {USB_DEVICE(0x0eef, 0x0002), .driver_info = DEVTYPE_EGALAX},
159 {USB_DEVICE(0x1234, 0x0001), .driver_info = DEVTYPE_EGALAX},
160 {USB_DEVICE(0x1234, 0x0002), .driver_info = DEVTYPE_EGALAX},
161#endif
whereas in older versions it is. Which kernel do you use?
regards,
Flo
your touchscreen is in your usbtouchscreen.c
usbtouchscreen.c:
#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
149 /* ignore the HID capable devices, handled by usbhid */
150 {USB_DEVICE_HID_CLASS(0x0eef, 0x0001), .driver_info = DEVTYPE_IGNORE},
simply activate the driver device drivers/input device support/touchscreens/usb touchscreen driver and it will work
leider funktioniert es bei mir nicht. Ich habe einen Xorg 7.3 installiert und den Monitor am Displaylink-Framebuffer. Compilieren konnte ich, allerdings wurde die xkbstr.h erst nicht gefunden, denn sie heißt bei mir XKBstr.h und ist unter /usr/include/X11/extensions/ zu finden. Nachdem ich das geändert habe ging es.
Wenn ich den gdm starte, passiert nix sobald ich den plpevtch mit dem richtigen event verbinde. Verbinde ich mit einen nicht vorhandenen event, startet zwar der Bildschirm zwar, aber der Touch geht natürlich nicht. Ich gehe mal davon aus, dass es irgendeinen Konflikt zwischen den beiden Treibern gibt. Denn die einzige Fehlermeldung die ich finden konnte ist in /var/log/syslog:
Jul 26 18:19:11 sheevaplug gdm[6440]: WARNING: Failed to start X server several times in a short time period; disabling display :0
Als Anhang mal meine Config- und Logfiles.
Gruß,
Flo
ich haette auch gerne den output von dmesg
hier noch die Logfiles und die aktuelle Konfiguration.
Außerdem noch die Logfiles wenn event3 eingestellt ist - welches nicht vorhanden ist. Dann startet der Bildschirm ohne Probleme.
jetzt noch lsmod :)
lsmod:
Module Size Used by
ipv6 229169 16
md_mod 85822 0
udlfb 13579 0
fb 37686 1 udlfb
fb_sys_fops 973 1 udlfb
sysimgblt 1685 1 udlfb
sysfillrect 2708 1 udlfb
syscopyarea 2484 1 udlfb
sata_mv 24627 0
mv_cesa 4494 0
ich sehe evdev nicht.
ist evdev in den kernel kompiliert? wenn du nicht sicher bist, dann starte mal "modprobe evdev" oder poste die datei /proc/config.gz als attachment
ohne evdev geht es nicht
sudo modprobe evdev
FATAL: Module evdev not found.
...und die config als Anhang.
Von wem soll evdev denn geladen werden?
evdev ist in den kernel kompiliert
xorg.conf: ersetze mal
InputDevice "touchscreen" "CorePointer"
mit
InputDevice "touchscreen" "Pointer"
ich habe dir meine xorg.conf angehaengt
probier auch mal plpevtch 0.4.1.
Ich habe den evdev mal als Kernelmodul kompiliert und dann sieht man auch, dass er geladen wird.
Mit der Version 0.41 geht es!!!! :) Allerdings hüpft der Mauszeiger nur vereinzelt etwas über den Bildschirm, meist macht er gar nix. :( Ich habe die Option "Debug" und "Calibrate" in der xorg.conf aktiviert und bin mehrmals den Rand des Bildschirms abgefahren. Das Ergebnis ist in der beiliegenden Logdatei.
Übrigens, wenn ich mir mit "cat /dev/input/event0" die Ausgabe anzeigen lassen, kommt nur selten etwas, wenn ich über den Touchscreen bewege. Wenn ich drauftippe, kommt gar nix. Lade ich aber statt usbtouchscreen.ko das usbhid.ko kommt ein riesiger Datenstrom, so wie man es auch von einer Maus kennt. Ich frage mich, ob usbtouchscreen richtig mit meinem EETI 0eef:0001 zusammenarbeitet?
Meine Ausgabe von cat /proc/bus/usb/devices:
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0eef ProdID=0001 Rev= 1.00
S: Manufacturer=eGalax Inc.
S: Product=USB TouchController
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbtouchscreen
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=3ms
[b][/b]
Welche Rev. hast Du? Ich hab mal irgendwo im Netz gelesen, das es unterschiedliche geben soll...
ich habe usbhid in den kernel kompiliert. ich habe es eigentlich nie ohne usbhid probiert. immerhin ist ein touchscreen ein hid (human interface device) und daher habe ich usbhid automatisch aktiviert. usb keyboard oder maus wuerde ohne usbhid auch nicht funktionieren. also lade mal zuerst usbhid und dann usbtouchscreen. vielleicht geht es dann.
ich hab auch rev 1.00
wie schaut dein "lsusb -v" output aus?
Hier die Augabe von lsusb -v:
Bus 001 Device 003: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0eef D-WAV Scientific Co., Ltd
idProduct 0x0001 eGalax TouchScreen
bcdDevice 1.00
iManufacturer 1 eGalax Inc.
iProduct 2 USB TouchController
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 34
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 1 eGalax Inc.
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 2.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 141
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 3
Device Status: 0x0000
(Bus Powered)
Welcher Treiber ist denn von deinem Touchscreen geladen worden? Schick doch bitte mal die Ausgabe von cat /proc/bus/usb/devices.
Ich habe jetzt mal usbhid.ko anstelle des usbtouchscreen laden lassen und plötzlich kommen ganz viele Debugausgaben, leider auch nix sinnvolles, z.B.:
(II) plpevtch: Debug start right click timer
(II) plpevtch: Calibrate | MinX: 0 | MaxX: 0 | MinY: 0 | MaxY: 0
(II) plpevtch: Debug X: 0, Y: 0, xdeb: 0, ydeb: 0
(II) plpevtch: Calibrate | MinX: 0 | MaxX: 0 | MinY: 0 | MaxY: 0
(II) plpevtch: Debug X: 0, Y: 0, xdeb: 0, ydeb: 0
(II) plpevtch: Calibrate | MinX: 0 | MaxX: 0 | MinY: 0 | MaxY: 0
(II) plpevtch: Debug X: 0, Y: 0, xdeb: 0, ydeb: 0
(II) plpevtch: Calibrate | MinX: 0 | MaxX: 0 | MinY: 0 | MaxY: 0
(II) plpevtch: Debug X: 0, Y: 0, xdeb: 0, ydeb: 0
(II) plpevtch: Calibrate | MinX: 0 | MaxX: 0 | MinY: 0 | MaxY: 0
(II) plpevtch: Debug X: 0, Y: 0, xdeb: 0, ydeb: 0
(II) plpevtch: Calibrate | MinX: 0 | MaxX: 0 | MinY: 0 | MaxY: 0
(II) plpevtch: Debug X: 0, Y: 0, xdeb: 0, ydeb: 0
(II) plpevtch: Calibrate | MinX: 0 | MaxX: 0 | MinY: 0 | MaxY: 0
(II) plpevtch: Debug X: 0, Y: 0, xdeb: 0, ydeb: 0
(II) plpevtch: Calibrate | MinX: 0 | MaxX: 0 | MinY: 0 | MaxY: 0
(II) plpevtch: Debug X: 0, Y: 0, xdeb: 0, ydeb: 0
(II) plpevtch: Debug remove right click timer
(II) plpevtch: Debug press release left button
/proc/bus/usb/devices
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0eef ProdID=0001 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbtouchscreen
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=5ms
unsere touchscreens unterscheiden sich. der interface descriptor ist anders
Bus 002 Device 002: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x0eef D-WAV Scientific Co., Ltd
idProduct 0x0001 eGalax TouchScreen
bcdDevice 1.00
iManufacturer 1
iProduct 5
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 4
bmAttributes 0xa0
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 5
So, jetzt spielt es :)
Ich musste nur zwei Werte ändern:
--- evdev.c 2010-04-17 14:20:41.000000000 +0200
+++ evdev.c.patched 2010-07-27 18:05:31.000000000 +0200
@@ -210,8 +210,8 @@
switch (ev.type) {
case EV_ABS:
- if (ev.code==(state->abs->swapXY?1:0)) x=ev.value;
- if (ev.code==(state->abs->swapXY?0:1)) y=ev.value;
+ if (ev.code==(state->abs->swapXY?3:2)) x=ev.value;
+ if (ev.code==(state->abs->swapXY?2:3)) y=ev.value;
break;
case EV_KEY:
Offensichtlich gibt es wirklich verschiedene Versionen mit der gleichen ProductID. Verwirrend!!!!!
Habe ich vergessen: Ganz vielen Dank für deine Hilfe!!!!!
Gruß,
Flo
Quote from: floo on July 27, 2010, 18:02:26 PM
Offensichtlich gibt es wirklich verschiedene Versionen mit der gleichen ProductID. Verwirrend!!!!!
schoen as es jetzt geht :)
Wenn du nix dagegen hast, würde ich der Vollständigkeit halber noch den Monitortyp angeben:
V-1000 vertrieben von Krämer Automotive.
Vielleicht hilft dieser Therad ja irgend jemanden weiter, der vor dem gleichen Problem steht.
Gruß,
Flo