ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    VOXL2 IMX412 Camera "Received 0 buffers" Error

    Video and Image Sensors
    2
    8
    293
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Y
      ysc
      last edited by

      Hello,

      I'm experiencing a "Received 0 buffers" error with my VOXL2 IMX412 camera. The camera is detected but no video output is being generated.

      Hardware Configuration:

      • VOXL2 Board: M0054 (MCCA-M0054-C26-T0-M0-X0)
      • Camera: IMX412 M0107 (ModalAI)
      • Slot: J7L (slot 2)
      • Cable: M0036
      • Gender: M0076
      • SDK: 1.4.5
      • System Image: 1.8.02

      Problem:
      voxl-camera-server detects the camera but no image data is being transmitted and no video output is generated.

      Symptoms:

      • Camera detection: ✅ "Number of cameras: 1"
      • HAL3 module: ✅ Successfully opened
      • Stream setup: ✅ Successfully configured
      • GBM buffers: ✅ 16 buffers allocated
      • Image data: ❌ "Received 0 buffers" error
      • Video output: ❌ No video stream generated
      • VOXL Portal: ❌ Empty Debug Stats table

      Troubleshooting Attempted:

      • Replaced all hardware (board, camera, cable, gender)
      • Tested various software configurations
      • System reboots
      • Sensor module files verification and correction
      • I2C communication confirmed
      • Power supply confirmed stable

      Key Debug Output:

      Full Debug Output (voxl-camera-server -d0):

      detected system image 1.8.2
      using new imx412 defaults

      configuration for 1 cameras:
      cam #0
      name: hires
      sensor type: imx412
      isEnabled: 1
      camId: 0
      camId2: -1
      fps: 30
      en_rotate: 0
      en_rotate2: 0
      en_preview: 1
      pre_width: 640
      pre_height: 480
      en_raw_preview: 0
      en_small_video: 0
      small_video_width: 1024
      small_video_height: 768
      en_large_video: 0
      large_video_width: 4056
      large_video_height: 3040
      en_misp: 0
      misp_width: -1
      misp_height: -1
      en_snapshot: 0
      snap_width: 4056
      snap_height: 3040
      exif_focal_length: 3.100000
      exif_focal_len_35mm_format:17
      exif_fnumber: 1.240000
      ae_mode: isp
      msv_exposure_min_us: 20
      msv_exposure_max_us: 33000
      gain_min : 54
      gain_max : 8000
      standby_enabled: 0
      decimator: 1
      independent_exposure:0
      fsync_en: 0
      fsync_gpio: 109

      DEBUG: Attempting to open the hal module
      DEBUG: SUCCESS: Camera module opened on attempt 0
      DEBUG: ----------- Number of cameras: 1
      VERBOSE: cci-direct: using voxl_platform_mod config 1 and 2 layout
      DEBUG: Cam idx: 0, Cam slot: 2, Slave Address: 0x0034, Sensor Id: 0x0577
      thread is locked to cores: 4 5 6 7
      connected to mavlink pipe
      Connected to cpu-monitor
      DEBUG: ------ voxl-camera-server: Starting 1 cameras
      Starting Camera: hires (id #0)
      DEBUG: Checking Gain limits for Camera: hires
      DEBUG: Using gain limits min: 100 max: 8000
      DEBUG: cam ID 0 checking for fmt: 35 w: 640 h: 480 o: 0
      [format options list...]
      VERBOSE: Successfully found configuration match for camera 0: 640x480
      VERBOSE: Adding preview stream for camera: 0
      DEBUG: Converted gralloc flags 0x20900 to GBM flags 0x1400000
      VERBOSE: Dumping GBM flags
      DEBUG: Found flag GBM_BO_USAGE_CAMERA_WRITE_QTI
      DEBUG: Found flag GBM_BO_USAGE_HW_COMPOSER_QTI
      VERBOSE: Opened GBM fd
      gbm_create_device(156): Info: backend name is: msm_drm
      VERBOSE: Created GBM device
      [16 buffer allocations...]
      DEBUG: Successfully set up pipeline for stream: PREVIEW
      VERBOSE: Entered thread: cam0-request(tid: 2861)
      VERBOSE: Entered thread: cam0-result(tid: 2862)
      DEBUG: Started Camera: hires
      ------ voxl-camera-server: Started 1 of 1 cameras
      ------ voxl-camera-server: Camera server is now running
      VERBOSE: added request for preview stream
      VERBOSE: Sending request for frame 0 for camera hires for 1 streams
      VERBOSE: Received result from HAl3 for frame number 0
      VERBOSE: Received 0 buffers from camera hires, partial result:1
      VERBOSE: finished sending request for frame 0 for camera hires
      VERBOSE: returning from SendOneCaptureRequest for frame 1 for camera hires
      VERBOSE: added request for preview stream
      VERBOSE: Sending request for frame 1 for camera hires for 1 streams
      VERBOSE: finished sending request for frame 1 for camera hires
      VERBOSE: returning from SendOneCaptureRequest for frame 2 for camera hires
      VERBOSE: added request for preview stream
      VERBOSE: Sending request for frame 2 for camera hires for 1 streams
      VERBOSE: finished sending request for frame 2 for camera hires
      VERBOSE: returning from SendOneCaptureRequest for frame 3 for camera hires
      VERBOSE: added request for preview stream
      VERBOSE: Sending request for frame 3 for camera hires for 1 streams
      VERBOSE: finished sending request for frame 3 for camera hires
      VERBOSE: returning from SendOneCaptureRequest for frame 4 for camera hires
      VERBOSE: added request for preview stream
      VERBOSE: Sending request for frame 4 for camera hires for 1 streams
      VERBOSE: finished sending request for frame 4 for camera hires
      VERBOSE: returning from SendOneCaptureRequest for frame 5 for camera hires
      VERBOSE: added request for preview stream
      VERBOSE: Sending request for frame 5 for camera hires for 1 streams
      VERBOSE: Received result from HAl3 for frame number 1
      VERBOSE: Received 0 buffers from camera hires, partial result:1
      VERBOSE: Received result from HAl3 for frame number 2
      VERBOSE: Received 0 buffers from camera hires, partial result:1
      DEBUG: Value of standby_active is: 0
      DEBUG: Value of standby_active is: 0
      DEBUG: Value of standby_active is: 0
      DEBUG
      ...
      Let me reevaluate and take a different approach.
      f6efd475-ec59-4c3b-bcd5-497e80cec7bf-image.png

      Alex KushleyevA 1 Reply Last reply Reply Quote 0
      • Alex KushleyevA
        Alex Kushleyev ModalAI Team @ysc
        last edited by

        @ysc , can you please provide the end of the output from dmesg when you attempt to start the camera?

        And just to confirm, you tried using a different IMX412 camera (of the same type) and a different M0036 Flex cable?

        In the past we have seen that some flex cables (may be out of spec) do not work well with IMX412 camera. We can test this with a special camera driver (sensormodule), which will use the camera in very low MIPI bit rate. However, before we do that, can you please provide the output of dmesg when this failure happens?

        Also, did this camera + flex configuration work before, or this is the first time you are testing it and it is not working?

        Thank you

        Alex

        Y 1 Reply Last reply Reply Quote 0
        • Y
          ysc @Alex Kushleyev
          last edited by

          @Alex-Kushleyev

          Thank you for your response. I have conducted the tests you suggested:

          Test Results:

          1. Direct connection (without M0036 extension cable):

            • ✅ SUCCESS: Camera works perfectly when connected directly to VOXL2
            • ✅ IMX412 camera is properly detected and functioning
            • ✅ No MIPI CSI lane overflow errors
            • ✅ Camera server reports cameras connected successfully
          2. M0036 extension cable test:

            • ❌ FAILURE: Both M0036 extension cables I have exhibit the same problem
            • ❌ MIPI CSI lane overflow errors occur with both cables
            • ❌ Camera server reports "Found zero cameras connected"

          Hardware Configuration:

          • VOXL2 QRB5165M
          • IMX412 camera module (M0107)
          • Tested with 2 different M0036 extension cables
          • Using official connectors, ports, and cables

          Previous Experience:
          I have used this same IMX412 + M0036 configuration before and it worked successfully. This suggests that the M0036 extension cables may have degraded over time or there might be a batch issue with the cables.
          https://forum.modalai.com/topic/4461/voxl2-didn-t-detect-imx412-camera/7?_=1757372933541

          Questions:

          1. Since both of my M0036 extension cables are exhibiting the same MIPI CSI lane overflow issues, should I purchase new M0036 cables?
          2. Are there any known issues with M0036 cable degradation over time?
          3. Is there a way to test the M0036 cables independently to confirm they are the root cause?
          4. Would you recommend any specific M0036 cable suppliers or should I purchase directly from ModalAI?

          Thank you for your help in diagnosing this issue.

          Alex KushleyevA 1 Reply Last reply Reply Quote 0
          • Alex KushleyevA
            Alex Kushleyev ModalAI Team @ysc
            last edited by Alex Kushleyev

            @ysc ,

            the "fpv" version of the IMX412 driver uses the fastest camera MIPI bit rate at 2.1 Gbit/s per lane. The M0036 cables, when designed, were not tested under these conditions, since the camera driver update came recently and the test was not available.

            Can you please try to use the IMX412 sensormodule from /usr/share/modalai/chi-cdk/imx412/com.qti.sensormodule.imx412_2.bin instead of the FPV variant of the driver? (you will need to remove the com.qti.sensormodule.imx412_fpv_2.bin file from /usr/lib/camera/.

            The older driver streams the camera data at a lower rate, I believe 1.5Gbit/s. Please let me know if this change works for you.

            Regarding the cable supplier and degradation - we have not encountered cable degradation over time, however some cables may be slightly out of spec for this fastest MIPI bit rate. Also, we do not have other suppliers for the M0036, so you should purchase from ModalAI. However, lets figure out if there is a software solution first.

            Also, what is the final resolution of the image and FPS that you need for your application? Lower resolutions require less bandwidth and we could lower the bitrate even more if that helps.

            Alex

            Y 1 Reply Last reply Reply Quote 0
            • Y
              ysc @Alex Kushleyev
              last edited by

              @Alex-Kushleyev

              Final Update on M0036 Extension Cable Issue:

              Actions Taken (Following Your Recommendations):

              • ✅ Removed FPV driver (2.1Gbps): com.qti.sensormodule.imx412_fpv_2.bin
              • ✅ Using lower bitrate driver (1.5Gbps): com.qti.sensormodule.imx412_2.bin
              • ✅ Tested with 720p 30fps configuration (lower resolution as suggested)

              Test Results:

              • ✅ Direct connection: Works perfectly with 1.5Gbps driver
              • ❌ M0036 extension cable: Still fails with "Received 0 buffers from camera hires"

              Current Status:
              Even after implementing your suggested solution (1.5Gbps driver + 720p resolution), the M0036 cable cannot handle IMX412 data transmission. The camera is detected, streams are configured successfully, but no data is transmitted through the cable.

              Application Requirements:

              • Target resolution: 720p (1280x720) for PC streaming
              • Frame rate: 30fps
              • Use case: Real-time video streaming from VOXL2 to PC

              The M0036 extension cable appears to have compatibility issues with IMX412 even with the lower bitrate driver and reduced resolution settings.

              Thank you for your continued support.

              Alex KushleyevA 1 Reply Last reply Reply Quote 0
              • Alex KushleyevA
                Alex Kushleyev ModalAI Team @ysc
                last edited by

                @ysc ,

                Thank you for performing the tests. It is possible that the cables were damaged, since they were working originally, it seems, even with the "fpv" version of the drivers.

                Regarding the output resolution vs camera mode, the best way to find out which resolution the camera is actually streaming is to run the following before you start voxl-camera-server:

                logcat | grep -i selected
                

                The output should be something like this (may look slightly different in your case):

                03-02 13:03:06.847  3338  3338 I CHIUSECASE: [CONFIG ] chxextensionmodule.cpp:2358 InitializeOverrideSession() Session_parameters FPS range 30:30, previewFPS 0, videoFPS 0 BatchSize: 1 HALOutputBufferCombined 0 FPS: 30 SkipPattern: 1, cameraId = 0 selected use case = 1
                03-02 13:03:06.852  3338  3338 I CHIUSECASE: [CONFIG ] chxsensorselectmode.cpp:558 FindBestSensorMode() MAI: Selected Usecase: 7, SelectedMode W=4056, H=3040, FPS:30, NumBatchedFrames:0, modeIndex:0
                

                this tells you that the camera mode 4056x3040 @ 30 FPS was selected from the several modes that the sensormodule driver provides. Since you have selected the ISP processing in your config file, the default logic in the camera pipeline will select highest resolution camera mode and then down-scale in the ISP (for highest quality). So, even though you were selecting 1280x720 output, it is most likely that the camera was still running in full resolution mode (you can check).

                In any case, there is an issue with the flex cables. One last thing, I just wanted to confirm that you are NOT connecting two M0036 flexes back-to-back (to make a longer cable), because that is not guaranteed to work due to the length.

                If the single M0036 cables are not working, then we will replace them for free. Please submit an RMA request (www.modalai.com/rma) and ask for QTY 2 free replacement M0036 cables (include a link to this thread)

                Alex

                Y 1 Reply Last reply Reply Quote 0
                • Y
                  ysc @Alex Kushleyev
                  last edited by

                  @Alex-Kushleyev

                  Thank you for your detailed response and suggestions. Here's an update on the current situation:

                  Current Status:

                  • ✅ Camera is now working properly with video output
                  • ✅ VOXL Portal shows live video feed
                  • ✅ FPS: 10, Resolution: 640x480
                  • ✅ Camera streams: hires_color and hires_grey are both functional

                  Regarding your suggestions:

                  1. Cable Status: I am using a single M0036 cable (no extension).

                  2. logcat Command: The logcat | grep -i selected command doesn't work on VOXL2.

                  Current Configuration:

                  • IMX412 camera in J7L slot (slot 2)
                  • Single M0036 cable, no extensions
                  • Preview stream: 640x480 @ 10 FPS
                  • Camera server: running successfully

                  Thank you for your help in resolving this issue!

                  Alex KushleyevA 1 Reply Last reply Reply Quote 0
                  • Alex KushleyevA
                    Alex Kushleyev ModalAI Team @ysc
                    last edited by

                    @ysc , I am glad that the camera is working, but could you clarify what you changed to make it work? You should be able to get higher resolution and FPS if everything is working properly.

                    Also, if the logcat outout is not showing up, it is probably because the logging from camera pipeline is disabled in the following file : /vendor/etc/camera/camxoverridesettings.txt:

                    systemLogEnable=0
                    

                    If that is set to zero, you can just comment out that parameter and try again.

                    Alex

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post
                    Powered by NodeBB | Contributors