Hi,
There are many reasons why it might not work. At first glance, it looks like you are requesting 20 bytes (14h) via this descriptor. Is it a low-speed device? If so, you must request that in three data descriptors, 8 bytes each for the first two, and 4 for the last.
A lot of devices follow a set sequence after reset. Unfortunately, when a popular OS started supporting USB, device manufacturers started testing with this OS, and if it works on that OS, it works just fine, rather than following the USB specs 100%. For example, this popular OS does a reset, gets the first 8 bytes of an 18 byte descriptor, then does another reset. Some devices will stall if they don't see this sequence, 1 in 250 maybe, but still, especially older devices.
Anyway, start requesting 8 bytes at a time, instead of more and see what happens.
1) reset device
2) get first 8 bytes of device descriptor
3) reset device
4) send address command
5) get all bytes of device descriptor
That is the most common procedure after startup/hot plug.
Hope this helps,
Ben
-
http://www.fysnet.net/osdesign_book_series.htm