Re: eGalax USB touchscreen issues
- Reply: Mark Kane : "Re: eGalax USB touchscreen issues"
- In reply to: Mark Kane : "Re: eGalax USB touchscreen issues"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 14 Aug 2021 12:44:09 UTC
On 12.08.2021 06:37, Mark Kane wrote: > On 2021-08-11 17:12, Vladimir Kondratyev wrote: >> On 10.08.2021 07:03, Mark Kane wrote: >>> # usbhid-dump >>> 000:003:000:DESCRIPTOR 1628551474.564813 >>> 8D 0F 00 09 42 09 32 15 00 25 01 95 02 75 01 81 >>> 02 95 06 75 01 81 03 05 01 09 30 75 10 95 01 A4 >>> 55 00 65 00 36 00 00 46 00 00 16 1E 00 26 C8 0F >>> 81 02 09 31 16 3C 00 26 >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> This one looks like corrupted fragment of touch device HID report >> descriptor. Check wires, USB port, device itself and so on. Most >> probably, it is a standard eGalax HID device with some USB transport >> problems. > > That is very interesting and a good catch. I have been using the same > cable and USB port across all tests for consistency. This same #2 screen > connected with the same cable to an identical machine running Linux > 4.4.0-104 we get a much longer HID report descriptor: > > linux# lsusb > Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub > Bus 001 Device 004: ID 04ca:004f Lite-On Technology Corp. SK-9020 keyboard > Bus 001 Device 003: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax > TouchScreen > Bus 001 Device 002: ID 8087:07e6 Intel Corp. > Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub > linux# usbhid-dump > 001:004:001:DESCRIPTOR 1628727550.064013 > 05 0C 09 01 A1 01 85 01 19 00 2A 3C 02 15 00 26 > 3C 02 95 01 75 10 81 00 C0 05 01 09 80 A1 01 85 > 02 19 81 29 83 25 01 75 01 95 03 81 02 95 05 81 > 01 C0 > > 001:004:000:DESCRIPTOR 1628727550.066916 > 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 > 95 08 75 01 81 02 95 08 75 01 81 01 05 08 19 01 > 29 03 95 03 75 01 91 02 95 01 75 05 91 01 05 07 > 19 00 2A FF 00 15 00 26 FF 00 95 06 75 08 81 00 > C0 > > 001:003:000:DESCRIPTOR 1628727550.070850 > 05 01 09 01 A1 01 85 01 09 01 A1 00 05 09 19 01 > 29 02 15 00 25 01 95 02 75 01 81 02 95 01 75 06 > 81 01 05 01 09 30 09 31 16 2A 00 26 BD 07 36 00 > 00 46 FF 0F 66 00 00 75 10 95 02 81 02 C0 C0 05 > 0D 09 04 A1 01 85 02 09 20 A1 00 09 42 09 32 15 > 00 25 01 95 02 75 01 81 02 95 06 75 01 81 03 05 > 01 09 30 75 10 95 01 A4 55 00 65 00 36 00 00 46 > 00 00 16 1E 00 26 C8 0F 81 02 09 31 16 3C 00 26 > C3 0F 36 00 00 46 00 00 81 02 B4 C0 C0 > linux# > This report descriptor looks good and differs from post 2014 one. It belongs to device which uses legacy MS stylus protocol. I attached a patch which implements support for it in hpen(4) driver. Also it is applicable to post 2014 devices as they have stylus top level collection too. > Touch on this screen fully works on Linux using the binary EETI driver. > Could there be something different about the USB controller in some of > these screens that is causing the corruption on FreeBSD? If there is any > other info to gather from either install I'm happy to. I do not khow how to debug this issue. May be hselasky can help here. I can offer a workaround. Simple tool to upload fixed pre-2014 report descriptor in to HID core through hidraw(4) interface. Just compile it and run using proper /dev/hidraw# device node path as parameter: # cc -o setrdesc setrdesc.c # ./setrdesc /dev/hidraw0 Don't forget to kldload hidraw.ko before. > Here are some other tests with the patches. All that don't work have the > same shorter descriptor report. > > Jul 2011 - doesn't work, same truncated report descriptor > Sep 2011 - doesn't work, same truncated report descriptor > Nov 2012 - doesn't work, same truncated report descriptor > Mar 2013 - doesn't work, same truncated report descriptor > Jul 2013 - doesn't work, same truncated report descriptor > Sep 2014 - works with patches > Sep 2014 #2 - works with patches > Nov 2014 - works with patches > Feb 2015 - works with patches > Oct 2018 - works with patches > Oct 2018 #2 - works with patches > Feb 2020 - works with patches > Feb 2020 - works with patches > Feb 2021 - works with patches > > And some more data from Linux in case it is helpful. event5 didn't hear > events, event7 and event14 both did: > event5 is dummy mouse which forces cursor appearance on Windows 7 and 8 event7 is real HID device. Something very similar would appear in FreeBSD if both hpen.patch and setrdesc.c would work. event14 - is something artificial created by binary driver. > linux# evemu-record > Available devices: > /dev/input/event0: Power Button > /dev/input/event1: Sleep Button > /dev/input/event2: Power Button > /dev/input/event3: Lite-On Technology Corp. USB Multimedia Keyboard > /dev/input/event4: Lite-On Technology Corp. USB Multimedia Keyboard > /dev/input/event5: eGalax Inc. USB TouchController > /dev/input/event6: Video Bus > /dev/input/event7: eGalax Inc. USB TouchController > /dev/input/event8: HDA Intel PCH Mic > /dev/input/event9: HDA Intel PCH Line Out > /dev/input/event10: HDA Intel PCH Headphone > /dev/input/event11: HDA Intel PCH HDMI/DP,pcm=3 > /dev/input/event12: HDA Intel PCH HDMI/DP,pcm=7 > /dev/input/event13: HDA Intel PCH HDMI/DP,pcm=8 > /dev/input/event14: eGalaxTouch Virtual Device for Single > Select the device event number [0-14]: 7 > # EVEMU 1.2 > # Input device name: "eGalax Inc. USB TouchController" > # Input device ID: bus 0x03 vendor 0xeef product 0x01 version 0x210 > # 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 type 1 (EV_KEY) > # Event code 320 (BTN_TOOL_PEN) > # Event code 330 (BTN_TOUCH) > # Event type 3 (EV_ABS) > # Event code 0 (ABS_X) > # Value 2069 > # Min 30 > # Max 4040 > # Fuzz 0 > # Flat 0 > # Resolution 0 > # Event code 1 (ABS_Y) > # Value 2503 > # Min 60 > # Max 4035 > # Fuzz 0 > # Flat 0 > # Resolution 0 > # Event type 4 (EV_MSC) > # Event code 4 (MSC_SCAN) > # Properties: > N: eGalax Inc. USB TouchController > I: 0003 0eef 0001 0210 > P: 00 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 00 00 00 00 00 00 > B: 01 01 04 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 10 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 30 4040 0 0 0 > A: 01 60 4035 0 0 0 > ################################ > # Waiting for events # > ################################ > E: 0.000000 0004 0004 852034 # EV_MSC / MSC_SCAN 852034 > E: 0.000000 0001 014a 0001 # EV_KEY / BTN_TOUCH 1 > E: 0.000000 0003 0000 1533 # EV_ABS / ABS_X 1533 > E: 0.000000 0003 0001 2343 # EV_ABS / ABS_Y 2343 > E: 0.000000 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.006000 0003 0001 2345 # EV_ABS / ABS_Y 2345 > E: 0.006000 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.010005 0003 0000 1532 # EV_ABS / ABS_X 1532 > E: 0.010005 0003 0001 2358 # EV_ABS / ABS_Y 2358 > E: 0.010005 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.016010 0003 0000 1529 # EV_ABS / ABS_X 1529 > E: 0.016010 0003 0001 2370 # EV_ABS / ABS_Y 2370 > E: 0.016010 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.021998 0003 0000 1528 # EV_ABS / ABS_X 1528 > E: 0.021998 0003 0001 2378 # EV_ABS / ABS_Y 2378 > E: 0.021998 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.028003 0003 0000 1527 # EV_ABS / ABS_X 1527 > E: 0.028003 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.034000 0003 0000 1526 # EV_ABS / ABS_X 1526 > E: 0.034000 0003 0001 2382 # EV_ABS / ABS_Y 2382 > E: 0.034000 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.042003 0003 0001 2387 # EV_ABS / ABS_Y 2387 > E: 0.042003 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.050018 0003 0000 1525 # EV_ABS / ABS_X 1525 > E: 0.050018 0003 0001 2386 # EV_ABS / ABS_Y 2386 > E: 0.050018 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.058013 0003 0000 1524 # EV_ABS / ABS_X 1524 > E: 0.058013 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.074006 0003 0000 1523 # EV_ABS / ABS_X 1523 > E: 0.074006 0003 0001 2387 # EV_ABS / ABS_Y 2387 > E: 0.074006 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.089999 0003 0001 2388 # EV_ABS / ABS_Y 2388 > E: 0.089999 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.123988 0003 0000 1522 # EV_ABS / ABS_X 1522 > E: 0.123988 0003 0001 2395 # EV_ABS / ABS_Y 2395 > E: 0.123988 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.139999 0003 0001 2405 # EV_ABS / ABS_Y 2405 > E: 0.139999 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.156001 0003 0000 1523 # EV_ABS / ABS_X 1523 > E: 0.156001 0003 0001 2403 # EV_ABS / ABS_Y 2403 > E: 0.156001 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.172000 0003 0000 1524 # EV_ABS / ABS_X 1524 > E: 0.172000 0003 0001 2393 # EV_ABS / ABS_Y 2393 > E: 0.172000 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.187999 0003 0000 1527 # EV_ABS / ABS_X 1527 > E: 0.187999 0003 0001 2392 # EV_ABS / ABS_Y 2392 > E: 0.187999 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.211989 0004 0004 852034 # EV_MSC / MSC_SCAN 852034 > E: 0.211989 0001 014a 0000 # EV_KEY / BTN_TOUCH 0 > E: 0.211989 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > ^Clinux# evemu-record > Available devices: > /dev/input/event0: Power Button > /dev/input/event1: Sleep Button > /dev/input/event2: Power Button > /dev/input/event3: Lite-On Technology Corp. USB Multimedia Keyboard > /dev/input/event4: Lite-On Technology Corp. USB Multimedia Keyboard > /dev/input/event5: eGalax Inc. USB TouchController > /dev/input/event6: Video Bus > /dev/input/event7: eGalax Inc. USB TouchController > /dev/input/event8: HDA Intel PCH Mic > /dev/input/event9: HDA Intel PCH Line Out > /dev/input/event10: HDA Intel PCH Headphone > /dev/input/event11: HDA Intel PCH HDMI/DP,pcm=3 > /dev/input/event12: HDA Intel PCH HDMI/DP,pcm=7 > /dev/input/event13: HDA Intel PCH HDMI/DP,pcm=8 > /dev/input/event14: eGalaxTouch Virtual Device for Single > Select the device event number [0-14]: 14 > # EVEMU 1.2 > # Input device name: "eGalaxTouch Virtual Device for Single" > # Input device ID: bus 0x06 vendor 0xeef product 0x10 version 0x01 > # 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 type 1 (EV_KEY) > # Event code 272 (BTN_LEFT) > # Event code 273 (BTN_RIGHT) > # Event code 276 (BTN_EXTRA) > # Event type 3 (EV_ABS) > # Event code 0 (ABS_X) > # Value 766 > # Min 0 > # Max 2047 > # Fuzz 0 > # Flat 0 > # Resolution 0 > # Event code 1 (ABS_Y) > # Value 875 > # Min 0 > # Max 2047 > # Fuzz 0 > # Flat 0 > # Resolution 0 > # Event code 3 (ABS_RX) > # Value 0 > # Min 0 > # Max 2047 > # Fuzz 0 > # Flat 0 > # Resolution 0 > # Event code 4 (ABS_RY) > # Value 0 > # Min 0 > # Max 2047 > # Fuzz 0 > # Flat 0 > # Resolution 0 > # Properties: > # Property type 1 (INPUT_PROP_DIRECT) > N: eGalaxTouch Virtual Device for Single > I: 0006 0eef 0010 0001 > 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 13 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 1b 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 2047 0 0 0 > A: 01 0 2047 0 0 0 > A: 03 0 2047 0 0 0 > A: 04 0 2047 0 0 0 > ################################ > # Waiting for events # > ################################ > E: 0.000000 0003 0000 0650 # EV_ABS / ABS_X 650 > E: 0.000000 0003 0001 1576 # EV_ABS / ABS_Y 1576 > E: 0.000000 0001 0110 0001 # EV_KEY / BTN_LEFT 1 > E: 0.000000 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.000018 0001 0110 0000 # EV_KEY / BTN_LEFT 0 > E: 0.000018 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.517999 0003 0000 1328 # EV_ABS / ABS_X 1328 > E: 0.517999 0003 0001 1461 # EV_ABS / ABS_Y 1461 > E: 0.517999 0001 0110 0001 # EV_KEY / BTN_LEFT 1 > E: 0.517999 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.518116 0001 0110 0000 # EV_KEY / BTN_LEFT 0 > E: 0.518116 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.968004 0003 0000 0788 # EV_ABS / ABS_X 788 > E: 0.968004 0003 0001 1335 # EV_ABS / ABS_Y 1335 > E: 0.968004 0001 0110 0001 # EV_KEY / BTN_LEFT 1 > E: 0.968004 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 0.968163 0001 0110 0000 # EV_KEY / BTN_LEFT 0 > E: 0.968163 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 1.405991 0003 0000 0998 # EV_ABS / ABS_X 998 > E: 1.405991 0003 0001 1254 # EV_ABS / ABS_Y 1254 > E: 1.405991 0001 0110 0001 # EV_KEY / BTN_LEFT 1 > E: 1.405991 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 1.406007 0001 0110 0000 # EV_KEY / BTN_LEFT 0 > E: 1.406007 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 2.077987 0003 0000 1097 # EV_ABS / ABS_X 1097 > E: 2.077987 0003 0001 1216 # EV_ABS / ABS_Y 1216 > E: 2.077987 0001 0110 0001 # EV_KEY / BTN_LEFT 1 > E: 2.077987 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 2.078097 0001 0110 0000 # EV_KEY / BTN_LEFT 0 > E: 2.078097 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 2.527981 0003 0000 1400 # EV_ABS / ABS_X 1400 > E: 2.527981 0003 0001 1393 # EV_ABS / ABS_Y 1393 > E: 2.527981 0001 0110 0001 # EV_KEY / BTN_LEFT 1 > E: 2.527981 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 2.527999 0001 0110 0000 # EV_KEY / BTN_LEFT 0 > E: 2.527999 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 2.879992 0003 0000 0791 # EV_ABS / ABS_X 791 > E: 2.879992 0003 0001 1276 # EV_ABS / ABS_Y 1276 > E: 2.879992 0001 0110 0001 # EV_KEY / BTN_LEFT 1 > E: 2.879992 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 2.880014 0001 0110 0000 # EV_KEY / BTN_LEFT 0 > E: 2.880014 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 3.402001 0003 0000 0890 # EV_ABS / ABS_X 890 > E: 3.402001 0003 0001 0894 # EV_ABS / ABS_Y 894 > E: 3.402001 0001 0110 0001 # EV_KEY / BTN_LEFT 1 > E: 3.402001 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > E: 3.402116 0001 0110 0000 # EV_KEY / BTN_LEFT 0 > E: 3.402116 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- > linux# > > ------- > > 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) -- WBR Vladimir Kondratyev