linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [eGalax] no click events with touchscreen
@ 2015-01-08  3:40 Gavin Lambert
  2015-01-08 15:16 ` Benjamin Tissoires
  0 siblings, 1 reply; 7+ messages in thread
From: Gavin Lambert @ 2015-01-08  3:40 UTC (permalink / raw)
  To: linux-input

Hi,

I have a new eGalax touchscreen (came with driver cd 5.1.0, if that helps).  I'm trying to use it from a Raspberry Pi, so I can't use the prebuilt drivers on that CD.  I've found the ARM-specific vendor drivers but I haven't installed them yet as I remember this working without them on an older model of eGalax touchscreen.

Even without those, it still seems to autodetect the touchscreen and it loads the hid_multitouch driver, and within X the pointer moves according to touches as expected.  However it does not perform any "click" action when the screen is touched.  (I'm ok with it behaving like a single-touch mouse -- I just want it to actually do something when touched.)

Is this a known issue, or something that can be fixed, or just a configuration error?  I've included some diagnostic output from various tools below in the hope that it may be useful to identify and/or fix the issue; please let me know if you need more information.

Note that at present I do not have anything specific in xorg.conf or xorg.conf.d related to the touchscreen; this did not seem to be necessary with the older hardware.

Regards,
Gavin Lambert


# uname -rm
3.12.34+ armv6l

# lsmod
...
hid_multitouch         9095  0
...
(usbtouchscreen does exist but is not loaded)

# lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 046d:c315 Logitech, Inc. Classic New Touch Keyboard
Bus 001 Device 005: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen

# lsusb -vv
...
Bus 001 Device 005: 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 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          1 
    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      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               2.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     341
         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     0x0040  1x 64 bytes
        bInterval               3
        ** UNRECOGNIZED:  19 ff 42 49 53 54 00 01 02 03 ff 00 00 00 00 00 01 04 b8 0b 02 05 b8 0b 00

# cat /proc/bus/input/devices
...
I: Bus=0003 Vendor=0eef Product=0001 Version=0210
N: Name="eGalax Inc. USB TouchController Pen"
P: Phys=usb-bcm2708_usb-1.5/input0
S: Sysfs=/devices/platform/bcm2708_usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input1
U: Uniq=
H: Handlers=mouse0 event1 
B: PROP=0
B: EV=1b
B: KEY=c01 0 0 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0003 Vendor=0eef Product=0001 Version=0210
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-bcm2708_usb-1.5/input0
S: Sysfs=/devices/platform/bcm2708_usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input2
U: Uniq=
H: Handlers=mouse1 event2 
B: PROP=2
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=a608000 3

# xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ eGalax Inc. USB TouchController         	id=8	[slave  pointer  (2)]
⎜   ↳ eGalax Inc. USB TouchController Pen     	id=7	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Logitech Logitech USB Keyboard          	id=6	[slave  keyboard (3)]

# evtest /dev/input/event2
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0xeef product 0x1 version 0x210
Input device name: "eGalax Inc. USB TouchController"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value   2866
      Min        0
      Max     4095
    Event code 1 (ABS_Y)
      Value   1832
      Min        0
      Max     4095
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max        7
   Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max     4095
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max     4095
    Event code 57 (ABS_MT_TRACKING_ID)
      Value      0
      Min        0
      Max    65535
    Event code 59 (?)
      Value      0
      Min        0
      Max        1
Properties:
  Property type 1 (INPUT_PROP_DIRECT)
Testing ... (interrupt to exit)
Event: time 1420680910.586895, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2056
Event: time 1420680910.586895, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1992
Event: time 1420680910.586895, type 3 (EV_ABS), code 59 (?), value 0
Event: time 1420680910.586895, type 3 (EV_ABS), code 0 (ABS_X), value 2056
Event: time 1420680910.586895, type 3 (EV_ABS), code 1 (ABS_Y), value 1992
Event: time 1420680910.586895, -------------- SYN_REPORT ------------
Event: time 1420680910.592882, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2054
Event: time 1420680910.592882, type 3 (EV_ABS), code 0 (ABS_X), value 2054
Event: time 1420680910.592882, -------------- SYN_REPORT ------------
Event: time 1420680910.596879, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2052
Event: time 1420680910.596879, type 3 (EV_ABS), code 0 (ABS_X), value 2052
Event: time 1420680910.596879, -------------- SYN_REPORT ------------
Event: time 1420680910.602928, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2050
Event: time 1420680910.602928, type 3 (EV_ABS), code 0 (ABS_X), value 2050
Event: time 1420680910.602928, -------------- SYN_REPORT ------------
Event: time 1420680910.608902, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2048
Event: time 1420680910.608902, type 3 (EV_ABS), code 0 (ABS_X), value 2048
Event: time 1420680910.608902, -------------- SYN_REPORT ------------
Event: time 1420680910.662871, type 3 (EV_ABS), code 59 (?), value 1
Event: time 1420680910.662871, -------------- SYN_REPORT ------------

# evtest /dev/input/event1
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0xeef product 0x1 version 0x210
Input device name: "eGalax Inc. USB TouchController Pen"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 320 (BTN_TOOL_PEN)
    Event code 330 (BTN_TOUCH)
    Event code 331 (BTN_STYLUS)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min        0
      Max     4095
    Event code 1 (ABS_Y)
      Value      0
      Min        0
      Max     4095
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)

The above was the output from a single touch at approximately the centre of the screen, in each test.  The "Pen" device does not seem to be generating any events on touch (but then I don't have a magic touch pen, just a finger or passive stylus; I'm not sure if that makes a difference).


--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [eGalax] no click events with touchscreen
  2015-01-08  3:40 [eGalax] no click events with touchscreen Gavin Lambert
@ 2015-01-08 15:16 ` Benjamin Tissoires
       [not found]   ` <000b01d02b91$4303a8f0$c90afad0$@compacsort.com>
  0 siblings, 1 reply; 7+ messages in thread
From: Benjamin Tissoires @ 2015-01-08 15:16 UTC (permalink / raw)
  To: Gavin Lambert; +Cc: linux-input

On Wed, Jan 7, 2015 at 10:40 PM, Gavin Lambert <gavinl@compacsort.com> wrote:
> Hi,
>
> I have a new eGalax touchscreen (came with driver cd 5.1.0, if that helps).  I'm trying to use it from a Raspberry Pi, so I can't use the prebuilt drivers on that CD.  I've found the ARM-specific vendor drivers but I haven't installed them yet as I remember this working without them on an older model of eGalax touchscreen.
>
> Even without those, it still seems to autodetect the touchscreen and it loads the hid_multitouch driver, and within X the pointer moves according to touches as expected.  However it does not perform any "click" action when the screen is touched.  (I'm ok with it behaving like a single-touch mouse -- I just want it to actually do something when touched.)
>
> Is this a known issue, or something that can be fixed, or just a configuration error?  I've included some diagnostic output from various tools below in the hope that it may be useful to identify and/or fix the issue; please let me know if you need more information.

No it's not a known issue. More comments later.

>
> Note that at present I do not have anything specific in xorg.conf or xorg.conf.d related to the touchscreen; this did not seem to be necessary with the older hardware.
>
> Regards,
> Gavin Lambert
>
>
> # uname -rm
> 3.12.34+ armv6l
>
> # lsmod
> ...
> hid_multitouch         9095  0
> ...
> (usbtouchscreen does exist but is not loaded)
>
> # lsusb
> Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
> Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
> Bus 001 Device 004: ID 046d:c315 Logitech, Inc. Classic New Touch Keyboard
> Bus 001 Device 005: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
>
> # lsusb -vv
> ...
> Bus 001 Device 005: 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
>   iProduct                2
>   iSerial                 0
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           59
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          1
>     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      1 Boot Interface Subclass
>       bInterfaceProtocol      2 Mouse
>       iInterface              0
>         HID Device Descriptor:
>           bLength                 9
>           bDescriptorType        33
>           bcdHID               2.10
>           bCountryCode            0 Not supported
>           bNumDescriptors         1
>           bDescriptorType        34 Report
>           wDescriptorLength     341
>          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     0x0040  1x 64 bytes
>         bInterval               3
>         ** UNRECOGNIZED:  19 ff 42 49 53 54 00 01 02 03 ff 00 00 00 00 00 01 04 b8 0b 02 05 b8 0b 00
>
> # cat /proc/bus/input/devices
> ...
> I: Bus=0003 Vendor=0eef Product=0001 Version=0210
> N: Name="eGalax Inc. USB TouchController Pen"
> P: Phys=usb-bcm2708_usb-1.5/input0
> S: Sysfs=/devices/platform/bcm2708_usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input1
> U: Uniq=
> H: Handlers=mouse0 event1
> B: PROP=0
> B: EV=1b
> B: KEY=c01 0 0 0 0 0 0 0 0 0 0
> B: ABS=3
> B: MSC=10
>
> I: Bus=0003 Vendor=0eef Product=0001 Version=0210
> N: Name="eGalax Inc. USB TouchController"
> P: Phys=usb-bcm2708_usb-1.5/input0
> S: Sysfs=/devices/platform/bcm2708_usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input2
> U: Uniq=
> H: Handlers=mouse1 event2
> B: PROP=2
> B: EV=b
> B: KEY=400 0 0 0 0 0 0 0 0 0 0
> B: ABS=a608000 3
>
> # xinput
> ⎡ Virtual core pointer                          id=2    [master pointer  (3)]
> ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
> ⎜   ↳ eGalax Inc. USB TouchController           id=8    [slave  pointer  (2)]
> ⎜   ↳ eGalax Inc. USB TouchController Pen       id=7    [slave  pointer  (2)]
> ⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
>     ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
>     ↳ Logitech Logitech USB Keyboard            id=6    [slave  keyboard (3)]
>
> # evtest /dev/input/event2
> Input driver version is 1.0.1
> Input device ID: bus 0x3 vendor 0xeef product 0x1 version 0x210
> Input device name: "eGalax Inc. USB TouchController"
> Supported events:
>   Event type 0 (EV_SYN)
>   Event type 1 (EV_KEY)
>     Event code 330 (BTN_TOUCH)
>   Event type 3 (EV_ABS)
>     Event code 0 (ABS_X)
>       Value   2866
>       Min        0
>       Max     4095
>     Event code 1 (ABS_Y)
>       Value   1832
>       Min        0
>       Max     4095
>     Event code 47 (ABS_MT_SLOT)
>       Value      0
>       Min        0
>       Max        7
>    Event code 53 (ABS_MT_POSITION_X)
>       Value      0
>       Min        0
>       Max     4095
>     Event code 54 (ABS_MT_POSITION_Y)
>       Value      0
>       Min        0
>       Max     4095
>     Event code 57 (ABS_MT_TRACKING_ID)
>       Value      0
>       Min        0
>       Max    65535
>     Event code 59 (?)
>       Value      0
>       Min        0
>       Max        1
> Properties:
>   Property type 1 (INPUT_PROP_DIRECT)
> Testing ... (interrupt to exit)
> Event: time 1420680910.586895, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2056
> Event: time 1420680910.586895, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1992
> Event: time 1420680910.586895, type 3 (EV_ABS), code 59 (?), value 0
> Event: time 1420680910.586895, type 3 (EV_ABS), code 0 (ABS_X), value 2056
> Event: time 1420680910.586895, type 3 (EV_ABS), code 1 (ABS_Y), value 1992
> Event: time 1420680910.586895, -------------- SYN_REPORT ------------
> Event: time 1420680910.592882, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2054
> Event: time 1420680910.592882, type 3 (EV_ABS), code 0 (ABS_X), value 2054
> Event: time 1420680910.592882, -------------- SYN_REPORT ------------
> Event: time 1420680910.596879, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2052
> Event: time 1420680910.596879, type 3 (EV_ABS), code 0 (ABS_X), value 2052
> Event: time 1420680910.596879, -------------- SYN_REPORT ------------
> Event: time 1420680910.602928, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2050
> Event: time 1420680910.602928, type 3 (EV_ABS), code 0 (ABS_X), value 2050
> Event: time 1420680910.602928, -------------- SYN_REPORT ------------
> Event: time 1420680910.608902, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 2048
> Event: time 1420680910.608902, type 3 (EV_ABS), code 0 (ABS_X), value 2048
> Event: time 1420680910.608902, -------------- SYN_REPORT ------------
> Event: time 1420680910.662871, type 3 (EV_ABS), code 59 (?), value 1
> Event: time 1420680910.662871, -------------- SYN_REPORT ------------

So here, everything seems fine except for the tracking ID and the
BTN_TOUCH. The kernel does not sends the touch begin and touch end
information, thus the device is not working :(

Can you compile and install hid-recorder from
http://bentiss.github.io/hid-replay-docs/ ?
I would need a hid-record of your touchscreen so I can figure out why
the kernel does not handle it properly.

Cheers,
Benjamin

>
> # evtest /dev/input/event1
> Input driver version is 1.0.1
> Input device ID: bus 0x3 vendor 0xeef product 0x1 version 0x210
> Input device name: "eGalax Inc. USB TouchController Pen"
> Supported events:
>   Event type 0 (EV_SYN)
>   Event type 1 (EV_KEY)
>     Event code 320 (BTN_TOOL_PEN)
>     Event code 330 (BTN_TOUCH)
>     Event code 331 (BTN_STYLUS)
>   Event type 3 (EV_ABS)
>     Event code 0 (ABS_X)
>       Value      0
>       Min        0
>       Max     4095
>     Event code 1 (ABS_Y)
>       Value      0
>       Min        0
>       Max     4095
>   Event type 4 (EV_MSC)
>     Event code 4 (MSC_SCAN)
> Properties:
> Testing ... (interrupt to exit)
>
> The above was the output from a single touch at approximately the centre of the screen, in each test.  The "Pen" device does not seem to be generating any events on touch (but then I don't have a magic touch pen, just a finger or passive stylus; I'm not sure if that makes a difference).
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [eGalax] no click events with touchscreen
       [not found]   ` <000b01d02b91$4303a8f0$c90afad0$@compacsort.com>
@ 2015-01-08 22:54     ` Benjamin Tissoires
  2015-01-08 23:19       ` Gavin Lambert
  0 siblings, 1 reply; 7+ messages in thread
From: Benjamin Tissoires @ 2015-01-08 22:54 UTC (permalink / raw)
  To: Gavin Lambert; +Cc: linux-input

Hi,


On Thu, Jan 8, 2015 at 5:20 PM, Gavin Lambert <gavinl@compacsort.com> wrote:
> On 9 January 2015 04:17, you quoth:
>> So here, everything seems fine except for the tracking ID and the BTN_TOUCH.
>> The kernel does not sends the touch begin and touch end information, thus the
>> device is not working :(
>>
>> Can you compile and install hid-recorder from http://bentiss.github.io/hid-
>> replay-docs/ ?
>> I would need a hid-record of your touchscreen so I can figure out why the
>> kernel does not handle it properly.
>
> Attached.  (Sent off-list to avoid spamming uninterested parties with the file; please feel free to reply on-list if you prefer.)
>
> During the recording, I made one touch and release to the centre of the screen, waited about three seconds, then did a staggered two-point multitouch (touch left, touch right, release left, release right).  Just in case both scenarios are useful to you.
>

Well, unfortunately, when I first read your bug report, I missed that
you are using one of the most buggy touchscreen available.
Egalax still tries to reuse the product id 0001 for *many* different
touchscreens. Some are multitouch, some are not.
With all this mess, it is impossible to figure out which way to go and
write something upstream about it :(

Anyway, given your hid outputs, if you run the following command
before plugging your touchscreen (at boot is a good idea), you should
be fine:
# echo 3 0eef 0001 16 > /sys/bus/hid/drivers/hid-multitouch/new_id

*BUT* the outputs show only _one_ touch when you said you made 2.

I must also say that this device presents itself as a Win8 certified
one whereas it is clearly not following the spec. So my best advice
would be to send it back to the store, and buy another one :(


> Not sure if this is significant, but when it was asking for the hidraw device it only listed one device for the touchscreen; it did not have a second "Pen" device as exists at the /dev/input/eventN level.
>

Yeah, that's expected. The second input node is created by looking at
the report descriptors and the splitting is done in hid-multitouch.

Cheers,
Benjamin

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [eGalax] no click events with touchscreen
  2015-01-08 22:54     ` Benjamin Tissoires
@ 2015-01-08 23:19       ` Gavin Lambert
  2015-01-09  0:07         ` Benjamin Tissoires
  0 siblings, 1 reply; 7+ messages in thread
From: Gavin Lambert @ 2015-01-08 23:19 UTC (permalink / raw)
  To: 'Benjamin Tissoires'; +Cc: linux-input

On 9 January 2015 11:55, quoth Benjamin Tissoires:
> On Thu, Jan 8, 2015 at 5:20 PM, Gavin Lambert <gavinl@compacsort.com> wrote:
> > On 9 January 2015 04:17, you quoth:
> >> So here, everything seems fine except for the tracking ID and the
> BTN_TOUCH.
> >> The kernel does not sends the touch begin and touch end information,
> >> thus the device is not working :(
> >>
> >> Can you compile and install hid-recorder from
> >> http://bentiss.github.io/hid- replay-docs/ ?
> >> I would need a hid-record of your touchscreen so I can figure out why
> >> the kernel does not handle it properly.
> >
> > Attached.  (Sent off-list to avoid spamming uninterested parties with
> > the file; please feel free to reply on-list if you prefer.)
> >
> > During the recording, I made one touch and release to the centre of the
> screen, waited about three seconds, then did a staggered two-point multitouch
> (touch left, touch right, release left, release right).  Just in case both
> scenarios are useful to you.
> >
> 
> Well, unfortunately, when I first read your bug report, I missed that you are
> using one of the most buggy touchscreen available.
> Egalax still tries to reuse the product id 0001 for *many* different
> touchscreens. Some are multitouch, some are not.
> With all this mess, it is impossible to figure out which way to go and write
> something upstream about it :(

Buggy or not, it seems to be the most common kind of small panel commercially available for the Pi.  Two out of three touchscreens I've tried getting seem to be eGalax ones.

> Anyway, given your hid outputs, if you run the following command before
> plugging your touchscreen (at boot is a good idea), you should be fine:
> # echo 3 0eef 0001 16 > /sys/bus/hid/drivers/hid-multitouch/new_id

I could probably add this to an init script somewhere, but I don't think there's any way I can do this before the touchscreen is physically connected.  Would it be sufficient to put it after mounting sys but before starting udev?

> *BUT* the outputs show only _one_ touch when you said you made 2.

This doesn't really surprise me.  It's a resistive panel, so I was very surprised when it loaded the multitouch driver.  Maybe that's the real problem?



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [eGalax] no click events with touchscreen
  2015-01-08 23:19       ` Gavin Lambert
@ 2015-01-09  0:07         ` Benjamin Tissoires
  2015-01-09  2:58           ` Gavin Lambert
  0 siblings, 1 reply; 7+ messages in thread
From: Benjamin Tissoires @ 2015-01-09  0:07 UTC (permalink / raw)
  To: Gavin Lambert; +Cc: linux-input

On Thu, Jan 8, 2015 at 6:19 PM, Gavin Lambert <gavinl@compacsort.com> wrote:
> On 9 January 2015 11:55, quoth Benjamin Tissoires:
>> On Thu, Jan 8, 2015 at 5:20 PM, Gavin Lambert <gavinl@compacsort.com> wrote:
>> > On 9 January 2015 04:17, you quoth:
>> >> So here, everything seems fine except for the tracking ID and the
>> BTN_TOUCH.
>> >> The kernel does not sends the touch begin and touch end information,
>> >> thus the device is not working :(
>> >>
>> >> Can you compile and install hid-recorder from
>> >> http://bentiss.github.io/hid- replay-docs/ ?
>> >> I would need a hid-record of your touchscreen so I can figure out why
>> >> the kernel does not handle it properly.
>> >
>> > Attached.  (Sent off-list to avoid spamming uninterested parties with
>> > the file; please feel free to reply on-list if you prefer.)
>> >
>> > During the recording, I made one touch and release to the centre of the
>> screen, waited about three seconds, then did a staggered two-point multitouch
>> (touch left, touch right, release left, release right).  Just in case both
>> scenarios are useful to you.
>> >
>>
>> Well, unfortunately, when I first read your bug report, I missed that you are
>> using one of the most buggy touchscreen available.
>> Egalax still tries to reuse the product id 0001 for *many* different
>> touchscreens. Some are multitouch, some are not.
>> With all this mess, it is impossible to figure out which way to go and write
>> something upstream about it :(
>
> Buggy or not, it seems to be the most common kind of small panel commercially available for the Pi.  Two out of three touchscreens I've tried getting seem to be eGalax ones.
>
>> Anyway, given your hid outputs, if you run the following command before
>> plugging your touchscreen (at boot is a good idea), you should be fine:
>> # echo 3 0eef 0001 16 > /sys/bus/hid/drivers/hid-multitouch/new_id
>
> I could probably add this to an init script somewhere, but I don't think there's any way I can do this before the touchscreen is physically connected.  Would it be sufficient to put it after mounting sys but before starting udev?

You can also make an udev rule which write 1040 in
/sys/bus/hid/devices/0003\:0EEF\:0001.*/quirks on plug in an udev rule
(you should probably rely on the path given by the udev rule instead
of writing the wildcard).

>
>> *BUT* the outputs show only _one_ touch when you said you made 2.
>
> This doesn't really surprise me.  It's a resistive panel, so I was very surprised when it loaded the multitouch driver.  Maybe that's the real problem?
>
>

Oh, that explains a lot. So they are trying to add a lot more of noise
by sharing the multitouch report descriptors with single touch only
devices... A big mess I told you :(

Cheers,
Benjamin

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [eGalax] no click events with touchscreen
  2015-01-09  0:07         ` Benjamin Tissoires
@ 2015-01-09  2:58           ` Gavin Lambert
  2015-01-12 15:51             ` Benjamin Tissoires
  0 siblings, 1 reply; 7+ messages in thread
From: Gavin Lambert @ 2015-01-09  2:58 UTC (permalink / raw)
  To: 'Benjamin Tissoires'; +Cc: linux-input

On 9 January 2015 13:08, quoth Benjamin Tissoires:
> You can also make an udev rule which write 1040 in
> /sys/bus/hid/devices/0003\:0EEF\:0001.*/quirks on plug in an udev rule (you
> should probably rely on the path given by the udev rule instead of writing
> the wildcard).

I get a "permission denied" error trying to write to that pseudo-file after boot, even with sudo.  (It currently contains 3088.)

I also tried writing the following udev rule and rebooting, but it had no effect; not sure if I'm doing it wrong or if it's having the same problem:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0eef", ATTRS{idProduct}=="0001", RUN+="echo 1040 > /sys/bus/hid/devices/0003\:0EEF\:0001.0002/quirks"



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [eGalax] no click events with touchscreen
  2015-01-09  2:58           ` Gavin Lambert
@ 2015-01-12 15:51             ` Benjamin Tissoires
  0 siblings, 0 replies; 7+ messages in thread
From: Benjamin Tissoires @ 2015-01-12 15:51 UTC (permalink / raw)
  To: Gavin Lambert; +Cc: linux-input

On Thu, Jan 8, 2015 at 9:58 PM, Gavin Lambert <gavinl@compacsort.com> wrote:
> On 9 January 2015 13:08, quoth Benjamin Tissoires:
>> You can also make an udev rule which write 1040 in
>> /sys/bus/hid/devices/0003\:0EEF\:0001.*/quirks on plug in an udev rule (you
>> should probably rely on the path given by the udev rule instead of writing
>> the wildcard).
>
> I get a "permission denied" error trying to write to that pseudo-file after boot, even with sudo.  (It currently contains 3088.)

You need root access, so you'll need a true root shell to be able to
write on the file.

>
> I also tried writing the following udev rule and rebooting, but it had no effect; not sure if I'm doing it wrong or if it's having the same problem:
>
> SUBSYSTEM=="usb", ATTRS{idVendor}=="0eef", ATTRS{idProduct}=="0001", RUN+="echo 1040 > /sys/bus/hid/devices/0003\:0EEF\:0001.0002/quirks"
>

IIRC, plain redirection can not work anymore with recent udev/systemd
versions. Also, the .0002 at the end should not be encoded directly in
the udev rule. You can rely on %k, which is the name of the device
given by udev.

I think, you should use something like that:

DRIVER=="hid-multitouch",
ENV{MODALIAS}=="hid:b0003g0004v00000EEFp00000001", RUN+="/bin/sh
/etc/udev/fix_hid_multitouch.sh %k"

With /etc/udev/fix_hid_multitouch.sh being:

#> cat > /etc/udev/fix_hid_multitouch.sh << EOF
#!/bin/bash

DEVICE=$1

echo 1040 > "/sys/bus/hid/devices/${DEVICE}/quirks"
EOF

This is untested, but it should give you some more clues to go further
if it does not work directly.

Cheers,
Benjamin

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-01-12 15:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-08  3:40 [eGalax] no click events with touchscreen Gavin Lambert
2015-01-08 15:16 ` Benjamin Tissoires
     [not found]   ` <000b01d02b91$4303a8f0$c90afad0$@compacsort.com>
2015-01-08 22:54     ` Benjamin Tissoires
2015-01-08 23:19       ` Gavin Lambert
2015-01-09  0:07         ` Benjamin Tissoires
2015-01-09  2:58           ` Gavin Lambert
2015-01-12 15:51             ` Benjamin Tissoires

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).