Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 03 Jun 2021 19:37:35 -0500
From:      Mark Kane <mark@kane.mn>
To:        Vladimir Kondratyev <wulf@freebsd.org>
Cc:        usb@freebsd.org, hps@selasky.org
Subject:   Re: eGalax USB touchscreen issues
Message-ID:  <59ba07a0ecbdac36746fe18ea5f0559f@kane.mn>
In-Reply-To: <c9e68dbb-5382-976d-7302-d816d8636153@FreeBSD.org>
References:  <324d49ca-1c0e-659d-194d-ece4d5f7f5e2@FreeBSD.org> <0ae3fec48e2c351d2c006f4ba4932cd7@kane.mn> <166dd4d4-24cd-c24b-d75e-9a34fa734358@FreeBSD.org> <eccaff2a99153fb44ffa8df3c93d7eb6@kane.mn> <36983ce5-8358-5a04-2377-46067d3c3c79@FreeBSD.org> <c9e68dbb-5382-976d-7302-d816d8636153@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2021-06-02 20:14, Vladimir Kondratyev wrote:
>> For now, report descriptor is not broken but it still does not match 
>> my
>> expectations. Could you post output of
>> 
>> install sysutils/hid-tools
>> sudo kldload hidraw.ko
>> sudo hid-decode /dev/hidraw#
>> 
>> Where # is number corresponding your touchscreen
> 
> One more patch :-) with relaxed as compared to MS specs requirements to
> usages presence.

Thanks for the updated patches, I think we're getting very close :). 
With latest patch:

# dmesg | grep hidraw
hidraw0: <Lite-On Technology Corp. USB Multimedia Keyboard Raw HID 
Device> on hidbus0
hidraw1: <eGalax Inc. USB TouchController Raw HID Device> on hidbus1
# hid-decode /dev/hidraw1
0x05, 0x01,                    // Usage Page (Generic Desktop)        0
0x09, 0x01,                    // Usage (Pointer)                     2
0xa1, 0x01,                    // Collection (Application)            4
0x85, 0x01,                    //  Report ID (1)                      6
0x09, 0x01,                    //  Usage (Pointer)                    8
0xa1, 0x00,                    //  Collection (Physical)              10
0x05, 0x09,                    //   Usage Page (Button)               12
0x19, 0x01,                    //   Usage Minimum (1)                 14
0x29, 0x02,                    //   Usage Maximum (2)                 16
0x15, 0x00,                    //   Logical Minimum (0)               18
0x25, 0x01,                    //   Logical Maximum (1)               20
0x95, 0x02,                    //   Report Count (2)                  22
0x75, 0x01,                    //   Report Size (1)                   24
0x81, 0x02,                    //   Input (Data,Var,Abs)              26
0x95, 0x01,                    //   Report Count (1)                  28
0x75, 0x06,                    //   Report Size (6)                   30
0x81, 0x01,                    //   Input (Cnst,Arr,Abs)              32
0x05, 0x01,                    //   Usage Page (Generic Desktop)      34
0x09, 0x30,                    //   Usage (X)                         36
0x09, 0x31,                    //   Usage (Y)                         38
0x16, 0x00, 0x00,              //   Logical Minimum (0)               40
0x26, 0xff, 0x0f,              //   Logical Maximum (4095)            43
0x36, 0x00, 0x00,              //   Physical Minimum (0)              46
0x46, 0xff, 0x0f,              //   Physical Maximum (4095)           49
0x66, 0x00, 0x00,              //   Unit (None)                       52
0x75, 0x10,                    //   Report Size (16)                  55
0x95, 0x02,                    //   Report Count (2)                  57
0x81, 0x02,                    //   Input (Data,Var,Abs)              59
0xc0,                          //  End Collection                     61
0xc0,                          // End Collection                      62
0x05, 0x0d,                    // Usage Page (Digitizers)             63
0x09, 0x04,                    // Usage (Touch Screen)                65
0xa1, 0x01,                    // Collection (Application)            67
0x85, 0x02,                    //  Report ID (2)                      69
0x09, 0x20,                    //  Usage (Stylus)                     71
0xa1, 0x00,                    //  Collection (Physical)              73
0x09, 0x42,                    //   Usage (Tip Switch)                75
0x09, 0x32,                    //   Usage (In Range)                  77
0x15, 0x00,                    //   Logical Minimum (0)               79
0x25, 0x01,                    //   Logical Maximum (1)               81
0x95, 0x02,                    //   Report Count (2)                  83
0x75, 0x01,                    //   Report Size (1)                   85
0x81, 0x02,                    //   Input (Data,Var,Abs)              87
0x95, 0x06,                    //   Report Count (6)                  89
0x75, 0x01,                    //   Report Size (1)                   91
0x81, 0x03,                    //   Input (Cnst,Var,Abs)              93
0x05, 0x01,                    //   Usage Page (Generic Desktop)      95
0x09, 0x30,                    //   Usage (X)                         97
0x75, 0x10,                    //   Report Size (16)                  99
0x95, 0x01,                    //   Report Count (1)                  
101
0xa4,                          //   Push                              
103
0x55, 0x0d,                    //   Unit Exponent (-3)                
104
0x65, 0x33,                    //   Unit (Inch^3,EngLinear)           
106
0x36, 0x00, 0x00,              //   Physical Minimum (0)              
108
0x46, 0x99, 0x28,              //   Physical Maximum (10393)          
111
0x16, 0x00, 0x00,              //   Logical Minimum (0)               
114
0x26, 0xff, 0x0f,              //   Logical Maximum (4095)            
117
0x81, 0x02,                    //   Input (Data,Var,Abs)              
120
0x09, 0x31,                    //   Usage (Y)                         
122
0x16, 0x00, 0x00,              //   Logical Minimum (0)               
124
0x26, 0xff, 0x0f,              //   Logical Maximum (4095)            
127
0x36, 0x00, 0x00,              //   Physical Minimum (0)              
130
0x46, 0xaf, 0x19,              //   Physical Maximum (6575)           
133
0x81, 0x02,                    //   Input (Data,Var,Abs)              
136
0xb4,                          //   Pop                               
138
0xc0,                          //  End Collection                     
139
0xc0,                          // End Collection                      
140
0x06, 0x00, 0xff,              // Usage Page (Vendor Defined Page 1)  
141
0x09, 0x01,                    // Usage (Vendor Usage 1)              
144
0xa1, 0x01,                    // Collection (Application)            
146
0x09, 0x01,                    //  Usage (Vendor Usage 1)             
148
0x15, 0x00,                    //  Logical Minimum (0)                
150
0x26, 0xff, 0x00,              //  Logical Maximum (255)              
152
0x85, 0x03,                    //  Report ID (3)                      
155
0x75, 0x08,                    //  Report Size (8)                    
157
0x95, 0x3f,                    //  Report Count (63)                  
159
0x81, 0x02,                    //  Input (Data,Var,Abs)               
161
0x06, 0x00, 0xff,              //  Usage Page (Vendor Defined Page 1) 
163
0x09, 0x01,                    //  Usage (Vendor Usage 1)             
166
0x15, 0x00,                    //  Logical Minimum (0)                
168
0x26, 0xff, 0x00,              //  Logical Maximum (255)              
170
0x75, 0x08,                    //  Report Size (8)                    
173
0x95, 0x07,                    //  Report Count (7)                   
175
0x91, 0x02,                    //  Output (Data,Var,Abs)              
177
0xc0,                          // End Collection                      
179
0x05, 0x0d,                    // Usage Page (Digitizers)             
180
0x09, 0x04,                    // Usage (Touch Screen)                
182
0xa1, 0x01,                    // Collection (Application)            
184
0x85, 0x04,                    //  Report ID (4)                      
186
0x09, 0x22,                    //  Usage (Finger)                     
188
0xa1, 0x00,                    //  Collection (Physical)              
190
0x09, 0x42,                    //   Usage (Tip Switch)                
192
0x15, 0x00,                    //   Logical Minimum (0)               
194
0x25, 0x01,                    //   Logical Maximum (1)               
196
0x75, 0x01,                    //   Report Size (1)                   
198
0x95, 0x01,                    //   Report Count (1)                  
200
0x81, 0x02,                    //   Input (Data,Var,Abs)              
202
0x09, 0x32,                    //   Usage (In Range)                  
204
0x15, 0x00,                    //   Logical Minimum (0)               
206
0x25, 0x01,                    //   Logical Maximum (1)               
208
0x81, 0x02,                    //   Input (Data,Var,Abs)              
210
0x09, 0x51,                    //   Usage (Contact Id)                
212
0x75, 0x05,                    //   Report Size (5)                   
214
0x95, 0x01,                    //   Report Count (1)                  
216
0x16, 0x00, 0x00,              //   Logical Minimum (0)               
218
0x26, 0x10, 0x00,              //   Logical Maximum (16)              
221
0x81, 0x02,                    //   Input (Data,Var,Abs)              
224
0x09, 0x47,                    //   Usage (Confidence)                
226
0x75, 0x01,                    //   Report Size (1)                   
228
0x95, 0x01,                    //   Report Count (1)                  
230
0x15, 0x00,                    //   Logical Minimum (0)               
232
0x25, 0x01,                    //   Logical Maximum (1)               
234
0x81, 0x02,                    //   Input (Data,Var,Abs)              
236
0x05, 0x01,                    //   Usage Page (Generic Desktop)      
238
0x09, 0x30,                    //   Usage (X)                         
240
0x75, 0x10,                    //   Report Size (16)                  
242
0x95, 0x01,                    //   Report Count (1)                  
244
0x55, 0x0d,                    //   Unit Exponent (-3)                
246
0x65, 0x33,                    //   Unit (Inch^3,EngLinear)           
248
0x35, 0x00,                    //   Physical Minimum (0)              
250
0x46, 0x60, 0x17,              //   Physical Maximum (5984)           
252
0x26, 0xff, 0x0f,              //   Logical Maximum (4095)            
255
0x81, 0x02,                    //   Input (Data,Var,Abs)              
258
0x09, 0x31,                    //   Usage (Y)                         
260
0x75, 0x10,                    //   Report Size (16)                  
262
0x95, 0x01,                    //   Report Count (1)                  
264
0x55, 0x0d,                    //   Unit Exponent (-3)                
266
0x65, 0x33,                    //   Unit (Inch^3,EngLinear)           
268
0x35, 0x00,                    //   Physical Minimum (0)              
270
0x46, 0x26, 0x0e,              //   Physical Maximum (3622)           
272
0x26, 0xff, 0x0f,              //   Logical Maximum (4095)            
275
0x81, 0x02,                    //   Input (Data,Var,Abs)              
278
0x05, 0x0d,                    //   Usage Page (Digitizers)           
280
0x09, 0x55,                    //   Usage (Contact Max)               
282
0x25, 0x08,                    //   Logical Maximum (8)               
284
0x75, 0x08,                    //   Report Size (8)                   
286
0x95, 0x01,                    //   Report Count (1)                  
288
0xb1, 0x02,                    //   Feature (Data,Var,Abs)            
290
0xc0,                          //  End Collection                     
292
0x06, 0x00, 0xff,              //  Usage Page (Vendor Defined Page 1) 
293
0x09, 0xc5,                    //  Usage (Vendor Usage 0xc5)          
296
0x85, 0x07,                    //  Report ID (7)                      
298
0x15, 0x00,                    //  Logical Minimum (0)                
300
0x26, 0xff, 0x00,              //  Logical Maximum (255)              
302
0x75, 0x08,                    //  Report Size (8)                    
305
0x96, 0x00, 0x01,              //  Report Count (256)                 
307
0xb1, 0x02,                    //  Feature (Data,Var,Abs)             
310
0xc0,                          // End Collection                      
312
0x05, 0x0d,                    // Usage Page (Digitizers)             
313
0x09, 0x0e,                    // Usage (Device Configuration)        
315
0xa1, 0x01,                    // Collection (Application)            
317
0x85, 0x05,                    //  Report ID (5)                      
319
0x09, 0x22,                    //  Usage (Finger)                     
321
0xa1, 0x00,                    //  Collection (Physical)              
323
0x09, 0x52,                    //   Usage (Inputmode)                 
325
0x09, 0x53,                    //   Usage (Device Index)              
327
0x15, 0x00,                    //   Logical Minimum (0)               
329
0x25, 0x0a,                    //   Logical Maximum (10)              
331
0x75, 0x08,                    //   Report Size (8)                   
333
0x95, 0x02,                    //   Report Count (2)                  
335
0xb1, 0x02,                    //   Feature (Data,Var,Abs)            
337
0xc0,                          //  End Collection                     
339
0xc0,                          // End Collection                      
340
**** win 8 certified ****
#

event8 which heard events before is no longer present, only event7 now 
which evemu-record does not hear events on.

# evemu-record
Available devices:
/dev/input/event0:	System mouse
/dev/input/event1:	System keyboard multiplexer
/dev/input/event2:	Power Button
/dev/input/event3:	Sleep Button
/dev/input/event4:	Lite-On Technology Corp. USB Multimedia Keyboard, 
class 0/0, rev 1.10/1.09, add
/dev/input/event5:	Lite-On Technology Corp. USB Multimedia Keyboard 
Consumer Control
/dev/input/event6:	Lite-On Technology Corp. USB Multimedia Keyboard 
System Control
/dev/input/event7:	eGalax Inc. USB TouchController Tablet
Select the device event number [0-7]: 7
# EVEMU 1.3
# Kernel: 13.0-RELEASE
# Input device name: "eGalax Inc. USB TouchController Tablet"
# Input device ID: bus 0x03 vendor 0xeef product 0x01 version 0x100
# Supported events:
#   Event type 0 (EV_SYN)
#     Event code 0 (SYN_REPORT)
#     Event code 1 (SYN_CONFIG)
#     Event code 2 (SYN_MT_REPORT)
#     Event code 3 (SYN_DROPPED)
#     Event code 4 ((null))
#     Event code 5 ((null))
#     Event code 6 ((null))
#     Event code 7 ((null))
#     Event code 8 ((null))
#     Event code 9 ((null))
#     Event code 10 ((null))
#     Event code 11 ((null))
#     Event code 12 ((null))
#     Event code 13 ((null))
#     Event code 14 ((null))
#     Event code 15 (SYN_MAX)
#   Event type 1 (EV_KEY)
#     Event code 272 (BTN_LEFT)
#     Event code 273 (BTN_RIGHT)
#   Event type 3 (EV_ABS)
#     Event code 0 (ABS_X)
#       Value        0
#       Min          0
#       Max       4095
#       Fuzz         0
#       Flat         0
#       Resolution   0
#     Event code 1 (ABS_Y)
#       Value        0
#       Min          0
#       Max       4095
#       Fuzz         0
#       Flat         0
#       Resolution   0
# Properties:
#   Property  type 1 (INPUT_PROP_DIRECT)
N: eGalax Inc. USB TouchController Tablet
I: 0003 0eef 0001 0100
P: 02 00 00 00 00 00 00 00
B: 00 0b 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 03 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 02 00 00 00 00 00 00 00 00
B: 03 03 00 00 00 00 00 00 00
B: 04 00 00 00 00 00 00 00 00
B: 05 00 00 00 00 00 00 00 00
B: 11 00 00 00 00 00 00 00 00
B: 12 00 00 00 00 00 00 00 00
B: 14 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
A: 00 0 4095 0 0 0
A: 01 0 4095 0 0 0
################################
#      Waiting for events      #
################################
[... no events ...]
^C
#

X does add it as an input now:

[   617.720] (**) eGalax Inc. USB TouchController Tablet: Applying 
InputClass "evdev touchscreen catchall"
[   617.720] (**) eGalax Inc. USB TouchController Tablet: Applying 
InputClass "libinput touchscreen catchall"
[   617.720] (II) Using input driver 'libinput' for 'eGalax Inc. USB 
TouchController Tablet'
[   617.720] (**) eGalax Inc. USB TouchController Tablet: always reports 
core events
[   617.720] (**) Option "Device" "/dev/input/event7"
[   617.720] (**) Option "_source" "server/udev"
[   617.723] (II) event7  - eGalax Inc. USB TouchController Tablet: is 
tagged by udev as: Touchscreen
[   617.725] (II) event7  - eGalax Inc. USB TouchController Tablet: 
device is a touch device
[   617.725] (II) event7  - eGalax Inc. USB TouchController Tablet: 
device removed
[   617.736] (**) Option "config_info" "udev:/dev/input/event7"
[   617.736] (II) XINPUT: Adding extended input device "eGalax Inc. USB 
TouchController Tablet" (type: TOUCHSCREEN, id 13)
[   617.736] (**) Option "AccelerationScheme" "none"
[   617.736] (**) eGalax Inc. USB TouchController Tablet: (accel) 
selected scheme none/0
[   617.736] (**) eGalax Inc. USB TouchController Tablet: (accel) 
acceleration factor: 2.000
[   617.736] (**) eGalax Inc. USB TouchController Tablet: (accel) 
acceleration threshold: 4
[   617.740] (II) event7  - eGalax Inc. USB TouchController Tablet: is 
tagged by udev as: Touchscreen
[   617.741] (II) event7  - eGalax Inc. USB TouchController Tablet: 
device is a touch device

$ xinput --list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  
(2)]
⎜   ↳ System mouse                            	id=6	[slave  pointer  
(2)]
⎜   ↳ eGalax Inc. USB TouchController Tablet  	id=13	[slave  pointer  
(2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
     ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard 
(3)]
     ↳ System keyboard multiplexer             	id=7	[slave  keyboard 
(3)]
     ↳ Power Button                            	id=8	[slave  keyboard 
(3)]
     ↳ Sleep Button                            	id=9	[slave  keyboard 
(3)]
     ↳ Lite-On Technology Corp. USB Multimedia Keyboard	id=10	[slave  
keyboard (3)]
     ↳ Lite-On Technology Corp. USB Multimedia Keyboard Consumer 
Control	id=11	[slave  keyboard (3)]
     ↳ Lite-On Technology Corp. USB Multimedia Keyboard System 
Control	id=12	[slave  keyboard (3)]

No events with xinput --test 13



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?59ba07a0ecbdac36746fe18ea5f0559f>