I’m using 2 sets of USB3.0_UC-425_ Rev.C+UC-489_Rev.C+OV5647 on a embedded board which have a Qualcomm SDA845 processor (Arm64). They look working well at the beginning but one of them gives error of USB_CAMERA_DATA_LEN in the middle. You’ve mentioned this kind of error is related with Bandwidth. The embedded board has 2 USB3-Controller and I think 2 camera sets should be working even with capturing 2592 x 1944 @ 15fps.
I’d like to check if the error is Bandwidth problem with capturing much smaller sized image and low capturing speed. However I can’t make a proper configuration file. ex. 640x480 [email protected] I’ve tried but doesn’t work. Could you help me to make it?
Sorry for my late reply. I have calculated. For USB3, the bandwidth is enough, I do not know how your board’s USB3 performance. Have you tested it on windows?
At present, we don’t have 640x480 [email protected] config file. We will try to configure it recently.
Maybe you can try our new mipi adapter board, which supports more fast speed and more kinds of formats. Getting it here: https://www.uctronics.com/arducam-mipi-adapter-board-for-usb3-camera-shield.html
I have tested not on Window but Ubuntu. It works well on Ubuntu.
I already have that mipi-adapter board but haven’t test it on my embedded board because there was a problem to run it. The problem is solved now . I will test soon and let you know. Thank you.
I’m afraid that the problem persists even with new mipi adapter that you recommended.
Have you tested it now? if the problem is still exist. We will try our best to help you configure a small resolution and low frame speed config file. Don’t worry.
I have tested but doesn’t work.
By the way, I made a new configuration file with which my camera works at around 4fps.
The cameras with the configuration file works on my embedded board without any errors.
Anyway, do you have any plan to open SDK code? or Can you share the code?
I’ve tested with only 1 camera with a configuration file that make it run at 10fps on my embedded board. It looked working correctly at first but it finally gave USB_DATA_LEN errors after hours.
Do you think what kind of problem it is?
This phenomenon seems to be that the USB data bandwidth is not enough. Can you determine the USB bandwidth capacity of your main control?
I’m sorry but I don’t know how to do it
I have question. What does USB_DATA_LEN exactly mean? Could you give me more details for that? Should RECEIVE_LENGTH be constant?
Hi @yeongrok ,
The data length of the compressed format is not fixed, and the data length of other formats is fixed.
When you see the USB_DATA_LEN error, it indicates that the received data length does not match the expected data length. If this error occurs occasionally, it may be because the USB bandwidth fluctuates or the CPU does not handle it in time. If this error keeps appearing, it means that the USB bandwidth is insufficient.
Very thank you for the reply.
Another question. The camera finally gives USB_TIMEOUT_ERROR after more hours. Is this same problem?
Hi @yeongrok ,
USB_TIMEOUT_ERROR indicates that no data was received, usually due to loose cable.
I’m still trying to run 2 sets of USB3.0_UC-425_ Rev.C+UC-628_Rev.B+OV5647 on a SDA845 embedded board. But the cameras give USB_CAMERA_DATA_LEN after some hours.
My team checked kernel level log and found out that “discardurb” shows up when the error occurs. My team thinks “discardurb” is from ArducamSDK. Do you have any idea for this?
Do you know what condition brings “discardurb”?
<6>[ 272.911100] usb 2-4: usbdev_do_ioctl: SUBMITURB
<6>[ 272.911140] usb 2-4: userurb 0000007f700221b0, ep2 bulk-in, length 131072
<6>[ 272.911204] usb 2-4: usbdev_do_ioctl: REAPURBNDELAY
<6>[ 272.911244] usb 2-4: reap 0000007f700222d0
<6>[ 272.911310] usb 2-4: usbdev_do_ioctl: SUBMITURB
<6>[ 272.911351] usb 2-4: userurb 0000007f700222d0, ep2 bulk-in, length 131072
<6>[ 272.911415] usb 2-4: usbdev_do_ioctl: REAPURBNDELAY
<6>[ 272.911455] usb 2-4: reap 0000007f700223f0
<6>[ 272.911522] usb 2-4: usbdev_do_ioctl: SUBMITURB
<6>[ 272.911562] usb 2-4: userurb 0000007f700223f0, ep2 bulk-in, length 131072
<6>[ 272.911626] usb 2-4: usbdev_do_ioctl: REAPURBNDELAY
<6>[ 272.912417] usb 2-4: usbdev_do_ioctl: SUBMITURB
<6>[ 272.912458] usb 2-4: control urb: bRequestType=40 bRequest=a2 wValue=0000 wIndex=0000 wLength=0000
<6>[ 272.912518] usb 2-4: userurb 0000007f7182b200, ep0 ctrl-out, length 0
<6>[ 272.912845] I[7: swapper/7: 0] usb 2-4: urb complete
<6>[ 272.912880] I[7: swapper/7: 0] usb 2-4: userurb 0000007f7182b200, ep0 ctrl-out, actual_length 0 status 0
<6>[ 272.912949] usb 2-4: usbdev_do_ioctl: REAPURBNDELAY
<6>[ 272.912988] usb 2-4: reap 0000007f7182b200
<6>[ 272.913027] usb 2-4: usbdev_do_ioctl: REAPURBNDELAY
<6>[ 272.913080] usb 2-4: usbdev_do_ioctl: DISCARDURB 0000007f70023590
<6>[ 272.913980] I[7: swapper/7: 0] usb 2-4: urb complete
<6>[ 272.914014] I[7: swapper/7: 0] usb 2-4: userurb 0000007f70023590, ep2 bulk-in, actual_length 0 status -2
ArducamSDK will not actively discard data, it may be that the CPU has not processed it in time.