String enumeration problem

Discussion created by lpcware Employee on Jun 15, 2016
Latest reply on Jun 15, 2016 by lpcware
Content originally posted in LPCWare by mubes on Fri May 23 16:18:53 MST 2014

I'm having a spot of bother with device enumeration on Linux (The device is a LPC1549 and the usb stack is my own).  This is a composite device with both a MSC and CDC in it, but I'm not too sure that's important.  The issue is that when the enumeration process is collecting the strings from the device it grabs the strings, then asks for the first two characters of each string (beyond the first three) again...with the result that it times out after five seconds before going through the whole thing again for the next one...as shown below;

No.Time        Source  DestProtLenInfo
727.2591788hostUSB80GET DESCRIPTOR Response STRING
737.259205host8USB64GET DESCRIPTOR Request STRING
7412.2591598hostUSB64GET DESCRIPTOR Response STRING[Malformed Packet]
7512.259261host8USB64GET DESCRIPTOR Request STRING
7617.2591628hostUSB80GET DESCRIPTOR Response STRING
7717.259203host8USB64GET DESCRIPTOR Request STRING
7822.2591668hostUSB64GET DESCRIPTOR Response STRING[Malformed Packet]
7922.259237host8USB64GET DESCRIPTOR Request STRING
8027.2591648hostUSB82GET DESCRIPTOR Response STRING
8127.259178host8USB64GET DESCRIPTOR Request STRING
8232.2592498hostUSB64GET DESCRIPTOR Response STRING[Malformed Packet]

The first three strings it grabs perfectly well.  Is this normal and I'm not understanding something or is something 'interesting' going on with the Linux driver (Kernel 3.11.0)?  I can see the wLength in the request set to '2' for the second request (it's set to 255 for the first request of each pair) so I think this is originating from the host side as opposed to the device side.

I will try again in the morning with a Mac and windows box, but since I don't have wireshark on those it makes life a bit more complex.

Thanks in advance for any light on this...