Kickstarter - Haptix: Multitouch Reinvented

Project name: Haptix: Multitouch Reinvented

Back to crowdfunding page.

Links

ractiv.com/guide, ractiv.com/setup,

History

2021-08-14: I re-created this page on my self-hosted web server.

2014-09-23: testing - connecting the Touch+ to my FreeBSD workstation:

tingo@kg-core1$ uname -a
FreeBSD kg-core1.kg4.no 8.4-STABLE FreeBSD 8.4-STABLE #1 r266590: Fri May 23 20:23:35 CEST 2014     root@kg-core1.kg4.no:/usr/obj/usr/src/sys/GENERIC  amd64

I get these messages in /var/log/messages:

Sep 23 23:58:16 kg-core1 root: Unknown USB device: vendor 0x1e4e product 0x0107 bus uhub8
Sep 23 23:58:16 kg-core1 kernel: ugen2.4: <Ractiv Inc.> at usbus2
Sep 23 23:58:16 kg-core1 root: Unknown USB device: vendor 0x1e4e product 0x0107 bus uhub8
Sep 23 23:58:16 kg-core1 root: Unknown USB device: vendor 0x1e4e product 0x0107 bus uhub8

usbconfig says:

root@kg-core1# usbconfig -d ugen2.4
ugen2.4: <Touch+ Camera Ractiv Inc.> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

device description

root@kg-core1# usbconfig -d ugen2.4 dump_device_desc
ugen2.4: <Touch+ Camera Ractiv Inc.> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0210
  bDeviceClass = 0x00ef
  bDeviceSubClass = 0x0002
  bDeviceProtocol = 0x0001
  bMaxPacketSize0 = 0x0040
  idVendor = 0x1e4e
  idProduct = 0x0107
  bcdDevice = 0x0000
  iManufacturer = 0x0001  <Ractiv Inc.>
  iProduct = 0x0002  <Touch+ Camera>
  iSerialNumber = 0x0003  <00000001>
  bNumConfigurations = 0x0001

current config

root@kg-core1# usbconfig -d ugen2.4 dump_curr_config_desc
ugen2.4: <Touch+ Camera Ractiv Inc.> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON


 Configuration index 0

    bLength = 0x0009
    bDescriptorType = 0x0002
    wTotalLength = 0x040b
    bNumInterfaces = 0x0003
    bConfigurationValue = 0x0001
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x0080
    bMaxPower = 0x0064

    Additional Descriptor

    bLength = 0x08
    bDescriptorType = 0x0b
    bDescriptorSubType = 0x00
     RAW dump:
     0x00 | 0x08, 0x0b, 0x00, 0x03, 0x0e, 0x03, 0x00, 0x04


    Interface 0
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0000
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0001
      bInterfaceProtocol = 0x0000
      iInterface = 0x0004  <Touch+ Camera>

      Additional Descriptor

      bLength = 0x0e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x0e, 0x24, 0x01, 0x00, 0x01, 0x75, 0x00, 0x00,
       0x08 | 0x5a, 0x62, 0x02, 0x02, 0x01, 0x02


      Additional Descriptor

      bLength = 0x12
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x12, 0x24, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00,
       0x08 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e,
       0x10 | 0x00, 0x00


      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x24
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x09, 0x24, 0x03, 0x02, 0x01, 0x01, 0x00, 0x04,
       0x08 | 0x00

      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x0b, 0x24, 0x05, 0x03, 0x01, 0x00, 0x00, 0x02,
       0x08 | 0x7f, 0x14, 0x00


      Additional Descriptor

      bLength = 0x1b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x06
       RAW dump:
       0x00 | 0x1b, 0x24, 0x06, 0x04, 0xad, 0xcc, 0xb1, 0xc2,
       0x08 | 0xf6, 0xab, 0xb8, 0x48, 0x8e, 0x37, 0x32, 0xd4,
       0x10 | 0xf3, 0xa3, 0xfe, 0xec, 0x05, 0x01, 0x03, 0x02,
       0x18 | 0x06, 0x0e, 0x00


      Additional Descriptor

      bLength = 0x12
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x12, 0x24, 0x02, 0x05, 0x01, 0x02, 0x00, 0x00,
       0x08 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
       0x10 | 0x00, 0x00


      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x24
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x09, 0x24, 0x03, 0x07, 0x01, 0x01, 0x00, 0x06,
       0x08 | 0x00

      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x0b, 0x24, 0x05, 0x06, 0x05, 0x00, 0x00, 0x02,
       0x08 | 0x00, 0x00, 0x00


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

      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x25
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x05, 0x25, 0x03, 0x00, 0x04



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

      Additional Descriptor

      bLength = 0x0f
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x0f, 0x24, 0x01, 0x02, 0x21, 0x02, 0x81, 0x00,
       0x08 | 0x02, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00


      Additional Descriptor

      bLength = 0x1b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x04
       RAW dump:
       0x00 | 0x1b, 0x24, 0x04, 0x01, 0x08, 0x59, 0x55, 0x59,
       0x08 | 0x32, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00,
       0x10 | 0xaa, 0x00, 0x38, 0x9b, 0x71, 0x10, 0x01, 0x00,
       0x18 | 0x00, 0x00, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x01, 0x00, 0x80, 0x02, 0xe0,
       0x08 | 0x01, 0x00, 0x00, 0xca, 0x08, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0x60, 0x09, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x01, 0x15, 0x16, 0x05, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x02, 0x00, 0x00, 0x05, 0xe0,
       0x08 | 0x01, 0x00, 0x00, 0xca, 0x08, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0xc0, 0x12, 0x00, 0x2a, 0x2c, 0x0a,
       0x18 | 0x00, 0x01, 0x2a, 0x2c, 0x0a, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x03, 0x00, 0x40, 0x01, 0xf0,
       0x08 | 0x00, 0x00, 0x80, 0x32, 0x02, 0x00, 0x80, 0x32,
       0x10 | 0x02, 0x00, 0x58, 0x02, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x01, 0x15, 0x16, 0x05, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x04, 0x00, 0x80, 0x02, 0xf0,
       0x08 | 0x00, 0x00, 0x00, 0x65, 0x04, 0x00, 0x00, 0x65,
       0x10 | 0x04, 0x00, 0xb0, 0x04, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x01, 0x15, 0x16, 0x05, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x05, 0x00, 0x80, 0x02, 0x68,
       0x08 | 0x01, 0x00, 0x80, 0x97, 0x06, 0x00, 0x80, 0x97,
       0x10 | 0x06, 0x00, 0x08, 0x07, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x01, 0x15, 0x16, 0x05, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x06, 0x00, 0x00, 0x05, 0x68,
       0x08 | 0x01, 0x00, 0x80, 0x97, 0x06, 0x00, 0x80, 0x97,
       0x10 | 0x06, 0x00, 0x10, 0x0e, 0x00, 0x2a, 0x2c, 0x0a,
       0x18 | 0x00, 0x01, 0x2a, 0x2c, 0x0a, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x07, 0x00, 0xe0, 0x01, 0x60,
       0x08 | 0x01, 0x00, 0x80, 0xd5, 0x04, 0x00, 0x80, 0xd5,
       0x10 | 0x04, 0x00, 0x28, 0x05, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x01, 0x15, 0x16, 0x05, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x08, 0x00, 0xc0, 0x03, 0x60,
       0x08 | 0x01, 0x00, 0x80, 0xd5, 0x04, 0x00, 0x80, 0xd5,
       0x10 | 0x04, 0x00, 0x50, 0x0a, 0x00, 0x2a, 0x2c, 0x0a,
       0x18 | 0x00, 0x01, 0x2a, 0x2c, 0x0a, 0x00


      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x24
      bDescriptorSubType = 0x0d
       RAW dump:
       0x00 | 0x06, 0x24, 0x0d, 0x01, 0x01, 0x04


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x06
       RAW dump:
       0x00 | 0x0b, 0x24, 0x06, 0x02, 0x08, 0x01, 0x01, 0x00,
       0x08 | 0x00, 0x00, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x1e, 0x24, 0x07, 0x01, 0x00, 0x80, 0x02, 0xe0,
       0x08 | 0x01, 0x00, 0x00, 0x94, 0x11, 0x00, 0x00, 0x94,
       0x10 | 0x11, 0x00, 0x60, 0x09, 0x00, 0x0a, 0x8b, 0x02,
       0x18 | 0x00, 0x01, 0x0a, 0x8b, 0x02, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x1e, 0x24, 0x07, 0x02, 0x00, 0x00, 0x05, 0xe0,
       0x08 | 0x01, 0x00, 0x00, 0x28, 0x23, 0x00, 0x00, 0x28,
       0x10 | 0x23, 0x00, 0xc0, 0x12, 0x00, 0x0a, 0x8b, 0x02,
       0x18 | 0x00, 0x01, 0x0a, 0x8b, 0x02, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x1e, 0x24, 0x07, 0x03, 0x00, 0x40, 0x01, 0xf0,
       0x08 | 0x00, 0x00, 0x00, 0x65, 0x04, 0x00, 0x00, 0x65,
       0x10 | 0x04, 0x00, 0x58, 0x02, 0x00, 0x0a, 0x8b, 0x02,
       0x18 | 0x00, 0x01, 0x0a, 0x8b, 0x02, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x1e, 0x24, 0x07, 0x04, 0x00, 0x80, 0x02, 0xf0,
       0x08 | 0x00, 0x00, 0x00, 0xca, 0x08, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0xb0, 0x04, 0x00, 0x0a, 0x8b, 0x02,
       0x18 | 0x00, 0x01, 0x0a, 0x8b, 0x02, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x1e, 0x24, 0x07, 0x05, 0x00, 0x80, 0x02, 0x68,
       0x08 | 0x01, 0x00, 0x00, 0x2f, 0x0d, 0x00, 0x00, 0x2f,
       0x10 | 0x0d, 0x00, 0x08, 0x07, 0x00, 0x0a, 0x8b, 0x02,
       0x18 | 0x00, 0x01, 0x0a, 0x8b, 0x02, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x1e, 0x24, 0x07, 0x06, 0x00, 0x00, 0x05, 0x68,
       0x08 | 0x01, 0x00, 0x00, 0x5e, 0x1a, 0x00, 0x00, 0x5e,
       0x10 | 0x1a, 0x00, 0x10, 0x0e, 0x00, 0x0a, 0x8b, 0x02,
       0x18 | 0x00, 0x01, 0x0a, 0x8b, 0x02, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x1e, 0x24, 0x07, 0x07, 0x00, 0xe0, 0x01, 0x60,
       0x08 | 0x01, 0x00, 0x00, 0xab, 0x09, 0x00, 0x00, 0xab,
       0x10 | 0x09, 0x00, 0x28, 0x05, 0x00, 0x0a, 0x8b, 0x02,
       0x18 | 0x00, 0x01, 0x0a, 0x8b, 0x02, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x1e, 0x24, 0x07, 0x08, 0x00, 0xc0, 0x03, 0x60,
       0x08 | 0x01, 0x00, 0x00, 0x56, 0x13, 0x00, 0x00, 0x56,
       0x10 | 0x13, 0x00, 0x50, 0x0a, 0x00, 0x0a, 0x8b, 0x02,
       0x18 | 0x00, 0x01, 0x0a, 0x8b, 0x02, 0x00


      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x24
      bDescriptorSubType = 0x0d
       RAW dump:
       0x00 | 0x06, 0x24, 0x0d, 0x01, 0x01, 0x04



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

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x1400
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 2
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0002
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x13c0
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


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

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x1384
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 4
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0004
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x135c
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 5
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0005
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x12f8
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 6
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0006
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0c00
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 7
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0007
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0b5c
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 8
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0008
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0abc
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 9
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0009
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0a80
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 10
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x000a
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0a44
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 11
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x000b
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0400
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 12
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x000c
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x035c
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 2
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0000
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x0e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x0e, 0x24, 0x01, 0x01, 0x4d, 0x00, 0x82, 0x00,
       0x08 | 0x07, 0x00, 0x01, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x1b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x04
       RAW dump:
       0x00 | 0x1b, 0x24, 0x04, 0x01, 0x01, 0x59, 0x55, 0x59,
       0x08 | 0x32, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00,
       0x10 | 0xaa, 0x00, 0x38, 0x9b, 0x71, 0x10, 0x01, 0x00,
       0x18 | 0x00, 0x00, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x01, 0x00, 0xa0, 0x00, 0xf0,
       0x08 | 0x00, 0x00, 0x40, 0x19, 0x01, 0x00, 0x40, 0x19,
       0x10 | 0x01, 0x00, 0x2c, 0x01, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x01, 0x15, 0x16, 0x05, 0x00


      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x24
      bDescriptorSubType = 0x0d
       RAW dump:
       0x00 | 0x06, 0x24, 0x0d, 0x01, 0x01, 0x04



    Interface 2 Alt 1
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0001
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x12f8
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 2 Alt 2
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0002
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0c00
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 2 Alt 3
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0003
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0a58
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000

that's all.

2014-09-23: testing - connecting the Touch+ to my linux laptop results in these messages:

Sep 23 23:12:49 kg-u35jc kernel: [540981.606746] usb 2-1.2: new high-speed USB device number 5 using ehci_hcd
Sep 23 23:12:50 kg-u35jc mtp-probe: checking bus 2, device 5: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2"
Sep 23 23:12:50 kg-u35jc kernel: [540982.117046] uvcvideo: Found UVC 1.00 device Touch+ Camera (1e4e:0107)
Sep 23 23:12:50 kg-u35jc mtp-probe: bus: 2, device: 5 was not an MTP device
Sep 23 23:12:50 kg-u35jc kernel: [540982.174837] input: Touch+ Camera as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/input/input13

cool.

2014-09-23: I got a package pick-up notice from the Postal service in my mailbox today, and picked up the package at my local PIB, Rimi Trondheimsveien late (very late) this evening. For some reason, I didn't have to shows id or sign for the package. Inside the plastic envelope was a black cardboard box with "TOUCH+" and "MULTITOUCH ANYWHERE" written on the front, and RACTIV, www.ractiv.com and "BLACK CLIP" on the back. Unpacking: inside the package: 1 x plastic stand (black), 1 x Touch+ unit (black), 1 x plastic card with instructions. The instruction card says to go to ractiv.com/setup to get started and to ractiv.com/guide for info. The usb connector on the Touch+ looks like it can be plugged in both ways (ie. no matter which side is up).

2014-09-17: tracking shows:

Shipment History :   

Event Date  Event Time  Event Detail    Event City
9/17/2014   11:24 AM    Shipment In Transit to Destination  New York, US
9/17/2014   10:07 AM    Shipment Scanned At Processing Facility New York, US
9/12/2014   10:37 PM    Enroute To Regional Processing Facility Globegistics, US
9/12/2014   6:37 PM Customer Data Received  Globegistics, US

nothing more.

2014-09-12: I got a shipping notice, with a tracking number. Nice.

2014-07-26: I got a "shipping soon" reminder message.

2014-03-01: the project sent out the reward survey, and I responded.

2013-09-13: the project was funded.

2013-09-05: I backed the project with USD 85.- for a reward of "GET HAPTIX: Be among the first to get Haptix, without having to pay the full price ($70 retail value). Enjoy the magic of 3D multitouch at your fingertips." + shipping. Estimated delivery February 2014.