Unable to stream data from a UVC camera as soon as a plug LTE modem on another usb port

Hi,
I have a (UVC) usb camera connected on 1 of the USB ports. I am able to stream data from this camera sensor at 30 FPS. I also want to connect a usb modem on the other port available through hub
PROBLEM: As soon as i connect the modem I starts getting fame errors or garbage in the camera frames.

Initially this seems to be the bandwidth issue of the dragonboard usb but as it is a usb 2.0 compliant port it should support near to 60MBps(theoritical speed). The camera requires about 18 MBps and the remaining bandwidth should be more than sufficient for modem.
Need support to pin point the issue.

Bandwidth for webcams is reserved in advance and, in principle, nothing else on the USB bus can interfere with it. Some details are here:
http://www.ideasonboard.org/uvc/faq/#faq7

Of course I don’t doubt interference is happening but it is odd that the interference should be due to insufficient USB bandwidth… that would imply a bug in the kernel host controller driver which, whilst possible, would be a pretty rare discovery.

Do the devices play nicely together on a USB2 hub attached to a Linux workstation?

Hi danielt
We have tried changing the USB descriptors and as well as the frame rate to 22 fps and 15 fps of the camera but that doesn’t effects occurrence of the issue i.e. the issue persists as it was.

To answer your query:
Do the devices play nicely together on a USB2 hub attached to a Linux workstation?
Yes, these devices works nicely together on a USB2 hub attached to a Linux workstation.

It should be pretty much the same bandwidth management code that runs in DB410C and on your workstation. If you are running a newer kernel then there might be different UVC quirks by default but, assuming “changing the USB descriptors” means “experimenting with applying quirks to the UVC driver” you’ve already got that covered.

I’m afraid I don’t know why frames would come back corrupt.

Still can’t help directly but I did notice a very detailed article on USB debugging tools on lwn.net. If you are not a subscriber then you will have to wait until it is publicly available but if you do have to dig deep then I think it will help (UVC uses isochronous transfers, they have reserved bandwidth but, according to the article can still get dropped if the link-layer gets too busy for short intervals):
The USB debugging arsenal [LWN.net]

Can you try and follow this, just reduce the webcam bandwith, its a known issue with linux and webcams :confused:

Hi,
One of our customer using DragaonBoard410C for his application.

  1. They are connecting USB camera on USB port J2/J3, its working fine.
  2. They are connecting USB Modem based on Quectel EC20 on either USB port J2/J3, its working fine.
  3. But when they tried to connect both together, The issue reported is that while camera is connected to J2 and modem is connected to J3, the sanpdragon is unable to stream frames.
  4. And then tried using a USB Hub with APQ8016 and at hub they has interfaced one camera and EC20 4G Modem. So While both Power On then Camera is not Streaming while Modem is Working Fine. After Evaluating at our end we had interfaced Modem and Camera at usb hub with OS then both running fine, So the conclusion may be because of Bandwidth issue of Processor that doesn’t support both the thing Simultaneously.

Need your support on the same.

|OS|
Debian Stretch|

|Kernel version|4.9.56-linaro-lt-qcom|

|Kernel toolchain|gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz|

Regards,
Vageesh K M