Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Jun 2024 19:07:59 +0200
From:      Milan Obuch <freebsd-x11@dino.sk>
To:        freebsd-x11@freebsd.org
Subject:   USB HID touch screen problem
Message-ID:  <20240606190759.1d438f28@zeta.dino.sk>

next in thread | raw e-mail | index | archive | help
Hi,

for some project I have system with touch screen, but I did not figure
way to use it, yet. I did try webcamd for the task, but did not
succeed. The device in question is

ugen0.3: <DIALOGUE INC PenMount USB> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0110 
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x14e1 
  idProduct = 0x6000 
  bcdDevice = 0xa4b4 
  iManufacturer = 0x0001  <DIALOGUE INC>
  iProduct = 0x0002  <PenMount USB>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001 

I am able to see some data exchange using this command:

usbhid-dump -i 0.3 -ea

showing packets when I touch the screen like this...

000:003:000:DESCRIPTOR         1717690937.503899
 05 01 09 02 A1 01 09 01 A1 00 09 00 15 00 25 01
 95 06 75 01 81 01 05 09 19 01 29 03 15 00 25 01
 95 02 75 01 81 02 05 01 09 30 09 31 15 00 26 FF
 03 36 80 00 46 FF 7F 75 10 95 02 81 02 09 00 15
 00 26 FF 00 75 08 95 05 B1 02 C0 C0

000:002:000:DESCRIPTOR         1717690937.506215
 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01
 95 08 75 01 81 02 95 01 75 08 81 01 05 08 19 01
 29 03 95 03 75 01 91 02 95 05 75 01 91 01 95 06
 75 08 15 00 26 E7 00 05 07 19 00 29 E7 81 00 C0

Starting dumping interrupt transfer stream
with 1 minute timeout.

LIBUSB_FUNCTION: libusb_submit_transfer enter
LIBUSB_FUNCTION: libusb_submit_transfer leave 0
LIBUSB_FUNCTION: libusb_submit_transfer enter
LIBUSB_FUNCTION: libusb_submit_transfer leave 0
LIBUSB_FUNCTION: libusb_handle_events_timeout_completed enter
LIBUSB_FUNCTION: libusb10_handle_events_sub enter
LIBUSB_FUNCTION: libusb_handle_events_timeout_completed exit
LIBUSB_FUNCTION: libusb_handle_events_timeout_completed enter
LIBUSB_FUNCTION: libusb10_handle_events_sub enter
000:003:000:STREAM             1717690944.234125
 70 56 01 B0 01

LIBUSB_FUNCTION: libusb_submit_transfer enter
LIBUSB_FUNCTION: libusb_submit_transfer leave 0
LIBUSB_FUNCTION: libusb_handle_events_timeout_completed exit
LIBUSB_FUNCTION: libusb_handle_events_timeout_completed enter
LIBUSB_FUNCTION: libusb10_handle_events_sub enter
000:003:000:STREAM             1717690944.246114
 70 56 01 B0 01

ending with, when releasing touch, with

LIBUSB_FUNCTION: libusb_submit_transfer enter
LIBUSB_FUNCTION: libusb_submit_transfer leave 0
LIBUSB_FUNCTION: libusb_handle_events_timeout_completed exit
LIBUSB_FUNCTION: libusb_handle_events_timeout_completed enter
LIBUSB_FUNCTION: libusb10_handle_events_sub enter
000:003:000:STREAM             1717690944.352116
 30 56 01 B0 01

So hardware-wise, it works, I see data being send in reaction to
touches and moves on screen, but I'd like to transform those data
packets into events to be fed into X. I tried uhidd, with command

uhidd -dDvvv -km /dev/ugen0.3

(with some -d, -D, -v flags in combination) and I see some data in
decoded (understandable) form, so there is still something missing.

So, anybody knows the missing last (hopefully) step to get working
touch screen in X?

Regards,
Milan



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