Write failure FX3 chip

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

cross mob
HaKe_1515226
Level 1
Level 1
First like received 5 questions asked Welcome!

Hi,

We have had issues of seeing write errors (XferData fails on an out endpoint) in one of our products that uses FX3 as the main chip.  This issue only occurs when the port is connected to a USB 3.1 host controller. We tried on several machines with different motherboards and we noticed the issue on all of them which rules out the possibility of a bad USB port or an issue in the motherboard. We looked at the USB3 traffics using Beagle USB 5000 analyzer, but it doesn't detect any issue and the packet seem to be sent successfully (despite the fact that the cypress driver returns an error). The issue is hard to reproduce as it doesn't always happen, but we are sure that it never happens on a USB3.0 host controller. My speculation is that the Cypress driver has some issues with USB3.1 host controllers.

Has anyone else noticed or is having the same issue?

Any thoughts most appreciated.

Hamid

0 Likes
5 Replies
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hello Hamid,

I would like to know more about the problem

- How much data are you  transferring through XferData and what is the error code it returns

- The issue is seen with USB Gen1 or Gen2  3.1 host controller?

- Did you try with different vendors of the host controller?

- What is the OS you are using?

- The driver version?

- Are you not able to capture the error ? How frequently does error occur

Regards,

Rashi

Regards,
Rashi
0 Likes

Hi Rashi,

Please find the below answers to your questions:

- How much data are you  transferring through XferData and what is the error code it returns

The error usually occurs when data is sent to the chip. 64Kbytes is sent each time we call XferData.

GetLastError() returns 995 which means "The I/O operation has been aborted because of either a thread exit or an application request".

Endpt->LastError is 997 which means "Overlapped I/O operation is in progress"

Right after seeing this error our software calls the Abort and Reset functions for the endpoint. Then the first transfer after resetting the endpoint is always successful, but the second one fails. As I mentioned previously, we looked at the USB3 traffics using Beagle USB 5000 analyzer, but it doesn't detect any issue and the packet seem to be sent successfully (despite the fact that the cypress driver returns an error).

- The issue is seen with USB Gen1 or Gen2  3.1 host controller?

Gen2  3.1 host controller

- Did you try with different vendors of the host controller?

No, only Intel. But the two machines have different motherboards with different chipsets. Unfortunately, we don't have an Asmedia host controller to see if the same issue can be reproduced with Asmedia or not.

- What is the OS you are using?

Windows 10

- The driver version?

We tried using both the latest driver and 1.2.3.10

- Are you not able to capture the error? How frequently does error occur?

The USB3 traffics using Beagle USB 5000 analyzer doesn't detect any error.

We send 64kbyte of data back and forth (write and read operations). Sometimes (approximately 1 out 10 times) the error occurs within 30-60 seconds after running our software. If it passes 60 seconds without any errors, then the error wouldn't occur.

Regards,

Rashi

0 Likes

Hello Hamid,

Can you try changing the endpoint timeout from the default (10 seconds ) to a value more than that. You can change that in the CyAPI.cpp file.

- Please let me know the the latest driver version that you are using?

- Which Windows 10  version are you working on?

Regards,

Rashi

Regards,
Rashi
0 Likes

Hi Rashi,

Sorry for my late reply. Please find the below answers to your questions:

- Please let me know the latest driver version that you are using?

1.2.3.20

- Which Windows 10  version are you working on?

Windows 10 Pro 1809 OS build 17763.805

Regards,

Hamid

0 Likes

Hello Hamid,

Can you try changing the endpoint timeout from the default (10 seconds ) to a value more than that. You can change that in the CyAPI.cpp file

>>Did you try changing the timeout? Is the error still there?

Regards,

Rashi

Regards,
Rashi
0 Likes