plpevtch with eGalaxy

Started by floo, July 23, 2010, 18:16:07 PM

Previous topic - Next topic

floo

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

Elmar

hi,
you need the linux kernel usbtouchscreen and evdev driver

regards
elmar

floo

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

Elmar

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


floo

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

Elmar

ich haette auch gerne den output von dmesg

floo

hier noch die Logfiles und die aktuelle Konfiguration.

floo

Außerdem noch die Logfiles wenn event3 eingestellt ist - welches nicht vorhanden ist. Dann startet der Bildschirm ohne Probleme.

Elmar


floo

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

Elmar

#10
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

floo

sudo modprobe evdev
FATAL: Module evdev not found.

...und die config als Anhang.

Von wem soll evdev denn geladen werden?

Elmar

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.

floo

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...

Elmar

#14
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?

floo

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.

floo

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

Elmar

/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


floo

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!!!!!

floo

Habe ich vergessen: Ganz vielen Dank für deine Hilfe!!!!!

Gruß,
Flo

Elmar

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 :)

floo

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