Tim,
Thanks for response.
OK, the (relevant parts of the) descriptors (i.e. ignoring strings), as extracted by TDD are:
Information for device Hidden USB device (VID=0xXXXX PID=0xXXXX):
*** ERROR: Descriptor has errors! ***
Connection Information:
Connection status: Device connected
Device actual bus speed: Full
Device is hub: No
Device adress: 0x0003 (TDD’s spelling mistake 
Current configuration value: 0x00
Number of open pipes: 0
Device Descriptor:
0x12 bLength
0x01 bDescriptorType
0x0110 bcdUSB
0xFF bDeviceClass (Vendor specific)
0xFF bDeviceSubClass
0xFF bDeviceProtocol
0x08 bMaxPacketSize0 (8 Bytes)
0xXXXX idVendor
0xXXXX idProduct
0x0000 bcdDevice
0x01 iManufacturer “Hidden”
0x02 iProduct “Hidden”
0x03 iSerialNumber “Hidden”
0x01 bNumConfigurations
Hex dump:
0x12 0x01 0x10 0x01 0xFF 0xFF 0xFF 0x08 0xXX 0xXX
0xXX 0xXX 0x00 0x00 0x01 0x02 0x03 0x01
Configuration Descriptor:
0x09 bLength
0x02 bDescriptorType
0x0021 wTotalLength
0x01 bNumInterfaces
0x01 bConfigurationValue
0x00 iConfiguration
0xC0 bmAttributes (Self-powered Device)
0x00 bMaxPower (0 mA)
Hex dump:
0x09 0x02 0x21 0x00 0x01 0x01 0x00 0xC0 0x00
Interface Descriptor:
0x0A bLength
0x04 bDescriptorType
*** ERROR: Invalid descriptor length 0x0A
Hex dump:
0x0A 0x04 0x00 0x00 0x02 0xFF 0xFF 0xFF 0x00 0xCC
Endpoint Descriptor:
0x07 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (OUT Endpoint)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x00 bInterval
Hex dump:
0x07 0x05 0x01 0x02 0x40 0x00 0x00
Endpoint Descriptor:
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (IN Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x01 bInterval
Hex dump:
0x07 0x05 0x82 0x03 0x40 0x00 0x01
The Interface descriptor *should* be, if the Cypress chip’s BIOS wasn’t errata’d:
Interface Descriptor:
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0xFF bInterfaceSubClass
0xFF bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x00 0x00 0x02 0xFF 0xFF 0xFF 0x00
i.e. from 1 config, 1 interface and 2 endpoints a total descriptor length of 9 + 9 + 7 + 7 = 32 which is, as I’m sure you can calculate, an exact multiple of bMaxPacketSize0.
So I can’t use the correct length; I *may* be able to create a dummy (unused) endpoint descriptor on the end (and increase bNumEndPoints) to give me 39 bytes, but I haven’t tried this yet.
I will capture some startup debugging info this evening and post again.