[CX3] uvc bulk-in transfer failed by control-out request on usb2.0

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

cross mob
bbfe_4086196
Level 2
Level 2
5 sign-ins Welcome!

Hi, Cypress expert.

I got a issue on bulk-in conflict with control-out request on cx3.

my board is cyusb3064 with ov7251 sensor, i can stream video properly, but i can't set gain/exposure via e-CAM .

seems bulk-in can't working control-out/in at the same time. conflic with each other.

  • firmware startup, not streaming video, control-out ok (host send data via control type)
  • firmware startup, streaming video, open e-CAM's Options -> Video Capture Filter,  host ask device's gain GET_CUR_REQ

        device ack CyU3PUsbSendEP0Data() cause bulk-in failed (CyU3PDmaMultiChannelCommitBuffer Err = 0x47, size 10224)

  • set gain by e-CAM, device got control-out event, but can't got data by CyU3PUsbGetEP0Data sometimes, with error "USBStpCB:VCI Gain GetEP0Data = 0x49" , then host will send request after 5 seconds.  device can got data at that time.

i also try this  Knowledge Base Articles  EZ-USB® FX3™ Issues With Simultaneous Bulk-IN and Control-IN Transfers In USB 2.0 – KBA92475

but when i set bulk channel to suspend(CyU3PDmaMultiChannelSetSuspend,CyU3PDmaMultiChannelResume), the CyU3PUsbGetEP0Data didn't get return anymore. video on e-CAM lost, zero fps.

can you give me some suggestion to fix this issue, thanks.

0 Likes
1 Solution

Hello,

EDITED:

As per the traces shared in response 15 and 18, it seems that the device's response to the CONTROL IN requests is slow.

As I mentioned earlier, you can also try the workaround mentioned in this thread CYUSB3013 low control read performance with FX3 SDK library versions 1.3.2 and higher so that the performance of EP0 can be increased.

Please refer to this thread FX3: slow data rate from EP0 when DMA is active where the customer sees a similar problem.

Also, from the firmware shared, I see that CyU3PDebugPrint API is called in the DMA callback. Please do not call CyU3PDebugPrint API in the callbacks. You can either set events or use a global variable for tracking failures

Please confirm if that the streaming doesn't stop permanently with SKD 1.3.4.

Delay expected on the CONTROL IN endpoint as all channels are suspended before Control IN transfer. But the BULK endpoint is expected to work again. From the traces shared in response 18, the BULK IN transfers are working after the CONTROL IN transfer is done

As confirmed by you, that both bulk-in and control-in are working well i.e. without any data corruption under CyU3PUsbSetEpSuspDisableMask, But we do not recommend using this as this will lead to the problem mentioned in 4th point of section 2.3. FX3 troubleshooting guide.

Regards,

Rashi

Regards,
Rashi

View solution in original post

0 Likes
21 Replies