Skip to content

2 cameras on one USB2 hub stalls depth channel #48

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Chris-Pane opened this issue Mar 24, 2025 · 2 comments
Open

2 cameras on one USB2 hub stalls depth channel #48

Chris-Pane opened this issue Mar 24, 2025 · 2 comments

Comments

@Chris-Pane
Copy link

Describe the bug
When connecting two Gemini 330 cameras to one USB2 hub, no depth frame is received, color frames are partially corrupt. LibUVC receives more data than expected.

Reproduction Steps

  1. Connect two Gemini 330 cameras to one USB2 hub
  2. Enable color stream 640x480 @ 30fps MJPEG
  3. Enable depth stream 640x480 @ 30fps Y16

Expected behavior
Depth and color frames are received with 30fps.

Log Output

[03/24 08:44:53.603769][info][11517][FilterFactory.cpp:32] Registered 14 filter creators
[03/24 08:44:53.603776][info][11517][FilterFactory.cpp:34]  - Align
[03/24 08:44:53.603778][info][11517][FilterFactory.cpp:34]  - DecimationFilter
[03/24 08:44:53.603778][info][11517][FilterFactory.cpp:34]  - FormatConverter
[03/24 08:44:53.603779][info][11517][FilterFactory.cpp:34]  - FrameFlip
[03/24 08:44:53.603780][info][11517][FilterFactory.cpp:34]  - FrameMirror
[03/24 08:44:53.603781][info][11517][FilterFactory.cpp:34]  - FrameRotate
[03/24 08:44:53.603782][info][11517][FilterFactory.cpp:34]  - HDRMerge
[03/24 08:44:53.603782][info][11517][FilterFactory.cpp:34]  - IMUCorrector
[03/24 08:44:53.603783][info][11517][FilterFactory.cpp:34]  - IMUFrameReversion
[03/24 08:44:53.603784][info][11517][FilterFactory.cpp:34]  - PixelValueOffset
[03/24 08:44:53.603785][info][11517][FilterFactory.cpp:34]  - PixelValueScaler
[03/24 08:44:53.603789][info][11517][FilterFactory.cpp:34]  - PointCloudFilter
[03/24 08:44:53.603790][info][11517][FilterFactory.cpp:34]  - SequenceIdFilter
[03/24 08:44:53.603790][info][11517][FilterFactory.cpp:34]  - ThresholdFilter
[03/24 08:44:53.627571][error][11517][UsbDeviceEnumerator.cpp:147] Start Orbbec USB detection...
[03/24 08:44:53.630699][error][11517][UsbDeviceEnumerator.cpp:152] Found 6 Devices.
[03/24 08:44:53.630883][info][11517][LinuxUsbPal.cpp:310] Create PollingDeviceWatcher!
[03/24 08:44:53.630915][info][11517][DeviceManager.cpp:19] Current found device(s): (2)
[03/24 08:44:53.630920][info][11517][DeviceManager.cpp:27] 	- Name: Gemini 336, PID: 0x0803, SN/ID: CP7X54P0005Z, Connection: USB2.1
[03/24 08:44:53.630922][info][11517][DeviceManager.cpp:27] 	- Name: Gemini 335, PID: 0x0800, SN/ID: CP156410002H, Connection: USB2.1
[03/24 08:44:53.657867][info][11517][DeviceBase.cpp:491] key: AppSlot,value:1
[03/24 08:44:53.657875][info][11517][DeviceBase.cpp:491] key: HwType,value:R1
[03/24 08:44:53.657878][info][11517][DeviceBase.cpp:491] key: HwVer,value:V1.1
[03/24 08:44:53.657881][info][11517][DeviceBase.cpp:491] key: IspFwVer,value:20241125
[03/24 08:44:53.657883][info][11517][DeviceBase.cpp:491] key: IspNeedVer,value:20241125
[03/24 08:44:53.657886][info][11517][DeviceBase.cpp:491] key: PresetVer,value:1.1.9
[03/24 08:44:53.829758][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: FrameUnpacker
[03/24 08:44:53.829923][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: NoiseRemovalFilter
[03/24 08:44:53.829956][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: DisparityTransform
[03/24 08:44:53.829981][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: DepthResize
[03/24 08:44:53.830009][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: HardwareD2DCorrectionFilter
[03/24 08:44:53.830061][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: FrameUnpacker
[03/24 08:44:53.830100][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: FrameUnpacker
[03/24 08:44:53.830134][info][11517][DeviceManager.cpp:140] Device created successfully! Name: Gemini 336, PID: 0x0803, SN/ID: CP7X54P0005Z FW: 1.4.60
[03/24 08:44:53.830212][info][11517][Pipeline.cpp:35] Pipeline created with device: {name: Gemini 336, sn: CP7X54P0005Z}, @0x55C0D8AF4760
[03/24 08:44:53.845894][info][11517][G330Device.cpp:291] Sensor Depth created! Found 26 stream profiles.
[03/24 08:44:53.854615][info][11517][G330Device.cpp:291] Sensor Color created! Found 60 stream profiles.
[03/24 08:44:53.854811][info][11517][Pipeline.cpp:180] Check and set config done!
[03/24 08:44:53.854916][warning][11517][ObException.cpp:8] Filter@FrameProcessor: config schema is empty, doesn't have any config value
[03/24 08:44:53.854981][warning][11517][FrameProcessor.cpp:334] Execute failure! A libobsensor_exception has occurred!
 - where: FrameProcessor.cpp(334):enableHardwareD2CProcess
 - msg: Filter@FrameProcessor: config schema is empty, doesn't have any config value
 - type: N11libobsensor23invalid_value_exceptionE
[03/24 08:44:53.855000][info][11517][Pipeline.cpp:218] Try to start streams!
[03/24 08:44:53.860389][info][11517][Pipeline.cpp:234] Start streams done!
[03/24 08:44:53.860390][info][11517][Pipeline.cpp:202] Pipeline start done!
[03/24 08:44:53.866392][info][11517][DeviceBase.cpp:491] key: AppSlot,value:1
[03/24 08:44:53.866399][info][11517][DeviceBase.cpp:491] key: HwType,value:R1
[03/24 08:44:53.866402][info][11517][DeviceBase.cpp:491] key: HwVer,value:V1.1
[03/24 08:44:53.866434][info][11517][DeviceBase.cpp:491] key: IspFwVer,value:20241125
[03/24 08:44:53.866437][info][11517][DeviceBase.cpp:491] key: IspNeedVer,value:20241125
[03/24 08:44:53.866439][info][11517][DeviceBase.cpp:491] key: PresetVer,value:1.2.2
[03/24 08:44:54.040779][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: FrameUnpacker
[03/24 08:44:54.040854][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: NoiseRemovalFilter
[03/24 08:44:54.040878][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: DisparityTransform
[03/24 08:44:54.040912][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: DepthResize
[03/24 08:44:54.040939][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: HardwareD2DCorrectionFilter
[03/24 08:44:54.040984][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: FrameUnpacker
[03/24 08:44:54.041021][warning][11517][ObException.cpp:8] Invalid filter name, cannot find filter creator for filter name: FrameUnpacker
[03/24 08:44:54.041064][info][11517][DeviceManager.cpp:140] Device created successfully! Name: Gemini 335, PID: 0x0800, SN/ID: CP156410002H FW: 1.4.60
[03/24 08:44:54.041117][info][11517][Pipeline.cpp:35] Pipeline created with device: {name: Gemini 335, sn: CP156410002H}, @0x55C0D919DF00
[03/24 08:44:54.082897][info][11517][G330Device.cpp:291] Sensor Depth created! Found 26 stream profiles.
[03/24 08:44:54.102179][info][11517][G330Device.cpp:291] Sensor Color created! Found 60 stream profiles.
[03/24 08:44:54.102514][info][11517][Pipeline.cpp:180] Check and set config done!
[03/24 08:44:54.102637][warning][11517][ObException.cpp:8] Filter@FrameProcessor: config schema is empty, doesn't have any config value
[03/24 08:44:54.102676][warning][11517][FrameProcessor.cpp:334] Execute failure! A libobsensor_exception has occurred!
 - where: FrameProcessor.cpp(334):enableHardwareD2CProcess
 - msg: Filter@FrameProcessor: config schema is empty, doesn't have any config value
 - type: N11libobsensor23invalid_value_exceptionE
[03/24 08:44:54.102696][info][11517][Pipeline.cpp:218] Try to start streams!
[03/24 08:44:54.109580][info][11517][Pipeline.cpp:234] Start streams done!
[03/24 08:44:54.109582][info][11517][Pipeline.cpp:202] Pipeline start done!
[03/24 08:44:54.463440][warning][11525][VideoSensor.cpp:149] This frame will be dropped because the data size does not match the expectation! size=491244, expected=614400 @Depth
[03/24 08:44:54.604785][warning][11525][ObException.hpp:48] Update data size(638944) > data buffer size! (614400)
[03/24 08:44:54.604904][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(638944) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:54.648500][warning][11531][VideoSensor.cpp:149] This frame will be dropped because the data size does not match the expectation! size=589512, expected=614400 @Depth
[03/24 08:44:54.738628][warning][11525][ObException.hpp:48] Update data size(622102) > data buffer size! (614400)
[03/24 08:44:54.738716][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622102) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:54.871974][warning][11525][ObException.hpp:48] Update data size(622114) > data buffer size! (614400)
[03/24 08:44:54.872044][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622114) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:55.005930][warning][11525][ObException.hpp:48] Update data size(654796) > data buffer size! (614400)
[03/24 08:44:55.006011][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(654796) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[INF] CONNECT SIGNALS                                                                       [at ImageDispatcher.cpp:239]
[03/24 08:44:55.349599][warning][11531][ObException.hpp:48] Update data size(647128) > data buffer size! (614400)
[03/24 08:44:55.349675][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(647128) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:56.338976][warning][11525][ObException.hpp:48] Update data size(622374) > data buffer size! (614400)
[03/24 08:44:56.339038][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622374) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:56.472400][warning][11525][ObException.hpp:48] Update data size(655292) > data buffer size! (614400)
[03/24 08:44:56.472462][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(655292) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:56.620742][warning][11531][ObException.hpp:48] Update data size(704551) > data buffer size! (614400)
[03/24 08:44:56.620823][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(704551) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:56.683816][warning][11531][ObException.hpp:48] Update data size(622433) > data buffer size! (614400)
[03/24 08:44:56.683897][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622433) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:57.407035][warning][11525][ObException.hpp:48] Update data size(622362) > data buffer size! (614400)
[03/24 08:44:57.407148][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622362) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:57.467251][warning][11555][VideoSensor.cpp:149] This frame will be dropped because the data size does not match the expectation! size=65519, expected=614400 @Depth [**164 logs in 3003ms, last: 08:44:57.438806**]
[03/24 08:44:57.555576][warning][11531][ObException.hpp:48] Update data size(638909) > data buffer size! (614400)
[03/24 08:44:57.555639][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(638909) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:57.678108][warning][11531][VideoSensor.cpp:149] This frame will be dropped because the data size does not match the expectation! size=32577, expected=614400 @Depth [**212 logs in 3029ms**]
[03/24 08:44:58.021974][warning][11531][ObException.hpp:48] Update data size(704321) > data buffer size! (614400)
[03/24 08:44:58.022040][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(704321) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:58.076217][warning][11525][ObException.hpp:48] Update data size(622024) > data buffer size! (614400)
[03/24 08:44:58.076289][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622024) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:58.207853][warning][11525][ObException.hpp:48] Update data size(622131) > data buffer size! (614400)
[03/24 08:44:58.207914][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622131) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:58.409493][warning][11525][ObException.hpp:48] Update data size(622114) > data buffer size! (614400)
[03/24 08:44:58.409567][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622114) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:58.489186][warning][11531][ObException.hpp:48] Update data size(704446) > data buffer size! (614400)
[03/24 08:44:58.489258][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(704446) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:58.542994][warning][11525][ObException.hpp:48] Update data size(622025) > data buffer size! (614400)
[03/24 08:44:58.543088][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622025) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:58.619417][warning][11531][ObException.hpp:48] Update data size(646879) > data buffer size! (614400)
[03/24 08:44:58.619498][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(646879) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:58.823238][warning][11531][ObException.hpp:48] Update data size(638970) > data buffer size! (614400)
[03/24 08:44:58.823304][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(638970) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:59.210618][warning][11525][ObException.hpp:48] Update data size(622114) > data buffer size! (614400)
[03/24 08:44:59.210681][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622114) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:59.286480][warning][11531][ObException.hpp:48] Update data size(638874) > data buffer size! (614400)
[03/24 08:44:59.286546][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(638874) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:59.342467][warning][11525][ObException.hpp:48] Update data size(622361) > data buffer size! (614400)
[03/24 08:44:59.342530][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622361) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:59.410677][warning][11525][ObException.hpp:48] Update data size(622114) > data buffer size! (614400)
[03/24 08:44:59.410749][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622114) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:59.416526][info][11553][SensorBase.cpp:266] Gemini 336(CP7X54P0005Z): Color Streaming... frameRate=30.181892fps
[03/24 08:44:59.544244][warning][11525][ObException.hpp:48] Update data size(622024) > data buffer size! (614400)
[03/24 08:44:59.544315][warning][11525][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(622024) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE
[03/24 08:44:59.620887][warning][11531][ObException.hpp:48] Update data size(647295) > data buffer size! (614400)
[03/24 08:44:59.620943][warning][11531][ObLibuvcDevicePort.cpp:441] Execute failure! A libobsensor_exception has occurred!
 - where: ObLibuvcDevicePort.cpp(441):onFrameCallback
 - msg: Update data size(647295) > data buffer size! (614400)
 - type: N11libobsensor16memory_exceptionE

System Environment:

  • OS: Linux
  • Architecture: x86_64

Tool/SDK Version:

  • SDK: 2.2.8

Device Information:

  • Model: Gemini 335 & 336
  • Firmware Version: Both have FW ver. 1.4.60

Additional Information

  • With profiles mentioned above and changed to 15fps, all channels send data at 15fps.
  • Using LibUVC backend. Trying the V4L2 backend results in a crash because No v4l device found on port: x
  • Problem occurs for both values of FrameMetadataParsingPath inside config.xml
@zhonghong322
Copy link
Contributor

1、Using USB 2.0 to connect 2 devices, the USB bandwidth is insufficient.
2、I will reproduce the USB 2.0 V4L2 crash issue you reported later. Is there any problem with V4L2 under USB 3.0?"

@Chris-Pane
Copy link
Author

To 1:
Why exactly is the USB bandwidth insufficient? Using OrbbecViewer I have determined the needed bandwidth for one camera to be 160 Mbps at most. For two cameras, this would be well below the 384 Mbps limit for USB2 bulk transfer when no isochronous transfer is preset. With tools like qv4l2 for Linux, I can in fact open all 4 streams simultaneously at 30fps while both cameras are connected to one USB2 hub.

To 2:
I am no longer able to reproduce this error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants