This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Slow enumeration for USB 2.0 full speed device.

Hello,

I have LPC2368 controller which supports USB 2.0 full speed device.

While enumeration, I noticed the below request sequence
from Host to device:

1. Device Descriptor
2. Set Address
3. Device Descriptor
4. Device Configuration
5. String descriptor
6. String descriptor
7. Device Configuration
8. Device Qualifier
9. String descriptor
10. String descriptor
11. String descriptor

Since my device is 2.0 full speed device so I returned request error by setting status to STALL for Device Qualifier request.

But the problem I am facing is, that the device receives next request(i.e step 9 string descriptor) after a delay of 4-5 seconds.

That makes enumeration very slow and takes around 7 seconds to complete it.

Could anybody suggest me any solution to solve this.

Thanks.
VAIGO

Parents
  • Thanks for your reply.

    I've made many full-speed devices assigned to USB2.0, I've never seen WinXP SP2 delays the enumeration of these devices. It's most likely the firmware side problem.

    ==> We checkced with the USB analyzer, the stall command from device reaches host after 5 seconds. I believe this could be the main reason for the delay.

    Are you using a USB ARM example from KEIL as the base code?
    OR did you make your code from scratch by yourself?
    In the first place, which MCU or USB peripheral are you using?

    ==> We are using LPC2368 controller and we got the client code from LPC.

    Thanks
    VAIGO

Reply
  • Thanks for your reply.

    I've made many full-speed devices assigned to USB2.0, I've never seen WinXP SP2 delays the enumeration of these devices. It's most likely the firmware side problem.

    ==> We checkced with the USB analyzer, the stall command from device reaches host after 5 seconds. I believe this could be the main reason for the delay.

    Are you using a USB ARM example from KEIL as the base code?
    OR did you make your code from scratch by yourself?
    In the first place, which MCU or USB peripheral are you using?

    ==> We are using LPC2368 controller and we got the client code from LPC.

    Thanks
    VAIGO

Children
  • "the stall command from device reaches host after 5 seconds."

    In our device, bus analyzer shows that STALL is issued by the device at the IN transaction just after the SETUP which specifies Get_Descriptor( Device Qualifier ). The interval is just one frame (1 ms) - I observed it on UHCI controller.

    If it takes so long, the device respond nothing to the IN transaction(s), and the host repeats SETUP again and again (up to three times).

    Maybe the firmware doesn't set STALL to the engine correctly.

    "we got the client code from LPC"

    What do you mean LPC?
    LPCUSB by Bertrik?

    Tsuneo