USB extension working in the viewer but not with the SDK

Hi,
I’m using Orbbec Femto Bolt cameras.
I’ve tried with several USB cable extensions that work in the OrbbecViewer but then when using the same setup our application with the OrbbecSDK, it fails silently, connecting then the cameras directly to the PC with the provided cables, our application works fine.
I’ve also encountered that when the camera connection is detected as an USB2.1, the viewer is capable to stream depth and color data while our application is unable to receive new frames.
Is there something specific that is being done in the viewer that allows more robust connection with the cameras that we could also implement?

Hi,
I have also encountered the same problem with femto bolt when using external adapters.
If you also used longer power supply cabels then the original ones, then the power supply might be a problem too. Putting ferit cores on power supply cabels might be a solutin in that case.

Regarding extenisons check if they really support usb 3.0 or best 3.1, which are supported by the camera.

What programming lanuge are you using?

If you analyse the log, then you should see there, that when the bandwidth is limited frames are dropped out and the newest one it transfered. Per se the app should not fail if some frames are dropped. If it fails in your app, then it might be your implementation not handling it properly.

Which types of frames do you request?
Do you do it over event or awaiting new buffer to arraive?
Do you request all frames to be in frameset to be delivered?

Please provide more details, for now you question is very general…

Cheers,
M

Hi,

Before even attempting to start the cameras we check the connection type is either 3.0 or 3.1 and if it isn’t so the application exits.

We use the C++. Any idea of which key words to search for when checking for dropped frames? I’ve searched for drop but there’s no log with the word.

We request color and depth frames (in BGRA and Y16 respectively) and set to aggregate OB_FRAME_AGGREGATE_OUTPUT_ALL_TYPE_FRAME_REQUIRE.

To retrieve the frame sets we use a callback when creating the pipelines as in the multi device example in the SDK repo.

The problem we get is that it doesn’t get a new frame within 5 seconds, it doesn’t fail per se, but no new frames are received.

Ideally the frames would be received, but if they cannot, then just having a way to identify it would be nice. Can the SDK be used to check the bandwidth of the connected cables?

With the last cables we tested we fixed it by connecting them to the power supply, but it would still be nice to be able to detect this problem and be able to warn the user.

Thanks