0
Touchscreen monitor CX 21.5" - eGalax TouchScreen

Solved 1 Respuestas 3 Views

Tengo que configurar un monitor CX modelo "Touch CX2151404015" en un sistema Linux Desktop. El monitor es tipo Led, de 21.5 pulgadas con resolución nativa de 1920x1080px, tiene entradas VGA y HDMI. El panel Touch integrado es USB, con un conector USB-A hembra y el monitor vino con un cable USB A-A para conectar a una computadora. El panel se identifica de esta manera [0].

Estoy intentando con Ubuntu 14.04.2 Desktop, pero podría ser otro igual amigable para usuarios finales ( o con esas pretensiones).

El Panel se integra al sistema recién instalado, pero con el eje X invertido y descalibrado (no todas las zonas reaccionan y no se corresponde la posición del puntero con el punto tocado).

He seguido la guía https://wiki.ubuntu.com/Touchscreen#eGalax_Touchscreens_in_14.04LTS, que usa algunas aplicaciones propietarias del fabricante eeti-eGalax, pero al ejecutar eGTouchU éste no muestra ningún panel. Viendo los logs que deja el demonio en /tmp/ veo que indica que no debería estar corriendo el módulo usbtouchscreen, pero si lo remuevo y paso a blacklist, ni lo ve el programa ni se integra el panel al sistema. El kernel es un 3.16.0

¿Alguna idea? Gracias,

[0]

Bus 003 Device 004: 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                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 
    bmAttributes         0xa0
      (Bus Powered)
      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

 

 

1 Respuesta

2
Mejor respuesta
Si tiras un:

xinput list

Te aparece en el listado con algun id en particular el touch?
Si aparece ahi proba de hacer:

xinput list --long #id

donde #id es el id del dispositivo segun la salida anterior, fijate que 'clases' te reporta, deberia aparecer: XITouchClass, XIButtonClass.
Si no aparece como input de las X, fijate esto:

Haces:

grep '.*' /sys/bus/usb/devices/*/product

Te fijas cual dice eGalax, toma nota del path, por ejemplo el path:

/sys/bus/usb/devices/1-2/

Haces un ls, deberia haber un subdirectorio con la misma numeracion, algo como:

/sys/bus/usb/devices/1-2/1-2\:1.0/

Y ahi dentro otro directorio como

/sys/bus/usb/devices/1-2/1-2\:1.0/0003:1050:0010.0001/

Ahora bien ese es el endpoint de tu USB, ahi vas a ver varias carpetas y archivos, por ej:

driver/            hidraw/            input/             modalias           power/             report_descriptor  subsystem/         uevent

Si te fijas en hidraw o en input vas a poder ver el id asignado en /dev/:

input/input6/

hidraw/hidraw0/

Con esta informacion podes entonces hacer la siguente prueba:

sudo cat /dev/hidraw0

Y toca la pantalla para ver si se genera informacion (van a aparecer caracteres raros), despues proba con:

sudo cat /dev/input/input6

Ahi deberias ver el input postporcesado por el driiver de entrada. Si solo ves hidraw y no ves input es porque entonces el driver no esta identificando bien el dispositivo.
respondido por qlixed (10,610 puntos) Jul 14, 2015
seleccionada por edux Ago 10, 2015
3Comentarios
comentado por MAbeeTT (2,020 puntos) Jul 14, 2015
$ xinput list --long 9
eGalax Inc. USB TouchController                 id=9    [slave  pointer  (2)]
        Reporting 3 classes:
                Class originated from: 9. Type: XIButtonClass
                Buttons supported: 5
                Button labels: "Button Unknown" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down"
                Button state:
                Class originated from: 9. Type: XIValuatorClass
                Detail for Valuator 0:
                  Label: Abs X
                  Range: 0.000000 - 2047.000000
                  Resolution: 0 units/m
                  Mode: absolute
                  Current value: 1406.000000
                Class originated from: 9. Type: XIValuatorClass
                Detail for Valuator 1:
                  Label: Abs Y
                  Range: 0.000000 - 2047.000000
                  Resolution: 0 units/m
                  Mode: absolute
                  Current value: 1755.000000
# del input, no aparece, sí event, se corresponde event4.
$ ls -l  /dev/input/by-id/usb-eGalax_Inc._USB_TouchController-event-if00
lrwxrwxrwx 1 root root 9 jul 13 22:59 /dev/input/by-id/usb-eGalax_Inc._USB_TouchController-event-if00 -> ../event4

Y sí, son caracteres raros.
El puntero reacciona con el panel (driver xorg evdev), pero pasa que las coordenadas que recojo con evtest no son lineales, esto es. para la misma coorenada X, y distinto Y, el valor de X varía bastante. Entonces xinput_calibrator falla. Veo en la descripción de la app que propone el fabricante que ésta tiene un mecanismo de calibración con más de 4 puntos, de manera que corregiría la alinealidad de la pantalla. Claro, no puedo hacer corre la app.
comentado por qlixed (10,610 puntos) Jul 14, 2015
Me pasaron este dato, ejecuta:

xinput set-prop --type=int --format=8 "eGalax Inc. USB  TouchController" "Evdev Axes Swap" 1
xinput set-int-prop "eGalax Inc. USB TouchController" "Evdev Axis Inversion" 8 0 1
El ultimo si las Y estan invertidas como comentabas antes, ademas, para calibrarlo:

xinput_calibrator -v

Si falla proba con:

xinput_calibrator -v --precalib 0 2047 0 2047

Comenta q onda dps!.
comentado por MAbeeTT (2,020 puntos) Jul 17, 2015
Para calibrar terminé useand evtest y un portaminas de punta plástica. Con los valores que usé para la opción "Calibration" del driver evdev para xorg/xfree86.

Es posible que la calibración resulte inadecuada en todas las zonas de la pantalla porque no encuentro en el sistema cómo linealizar fácilmente la salida del driver. Aparentemente eso haría la aplicación del fabricante. Para salvar un poco eso, tomé las 4 esquinas de la pantalla y promedié los valores.

archivo 99-calibration.conf en /etc/X11/xorg.conf.d
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "eGalax Inc. USB TouchController"

# Coordenadas  
# pantalla (0,0 es esquina superior izquierda) vs salida evtest
#    0,0        -> 1965,150
#    0,1080     -> 1945,1670
#    1920,0     -> 100,193
#    1920,1080  -> 119,1535
#    Option "Calibration" "min-x max-x min-y max-y"

        Option  "Calibration"   "1955 110 172 1590"

EndSection
fin archivo.
...