You are here

UVC example with ISOC endpoint over USB3.0 | Cypress Semiconductor

UVC example with ISOC endpoint over USB3.0

Summary: 2 Replies, Latest post by grantdj_1587721 on 13 Jul 2016 11:19 AM PDT
Verified Answers: 0
Last post
Log in to post new comments.
shah's picture
Cypress Employee
9 posts

AN75779 uses USB bulk endpoint to transfer image data. The total available bandwidth would be around 40MBps over USB2.0 and 400MBps over USB3.0 since it is bulk implementation. If this is changed to isoc, the total available bandwidth will be limited to 24MBps over USB2.0 and 128MBps over USB3.0. I have tried alocating more bandwidth with isoc endpoint in USB3.0 and the host does not allow it today.

However, the standard UVC driver has not been updated for USB3.0. It allows the bulk implementation to set a burst length of 16 but it does not allow the isoc implementation to set a mult higher than 1 or burst of larger than 1. This pretty much limits the bandwidth to 8MBps over USB3.0 and is not very useful.

Testing OS: XP 32bit, Vista 64bit, Win7 64bit

Conclusion: For standard UVC applications over USB3.0, bulk is the way to go.

NIKL's picture
Cypress Employee
283 posts

Correction to the above post:

UVC driver tested on Windows 7/8/10 allows MULT setting of 3, but limits BURST to 1 in case of Isoc Endpoint for USB 3.0. So max. throughput achievable if Isoc Endpoint is used for UVC device in USB 3.0 mode is 24MBps.

Test firmware is available upon request. Please contact tech support.



grantdj_1587721's picture
2 posts


Can you describe how you came to this conclusion? The burst settings in linux are set in the usb core code not the uvc driver. 

I am running on a tegra TX1 R23 it uses l4t kernel 3.10. Everything below holds true for mainline linux as well. With kernel 4.6 released in may it upped the burst mode even more for isoc transfers to handle usb 3.1 connections.

uvc_init_video_isoc uvc_video.c - This doesn't touch any of the burst mode settings, in fact the only usb_ss_ep_comp_descriptor data it accesses when running in super speed mode seems to be wBytesPerInterval.

Most of the device setup stuff is in drivers/usb/core/config.c 


Log in to post new comments.