Touchscreen "TSTP MTouch"

Oliver Fromme olli at fromme.com
Fri May 7 17:30:09 UTC 2021


Hi,

I'm not sure if this is the right place to ask ... This is
the first time I'm trying to get this sort of device to work,
so please be gentle. :-)

I've bought a 7" touchscreen.  It's intended for an RPi, but
it can also be connected to a standard PC via HDMI + USB,
which is what I do.  Vendor & product ID is 0x0416 & 0xc168.

The actual display works fine with Xorg as usual.  But I'm
having problems getting the touch feature to work.

According to the vendor, it's a standard USB HID interface
that works without additional driver in Windows, and is also
supported by Linux (apparently for several years already).
It's supposed to work out of the box with typical Linux
distributions on the RPi.

System:  FreeBSD 13.0-STABLE-20210418 amd64
CUSE:  Cuse v0.1.36 @ /dev/cuse
webcamd port:  webcamd-5.10.6.1_2

I've created a small devd snipped that starts the webcamd
service when the vendor ID and product ID are matched.
These are the log messages when I insert the USB plug:

16:43:17 kernel: ugen0.2: <TSTP MTouch> at usbus0
16:43:17 kernel: ums1 on uhub2
16:43:17 kernel: ums1: <TSTP MTouch, class 0/0, rev 2.00/0.00, addr 12> on usbus0
16:43:17 kernel: ums1: error reading report description
16:43:17 kernel: device_attach: ums1 attach returned 12
16:43:17 kernel: ums1 on uhub2
16:43:17 kernel: ums1: <TSTP MTouch, class 0/0, rev 2.00/0.00, addr 12> on usbus0
16:43:17 kernel: ums1: error reading report description
16:43:17 kernel: device_attach: ums1 attach returned 12
16:43:19 webcamd[75654]: webcamd: Cannot find USB device
16:43:20 webcamd[75646]: webcamd: Cannot find USB device

I tried both USB3 and USB2 ports; same result.
The output from ``usbconfig dump_all_desc'' is attached below.

At this point I'm not sure how to proceed.
Is there anything I can do?  Or is this a lost case?

On a related note, are there any touchscreens that are *known*
to work with FreeBSD?  I tried searching the web, but wasn't
able to find anything useful.

Regards
 - Olli

ugen0.2: <TSTP MTouch> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x0416 
  idProduct = 0xc168 
  bcdDevice = 0x0000 
  iManufacturer = 0x0001  <retrieving string failed>
  iProduct = 0x0002  <retrieving string failed>
  iSerialNumber = 0x0003  <retrieving string failed>
  bNumConfigurations = 0x0001 

 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0049 
    bNumInterfaces = 0x0002 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x00a0 
    bMaxPower = 0x0032 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0002 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump: 
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0xdf, 
       0x08 | 0x02

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0005 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0002  <OUT>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0008 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0002 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump: 
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x8e, 
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0008 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0004  <OUT>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0008 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 



-- 
Oliver Fromme, Munich

``We are all but compressed light'' - Albert Einstein


More information about the freebsd-usb mailing list