question about Maximum Bandwidth on Windows 11 or Ubuntu host for USB UVC Isochronous transfers

56 Views Asked by At

I have two embedded linux devices which create 5 UVC camera devices in total, 3 UVC devices from one SOC and 2 UVC devices from second SOC. These two Linux SOC boards are connected to a host (Windows 11 or Ubuntu PC) through a superspeedplus hub (externally powered). Each SOC sending an image stream on a distinct endpoint.

My host PC is Windows 11, Dell Vostro 7510 with intel USB 3.10 eXtensible Host controller.

The UVC camera device configurations: UVC camera device 1:

streaming_maxpacket: 3072 streaming_maxburst: 10 streaming_interval: 2

UVC camera device 2:

streaming_maxpacket: 3072 streaming_maxburst: 10 streaming_interval: 2

UVC camera device 3:

streaming_maxpacket: 3072 streaming_maxburst: 4 streaming_interval: 3

UVC camera devices 2 and 3 are repeated on 2nd SOC, hence forming 5 UVC camera devices. The issue is Windows 11 host is unable to allocate the required bandwidth of around 431,134,720 Bytes/sec. The Max Windows host can allocate is around 380 MegaBytes/sec. When I open the last stream using Windows Media Foundation APIs, I get "Controller Does not have enough resources" pop up window and the last stream fails to open. Reducing the bandwidth from the UVC devices allows all the streams to be open only if the combined bandwidth is below 380 MB/sec.

  1. What is restricting the bandwidth allocation to 380 MB/sec from the host side for USB Isochronous mode? This restriction appears to be what a superspeed device is capable in Isochronous transfer mode (1024316*8000), where 8000 is number of transfer intervals (125 microseconds each) in a sec. Windows/Ubuntu host should be able to achieve 10 Gbps speed over USB, given that PCIe each lane is 10 Gbps. We have seen the same issue on Ubuntu host PC. So the limitation doesn't only apply to Windows host.

  2. What parameters at the device can be tweaked so that we can improve the bandwidth allocation?

  3. What is the maximum bandwidth achievable (In Isochronous mode or in bulk mode) from the host side considering we have superspeed devices connected to the host through superspeed plus hub?

Update: I have checked that the same 2 SOCs are able to send together 7.2 Gbps bulk data to Windows host and the host receives it at 7.2 Gbps. Only that windows 11 host is unable to receives close to 7.2 Gbps in Isochronous mode, max throughput achieved at host is 3.048 Gbps in Isochronous mode.

Thanks, Vinay

1

There are 1 best solutions below

0
Vinay On

Found the answer while testing, the BW restriction was duet to host controller algorithm in allocating BW, using single Endpoint seem to give 5 gbps, the BW seem to come down when increasing the endpoints or number of UVC devices maybe because of context switch due to more than one UVC endpoint to deal with.