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.