FX3 doesn't send ACK in SETUP-phase of USB standard request

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
RoKl_290166
Level 4
Level 4
Welcome!

Hi,

I'm using FX3 in a USB bus-powered camera system and build the according firmware with FX3 SDK 1.3.3.

We have an USB issue during Startup of the camera where in about 1 of 500 Startups the camera doesn't enumerate at the USB root hub. It occurs as an "Unknown Device" in the device Manager.

The PC Setup is as follows:

OS: Windows 10 64bit, Version 1809, build 17763.379

CPU: i7-4790

RAM: 16GB

USB Host Controller: Intel chipset

USB Host Controller Driver: 17763.379 14.09.2018

We disabled the USB LPM in the PC host-System since we want to avoid running into the issue where FX3 is not able to leave U1/U2 in some cases (acc. to Cypress Troubleshooting guide Version 1.3.3, chapter 2.2 "Unexpected Connection Failures").

The use case is:

1. camera is plugged to USB 3-port of PC and works fine

2. the PC is shutdown

3. if the PC is down the USB-ports aren't powered anymore so the camera is off (LED is off)

4. the PC is powered on

5. in ~1 of 500 cases the camera is not available in Windows device Manager after Windows has booted:

- In the case of error the LED of the camera tells us that the camera is in USB HighSpeed-mode. The USB-Speed is signaled by LED and is updated twice during Startup-Phase: after receiving USB-Event CY_U3P_USB_EVENT_CONNECT and after receiving USB Standard request SET_CONFIGURATION(1).

- in a good case the USB-Connection during Startup is initially with USB HighSpeed and changes later to USB SuperSpeed

Luckily, we were able to record the issue with LeCroy USB-analyzer. After analyzing the trace we have seen that the FX3 doesn't behave properly with respect to USB specification. In the case of error the host initiates a USB Standard request (i.e. GetDescriptor) using a SETUP-transaction with a DataPacket (DP) but the FX3 doesn't respond with a ACK-packet on it (see attached "ErrorCase.png"). I think, according to USB-spec the device always needs to answer the SETUP DP (as shown in "GoodCase.png") but it could NAK or STALL the consecutive DATA-Transaction if it's not yet ready or has no data or an error occured.

So my questions are :

1. Do you know this Kind of error already and have an appropriate fix for it?

2. If not: can you help me to fix this issue, please?

The whole Thing is quite critical since it's not accepted by our customers that the camera doesn't Startup properly, even in such rare cases like 1 of ~500 Startups.

Thanks!

Best regards,

Robert

0 Likes
21 Replies