Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Collapse
Brand Logo

ModalAI Forum

  1. ModalAI Support Forum
  2. VOXL Compute & Autopilot
  3. VOXL 2 Mini
  4. VOXL2 Mini flip camera orientation

VOXL2 Mini flip camera orientation

Scheduled Pinned Locked Moved VOXL 2 Mini
11 Posts 2 Posters 2.2k Views 1 Watching
  • 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.
  • LucaVertiqL Offline
    LucaVertiqL Offline
    LucaVertiq
    Contributor
    wrote on last edited by
    #1

    @Moderator
    At some point the camera orientation for the voxl2 mini flipped from:
    0f63f7e6-1874-4ded-83d1-2343a8d27385-image.png
    To: 18adcc19-4481-479e-b187-84a67bb232b2-image.png

    Is there any way to go back to the original orientation? It makes camera mounting much easier.

    Thanks!

    Alex KushleyevA 1 Reply Last reply
    0
    • LucaVertiqL LucaVertiq

      @Moderator
      At some point the camera orientation for the voxl2 mini flipped from:
      0f63f7e6-1874-4ded-83d1-2343a8d27385-image.png
      To: 18adcc19-4481-479e-b187-84a67bb232b2-image.png

      Is there any way to go back to the original orientation? It makes camera mounting much easier.

      Thanks!

      Alex KushleyevA Offline
      Alex KushleyevA Offline
      Alex Kushleyev
      ModalAI Team
      wrote on last edited by
      #2

      @LucaVertiq,

      it looks like now you are using M0135 adapter to connect the cameras to J7. Currently OV7251 is connected to J7L (camera slot 2) and IMX214 hires camera is connected to J7U (camera slot 3). If you look in /usr/lib/camera, you will probably find there:

      • com.qti.sensormodule.ov7251_2.bin
      • com.qti.sensormodule.imx214_3.bin
      • (2 and 3 correspond to slot numbers).

      So, to switch it back (move OV7251 to J7U / camera slot 3 and IMX214 to J7L / camera slot 2), you need to do the following:

      • with VOXL2 mini powered off, connect the cameras into new configuration
      • power on the board
      • remove the two sensormodule files from /usr/lib/camera
      • copy the sensormodule files with correct slot IDs from /usr/share/modalai/chi-cdk to /usr/lib/camera
        • cp /usr/share/modalai/chi-cdk/ov7251/com.qti.sensormodule.ov7251_3.bin /usr/lib/camera/
        • cp /usr/share/modalai/chi-cdk/imx214/com.qti.sensormodule.imx214_2.bin /usr/lib/camera/
      • do a quick test using voxl-camera-server -l to make sure which cameras are detected and which camera ID they have
      • you may need to update the camera IDs in /etc/modalai/voxl-camera-server.conf since you just swapped the cameras - the camera with lowest slot ID should have camera ID 0

      I think that's all - please try and let me know if you have any issues

      LucaVertiqL 1 Reply Last reply
      0
      • Alex KushleyevA Alex Kushleyev

        @LucaVertiq,

        it looks like now you are using M0135 adapter to connect the cameras to J7. Currently OV7251 is connected to J7L (camera slot 2) and IMX214 hires camera is connected to J7U (camera slot 3). If you look in /usr/lib/camera, you will probably find there:

        • com.qti.sensormodule.ov7251_2.bin
        • com.qti.sensormodule.imx214_3.bin
        • (2 and 3 correspond to slot numbers).

        So, to switch it back (move OV7251 to J7U / camera slot 3 and IMX214 to J7L / camera slot 2), you need to do the following:

        • with VOXL2 mini powered off, connect the cameras into new configuration
        • power on the board
        • remove the two sensormodule files from /usr/lib/camera
        • copy the sensormodule files with correct slot IDs from /usr/share/modalai/chi-cdk to /usr/lib/camera
          • cp /usr/share/modalai/chi-cdk/ov7251/com.qti.sensormodule.ov7251_3.bin /usr/lib/camera/
          • cp /usr/share/modalai/chi-cdk/imx214/com.qti.sensormodule.imx214_2.bin /usr/lib/camera/
        • do a quick test using voxl-camera-server -l to make sure which cameras are detected and which camera ID they have
        • you may need to update the camera IDs in /etc/modalai/voxl-camera-server.conf since you just swapped the cameras - the camera with lowest slot ID should have camera ID 0

        I think that's all - please try and let me know if you have any issues

        LucaVertiqL Offline
        LucaVertiqL Offline
        LucaVertiq
        Contributor
        wrote on last edited by
        #3

        @Alex-Kushleyev Hey Alex, that worked for that fix. Additionally I attempted to put the same cameras on J6 in the orientation with the OV7251 on the M0135 Upper and the IMX214 on the M0135 Lower.

        My understanding is that I should put the com.qti.sensormodule.ov7251_1.bin and com.qti.sensormodule.imx214_0.bin into the /usr/lib/camera folder (and delete the non-used ones).

        When I run voxl-camera-server -l this only shows the tracking camera. Plugging the board back into J7 again shows both cameras when switching back to imx214_2 and ov7251_3 drivers.

        Am I making a bad assumption here?

        Additionally I notice that the IMX214 doesn't have drivers for _1 and _5, but does have a driver for _3. Why is this? We aren't quite sure what orientation will work best for our vehicle layout so we were hoping to be able to use all 4 configurations of double camera mounted on m0135 boards with J6 and J7.

        Thanks,

        Luca

        LucaVertiqL 1 Reply Last reply
        0
        • LucaVertiqL LucaVertiq

          @Alex-Kushleyev Hey Alex, that worked for that fix. Additionally I attempted to put the same cameras on J6 in the orientation with the OV7251 on the M0135 Upper and the IMX214 on the M0135 Lower.

          My understanding is that I should put the com.qti.sensormodule.ov7251_1.bin and com.qti.sensormodule.imx214_0.bin into the /usr/lib/camera folder (and delete the non-used ones).

          When I run voxl-camera-server -l this only shows the tracking camera. Plugging the board back into J7 again shows both cameras when switching back to imx214_2 and ov7251_3 drivers.

          Am I making a bad assumption here?

          Additionally I notice that the IMX214 doesn't have drivers for _1 and _5, but does have a driver for _3. Why is this? We aren't quite sure what orientation will work best for our vehicle layout so we were hoping to be able to use all 4 configurations of double camera mounted on m0135 boards with J6 and J7.

          Thanks,

          Luca

          LucaVertiqL Offline
          LucaVertiqL Offline
          LucaVertiq
          Contributor
          wrote on last edited by
          #4

          @Moderator
          Another update because this is confusing me. If I have the cameras plugged in with ov7251_1.bin and imx214_0.bin if I run voxl-camera-server -l immediately after power on it detects 2 cameras.

          voxl2-mini:~$ voxl-camera-server -l
          existing instance of voxl-camera-server found, attempting to stop it
          DEBUG:   Attempting to open the hal module
          DEBUG:   SUCCESS: Camera module opened on attempt 0
          DEBUG:   ----------- Number of cameras: 2
          
          DEBUG:   Cam idx: 0, Cam slot: 0, Slave Address: 0x0020, Sensor Id: 0x0214
          DEBUG:   Cam idx: 1, Cam slot: 1, Slave Address: 0x00E2, Sensor Id: 0x7750
          DEBUG:   Note: This list comes from the HAL module and may not be indicative
          DEBUG:          of configurations that have full pipelines
          
          DEBUG:   Number of cameras: 2
          
          
          ====================================
          Stats for camera: 0
          
          ANDROID_SCALER_AVAILABLE_RAW_SIZES:
          These are likely supported by the sensor
          4208 x 3120
          3840 x 2160
          1920 x 1080
          1920 x 1080
          
          ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS:
          These are NOT necessarily supported by the sensor
          4208 x 3120 HAL_PIXEL_FORMAT_YCbCr_420_888
          4208 x 3120 HAL_PIXEL_FORMAT_BLOB
          4160 x 3120 HAL_PIXEL_FORMAT_YCbCr_420_888
          4160 x 3120 HAL_PIXEL_FORMAT_BLOB
          4096 x 2304 HAL_PIXEL_FORMAT_YCbCr_420_888
          4096 x 2304 HAL_PIXEL_FORMAT_BLOB
          4096 x 2160 HAL_PIXEL_FORMAT_YCbCr_420_888
          4096 x 2160 HAL_PIXEL_FORMAT_BLOB
          4056 x 3040 HAL_PIXEL_FORMAT_YCbCr_420_888
          4056 x 3040 HAL_PIXEL_FORMAT_BLOB
          4000 x 3000 HAL_PIXEL_FORMAT_YCbCr_420_888
          4000 x 3000 HAL_PIXEL_FORMAT_BLOB
          3840 x 2160 HAL_PIXEL_FORMAT_YCbCr_420_888
          3840 x 2160 HAL_PIXEL_FORMAT_BLOB
          3264 x 2448 HAL_PIXEL_FORMAT_YCbCr_420_888
          3264 x 2448 HAL_PIXEL_FORMAT_BLOB
          3200 x 2400 HAL_PIXEL_FORMAT_YCbCr_420_888
          3200 x 2400 HAL_PIXEL_FORMAT_BLOB
          2976 x 2976 HAL_PIXEL_FORMAT_YCbCr_420_888
          2976 x 2976 HAL_PIXEL_FORMAT_BLOB
          2688 x 1512 HAL_PIXEL_FORMAT_YCbCr_420_888
          2688 x 1512 HAL_PIXEL_FORMAT_BLOB
          2592 x 1944 HAL_PIXEL_FORMAT_YCbCr_420_888
          2592 x 1944 HAL_PIXEL_FORMAT_BLOB
          2048 x 1536 HAL_PIXEL_FORMAT_YCbCr_420_888
          2048 x 1536 HAL_PIXEL_FORMAT_BLOB
          1920 x 1440 HAL_PIXEL_FORMAT_YCbCr_420_888
          1920 x 1440 HAL_PIXEL_FORMAT_BLOB
          1928 x 1208 HAL_PIXEL_FORMAT_YCbCr_420_888
          1928 x 1208 HAL_PIXEL_FORMAT_BLOB
          1920 x 1080 HAL_PIXEL_FORMAT_YCbCr_420_888
          1920 x 1080 HAL_PIXEL_FORMAT_BLOB
          1600 x 1200 HAL_PIXEL_FORMAT_YCbCr_420_888
          1600 x 1200 HAL_PIXEL_FORMAT_BLOB
          1440 x 1080 HAL_PIXEL_FORMAT_YCbCr_420_888
          1440 x 1080 HAL_PIXEL_FORMAT_BLOB
          1280 x  960 HAL_PIXEL_FORMAT_YCbCr_420_888
          1280 x  960 HAL_PIXEL_FORMAT_BLOB
          1280 x  800 HAL_PIXEL_FORMAT_YCbCr_420_888
          1280 x  800 HAL_PIXEL_FORMAT_BLOB
          1280 x  768 HAL_PIXEL_FORMAT_YCbCr_420_888
          1280 x  768 HAL_PIXEL_FORMAT_BLOB
          1280 x  720 HAL_PIXEL_FORMAT_YCbCr_420_888
          1280 x  720 HAL_PIXEL_FORMAT_BLOB
          1080 x 1080 HAL_PIXEL_FORMAT_YCbCr_420_888
          1080 x 1080 HAL_PIXEL_FORMAT_BLOB
          1024 x  738 HAL_PIXEL_FORMAT_YCbCr_420_888
          1024 x  738 HAL_PIXEL_FORMAT_BLOB
          1024 x  768 HAL_PIXEL_FORMAT_YCbCr_420_888
          1024 x  768 HAL_PIXEL_FORMAT_BLOB
           864 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
           864 x  480 HAL_PIXEL_FORMAT_BLOB
           800 x  600 HAL_PIXEL_FORMAT_YCbCr_420_888
           800 x  600 HAL_PIXEL_FORMAT_BLOB
           800 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
           800 x  480 HAL_PIXEL_FORMAT_BLOB
           720 x 1280 HAL_PIXEL_FORMAT_YCbCr_420_888
           720 x 1280 HAL_PIXEL_FORMAT_BLOB
           720 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
           720 x  480 HAL_PIXEL_FORMAT_BLOB
           640 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
           640 x  480 HAL_PIXEL_FORMAT_BLOB
           640 x  400 HAL_PIXEL_FORMAT_YCbCr_420_888
           640 x  400 HAL_PIXEL_FORMAT_BLOB
           640 x  360 HAL_PIXEL_FORMAT_YCbCr_420_888
           640 x  360 HAL_PIXEL_FORMAT_BLOB
           352 x  288 HAL_PIXEL_FORMAT_YCbCr_420_888
           352 x  288 HAL_PIXEL_FORMAT_BLOB
           320 x  240 HAL_PIXEL_FORMAT_YCbCr_420_888
           320 x  240 HAL_PIXEL_FORMAT_BLOB
           240 x  320 HAL_PIXEL_FORMAT_YCbCr_420_888
           240 x  320 HAL_PIXEL_FORMAT_BLOB
           176 x  144 HAL_PIXEL_FORMAT_YCbCr_420_888
           176 x  144 HAL_PIXEL_FORMAT_BLOB
          4208 x 3120 HAL_PIXEL_FORMAT_RAW10
          4208 x 3120 HAL_PIXEL_FORMAT_RAW12
          4208 x 3120 HAL_PIXEL_FORMAT_RAW16
          4208 x 3120 HAL_PIXEL_FORMAT_RAW_OPAQUE
          
          ANDROID_SENSOR_INFO_SENSITIVITY_RANGE
                  min = 54
                  max = 431
          
          ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY
                  431
          
          ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE
                  min = 10449ns
                  max = 683714540ns
          
          
          ====================================
          Stats for camera: 1
          
          ANDROID_SCALER_AVAILABLE_RAW_SIZES:
          These are likely supported by the sensor
           640 x  480
           640 x  480
           640 x  480
          
          ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS:
          These are NOT necessarily supported by the sensor
           640 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
           640 x  480 HAL_PIXEL_FORMAT_BLOB
           640 x  400 HAL_PIXEL_FORMAT_YCbCr_420_888
           640 x  400 HAL_PIXEL_FORMAT_BLOB
           640 x  360 HAL_PIXEL_FORMAT_YCbCr_420_888
           640 x  360 HAL_PIXEL_FORMAT_BLOB
           352 x  288 HAL_PIXEL_FORMAT_YCbCr_420_888
           352 x  288 HAL_PIXEL_FORMAT_BLOB
           320 x  240 HAL_PIXEL_FORMAT_YCbCr_420_888
           320 x  240 HAL_PIXEL_FORMAT_BLOB
           240 x  320 HAL_PIXEL_FORMAT_YCbCr_420_888
           240 x  320 HAL_PIXEL_FORMAT_BLOB
           176 x  144 HAL_PIXEL_FORMAT_YCbCr_420_888
           176 x  144 HAL_PIXEL_FORMAT_BLOB
           640 x  480 HAL_PIXEL_FORMAT_RAW10
           640 x  480 HAL_PIXEL_FORMAT_RAW12
           640 x  480 HAL_PIXEL_FORMAT_RAW16
           640 x  480 HAL_PIXEL_FORMAT_RAW_OPAQUE
          
          ANDROID_SENSOR_INFO_SENSITIVITY_RANGE
                  min = 54
                  max = 3451
          
          ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY
                  3451
          
          ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE
                  min = 0ns
                  max = 1266732525ns
          
          ====================================
          Number of cameras detected: 2
          ====================================
          

          If I instead run voxl-inspect-cam -a it shows that tracking is working, but hires is not.

          |   hires_large_color |
          | hires_large_encoded |
          |    hires_large_grey |
          |   hires_small_color |
          | hires_small_encoded |
          |    hires_small_grey |
          |      hires_snapshot |
          |        qvio_overlay |  368640 |  640 |  576 |  5.00 |   64 |      694 |     25.3  | 29.5 |   87.0 | RAW8
          |            tracking |  307200 |  640 |  480 |  5.00 |   64 |      694 |     11.8  | 30.0 |   73.7 | RAW8
          

          My camera server config is below:

           * voxl-camera-server Configuration File
           *
           * Each camera has configurations for up to 4 HAL3 streams:
           *    - `preview` stream for raw unprocessed images from CV cameras
           *    - `small_video` 720p (ish) h264/h265 compressed for fpv video streaming
           *    - `large_video` 4k (ish) h264/h265 for onboard video recording to disk
           *    - `snapshot` ISP-processed JPG snapshots that get saved to disk
           *
           * on QRB5165 platforms (VOXL2 and VOXL2 mini) you can only have 3 of the 4 enabled
           *
           * This file is generated from default values by voxl-configure-cameras.
           * Do not expect arbitrary resolutions to work, the ISP and video compression
           * pipelines only support very specific resolutions.
           *
           * The default video compression mode is cqp or Constant Quantization Parameter
           *
           *
           *
           */
          {
                  "version":      0.1,
                  "cameras":      [{
                                  "type": "imx214",
                                  "name": "hires",
                                  "enabled":      true,
                                  "camera_id":    0,
                                  "fps":  30,
                                  "en_preview":   false,
                                  "preview_width":        640,
                                  "preview_height":       480,
                                  "en_raw_preview":       false,
                                  "en_small_video":       true,
                                  "small_video_width":    1024,
                                  "small_video_height":   768,
                                  "small_venc_mode":      "h265",
                                  "small_venc_br_ctrl":   "cqp",
                                  "small_venc_Qfixed":    30,
                                  "small_venc_Qmin":      15,
                                  "small_venc_Qmax":      40,
                                  "small_venc_nPframes":  9,
                                  "small_venc_mbps":      2,
                                  "en_large_video":       true,
                                  "large_video_width":    4208,
                                  "large_video_height":   3120,
                                  "large_venc_mode":      "h265",
                                  "large_venc_br_ctrl":   "cqp",
                                  "large_venc_Qfixed":    38,
                                  "large_venc_Qmin":      15,
                                  "large_venc_Qmax":      50,
                                  "large_venc_nPframes":  29,
                                  "large_venc_mbps":      30,
                                  "en_snapshot":  true,
                                  "en_snapshot_width":    4208,
                                  "en_snapshot_height":   3120,
                                  "ae_mode":      "isp"
                          },
                          {
                                  "type": "ov7251",
                                  "name": "tracking",
                                  "enabled":      true,
                                  "camera_id":    1,
                                  "fps":  30,
                                  "en_rotate":    false,
                                  "en_preview":   true,
                                  "preview_width":        640,
                                  "preview_height":       480,
                                  "en_raw_preview":       true,
                                  "ae_mode":      "lme_msv",
                                  "ae_desired_msv":       60,
                                  "exposure_min_us":      20,
                                  "exposure_max_us":      33000,
                                  "gain_min":     54,
                                  "gain_max":     8000,
                                  "exposure_soft_min_us": 5000,
                                  "ae_filter_alpha":      0.600000023841858,
                                  "ae_ignore_fraction":   0.20000000298023224,
                                  "ae_slope":     0.05000000074505806,
                                  "ae_exposure_period":   1,
                                  "ae_gain_period":       1
                          }]
          }
          

          It appears as if something happens when the stream is accessed. If I run voxl-camera-server and then kill it voxl-camera-server -l will still show 2 cameras, but if I instead run voxl-camera-server and then in another window run voxl-inspect-cam -a the original window will no longer respond to ctrl-C. If I force kill i with kill -9 proccess_num then run voxl-camera-server -l it now shows 1 camera until I reboot.

          Any ideas?

          Alex KushleyevA 1 Reply Last reply
          0
          • LucaVertiqL LucaVertiq

            @Moderator
            Another update because this is confusing me. If I have the cameras plugged in with ov7251_1.bin and imx214_0.bin if I run voxl-camera-server -l immediately after power on it detects 2 cameras.

            voxl2-mini:~$ voxl-camera-server -l
            existing instance of voxl-camera-server found, attempting to stop it
            DEBUG:   Attempting to open the hal module
            DEBUG:   SUCCESS: Camera module opened on attempt 0
            DEBUG:   ----------- Number of cameras: 2
            
            DEBUG:   Cam idx: 0, Cam slot: 0, Slave Address: 0x0020, Sensor Id: 0x0214
            DEBUG:   Cam idx: 1, Cam slot: 1, Slave Address: 0x00E2, Sensor Id: 0x7750
            DEBUG:   Note: This list comes from the HAL module and may not be indicative
            DEBUG:          of configurations that have full pipelines
            
            DEBUG:   Number of cameras: 2
            
            
            ====================================
            Stats for camera: 0
            
            ANDROID_SCALER_AVAILABLE_RAW_SIZES:
            These are likely supported by the sensor
            4208 x 3120
            3840 x 2160
            1920 x 1080
            1920 x 1080
            
            ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS:
            These are NOT necessarily supported by the sensor
            4208 x 3120 HAL_PIXEL_FORMAT_YCbCr_420_888
            4208 x 3120 HAL_PIXEL_FORMAT_BLOB
            4160 x 3120 HAL_PIXEL_FORMAT_YCbCr_420_888
            4160 x 3120 HAL_PIXEL_FORMAT_BLOB
            4096 x 2304 HAL_PIXEL_FORMAT_YCbCr_420_888
            4096 x 2304 HAL_PIXEL_FORMAT_BLOB
            4096 x 2160 HAL_PIXEL_FORMAT_YCbCr_420_888
            4096 x 2160 HAL_PIXEL_FORMAT_BLOB
            4056 x 3040 HAL_PIXEL_FORMAT_YCbCr_420_888
            4056 x 3040 HAL_PIXEL_FORMAT_BLOB
            4000 x 3000 HAL_PIXEL_FORMAT_YCbCr_420_888
            4000 x 3000 HAL_PIXEL_FORMAT_BLOB
            3840 x 2160 HAL_PIXEL_FORMAT_YCbCr_420_888
            3840 x 2160 HAL_PIXEL_FORMAT_BLOB
            3264 x 2448 HAL_PIXEL_FORMAT_YCbCr_420_888
            3264 x 2448 HAL_PIXEL_FORMAT_BLOB
            3200 x 2400 HAL_PIXEL_FORMAT_YCbCr_420_888
            3200 x 2400 HAL_PIXEL_FORMAT_BLOB
            2976 x 2976 HAL_PIXEL_FORMAT_YCbCr_420_888
            2976 x 2976 HAL_PIXEL_FORMAT_BLOB
            2688 x 1512 HAL_PIXEL_FORMAT_YCbCr_420_888
            2688 x 1512 HAL_PIXEL_FORMAT_BLOB
            2592 x 1944 HAL_PIXEL_FORMAT_YCbCr_420_888
            2592 x 1944 HAL_PIXEL_FORMAT_BLOB
            2048 x 1536 HAL_PIXEL_FORMAT_YCbCr_420_888
            2048 x 1536 HAL_PIXEL_FORMAT_BLOB
            1920 x 1440 HAL_PIXEL_FORMAT_YCbCr_420_888
            1920 x 1440 HAL_PIXEL_FORMAT_BLOB
            1928 x 1208 HAL_PIXEL_FORMAT_YCbCr_420_888
            1928 x 1208 HAL_PIXEL_FORMAT_BLOB
            1920 x 1080 HAL_PIXEL_FORMAT_YCbCr_420_888
            1920 x 1080 HAL_PIXEL_FORMAT_BLOB
            1600 x 1200 HAL_PIXEL_FORMAT_YCbCr_420_888
            1600 x 1200 HAL_PIXEL_FORMAT_BLOB
            1440 x 1080 HAL_PIXEL_FORMAT_YCbCr_420_888
            1440 x 1080 HAL_PIXEL_FORMAT_BLOB
            1280 x  960 HAL_PIXEL_FORMAT_YCbCr_420_888
            1280 x  960 HAL_PIXEL_FORMAT_BLOB
            1280 x  800 HAL_PIXEL_FORMAT_YCbCr_420_888
            1280 x  800 HAL_PIXEL_FORMAT_BLOB
            1280 x  768 HAL_PIXEL_FORMAT_YCbCr_420_888
            1280 x  768 HAL_PIXEL_FORMAT_BLOB
            1280 x  720 HAL_PIXEL_FORMAT_YCbCr_420_888
            1280 x  720 HAL_PIXEL_FORMAT_BLOB
            1080 x 1080 HAL_PIXEL_FORMAT_YCbCr_420_888
            1080 x 1080 HAL_PIXEL_FORMAT_BLOB
            1024 x  738 HAL_PIXEL_FORMAT_YCbCr_420_888
            1024 x  738 HAL_PIXEL_FORMAT_BLOB
            1024 x  768 HAL_PIXEL_FORMAT_YCbCr_420_888
            1024 x  768 HAL_PIXEL_FORMAT_BLOB
             864 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
             864 x  480 HAL_PIXEL_FORMAT_BLOB
             800 x  600 HAL_PIXEL_FORMAT_YCbCr_420_888
             800 x  600 HAL_PIXEL_FORMAT_BLOB
             800 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
             800 x  480 HAL_PIXEL_FORMAT_BLOB
             720 x 1280 HAL_PIXEL_FORMAT_YCbCr_420_888
             720 x 1280 HAL_PIXEL_FORMAT_BLOB
             720 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
             720 x  480 HAL_PIXEL_FORMAT_BLOB
             640 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
             640 x  480 HAL_PIXEL_FORMAT_BLOB
             640 x  400 HAL_PIXEL_FORMAT_YCbCr_420_888
             640 x  400 HAL_PIXEL_FORMAT_BLOB
             640 x  360 HAL_PIXEL_FORMAT_YCbCr_420_888
             640 x  360 HAL_PIXEL_FORMAT_BLOB
             352 x  288 HAL_PIXEL_FORMAT_YCbCr_420_888
             352 x  288 HAL_PIXEL_FORMAT_BLOB
             320 x  240 HAL_PIXEL_FORMAT_YCbCr_420_888
             320 x  240 HAL_PIXEL_FORMAT_BLOB
             240 x  320 HAL_PIXEL_FORMAT_YCbCr_420_888
             240 x  320 HAL_PIXEL_FORMAT_BLOB
             176 x  144 HAL_PIXEL_FORMAT_YCbCr_420_888
             176 x  144 HAL_PIXEL_FORMAT_BLOB
            4208 x 3120 HAL_PIXEL_FORMAT_RAW10
            4208 x 3120 HAL_PIXEL_FORMAT_RAW12
            4208 x 3120 HAL_PIXEL_FORMAT_RAW16
            4208 x 3120 HAL_PIXEL_FORMAT_RAW_OPAQUE
            
            ANDROID_SENSOR_INFO_SENSITIVITY_RANGE
                    min = 54
                    max = 431
            
            ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY
                    431
            
            ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE
                    min = 10449ns
                    max = 683714540ns
            
            
            ====================================
            Stats for camera: 1
            
            ANDROID_SCALER_AVAILABLE_RAW_SIZES:
            These are likely supported by the sensor
             640 x  480
             640 x  480
             640 x  480
            
            ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS:
            These are NOT necessarily supported by the sensor
             640 x  480 HAL_PIXEL_FORMAT_YCbCr_420_888
             640 x  480 HAL_PIXEL_FORMAT_BLOB
             640 x  400 HAL_PIXEL_FORMAT_YCbCr_420_888
             640 x  400 HAL_PIXEL_FORMAT_BLOB
             640 x  360 HAL_PIXEL_FORMAT_YCbCr_420_888
             640 x  360 HAL_PIXEL_FORMAT_BLOB
             352 x  288 HAL_PIXEL_FORMAT_YCbCr_420_888
             352 x  288 HAL_PIXEL_FORMAT_BLOB
             320 x  240 HAL_PIXEL_FORMAT_YCbCr_420_888
             320 x  240 HAL_PIXEL_FORMAT_BLOB
             240 x  320 HAL_PIXEL_FORMAT_YCbCr_420_888
             240 x  320 HAL_PIXEL_FORMAT_BLOB
             176 x  144 HAL_PIXEL_FORMAT_YCbCr_420_888
             176 x  144 HAL_PIXEL_FORMAT_BLOB
             640 x  480 HAL_PIXEL_FORMAT_RAW10
             640 x  480 HAL_PIXEL_FORMAT_RAW12
             640 x  480 HAL_PIXEL_FORMAT_RAW16
             640 x  480 HAL_PIXEL_FORMAT_RAW_OPAQUE
            
            ANDROID_SENSOR_INFO_SENSITIVITY_RANGE
                    min = 54
                    max = 3451
            
            ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY
                    3451
            
            ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE
                    min = 0ns
                    max = 1266732525ns
            
            ====================================
            Number of cameras detected: 2
            ====================================
            

            If I instead run voxl-inspect-cam -a it shows that tracking is working, but hires is not.

            |   hires_large_color |
            | hires_large_encoded |
            |    hires_large_grey |
            |   hires_small_color |
            | hires_small_encoded |
            |    hires_small_grey |
            |      hires_snapshot |
            |        qvio_overlay |  368640 |  640 |  576 |  5.00 |   64 |      694 |     25.3  | 29.5 |   87.0 | RAW8
            |            tracking |  307200 |  640 |  480 |  5.00 |   64 |      694 |     11.8  | 30.0 |   73.7 | RAW8
            

            My camera server config is below:

             * voxl-camera-server Configuration File
             *
             * Each camera has configurations for up to 4 HAL3 streams:
             *    - `preview` stream for raw unprocessed images from CV cameras
             *    - `small_video` 720p (ish) h264/h265 compressed for fpv video streaming
             *    - `large_video` 4k (ish) h264/h265 for onboard video recording to disk
             *    - `snapshot` ISP-processed JPG snapshots that get saved to disk
             *
             * on QRB5165 platforms (VOXL2 and VOXL2 mini) you can only have 3 of the 4 enabled
             *
             * This file is generated from default values by voxl-configure-cameras.
             * Do not expect arbitrary resolutions to work, the ISP and video compression
             * pipelines only support very specific resolutions.
             *
             * The default video compression mode is cqp or Constant Quantization Parameter
             *
             *
             *
             */
            {
                    "version":      0.1,
                    "cameras":      [{
                                    "type": "imx214",
                                    "name": "hires",
                                    "enabled":      true,
                                    "camera_id":    0,
                                    "fps":  30,
                                    "en_preview":   false,
                                    "preview_width":        640,
                                    "preview_height":       480,
                                    "en_raw_preview":       false,
                                    "en_small_video":       true,
                                    "small_video_width":    1024,
                                    "small_video_height":   768,
                                    "small_venc_mode":      "h265",
                                    "small_venc_br_ctrl":   "cqp",
                                    "small_venc_Qfixed":    30,
                                    "small_venc_Qmin":      15,
                                    "small_venc_Qmax":      40,
                                    "small_venc_nPframes":  9,
                                    "small_venc_mbps":      2,
                                    "en_large_video":       true,
                                    "large_video_width":    4208,
                                    "large_video_height":   3120,
                                    "large_venc_mode":      "h265",
                                    "large_venc_br_ctrl":   "cqp",
                                    "large_venc_Qfixed":    38,
                                    "large_venc_Qmin":      15,
                                    "large_venc_Qmax":      50,
                                    "large_venc_nPframes":  29,
                                    "large_venc_mbps":      30,
                                    "en_snapshot":  true,
                                    "en_snapshot_width":    4208,
                                    "en_snapshot_height":   3120,
                                    "ae_mode":      "isp"
                            },
                            {
                                    "type": "ov7251",
                                    "name": "tracking",
                                    "enabled":      true,
                                    "camera_id":    1,
                                    "fps":  30,
                                    "en_rotate":    false,
                                    "en_preview":   true,
                                    "preview_width":        640,
                                    "preview_height":       480,
                                    "en_raw_preview":       true,
                                    "ae_mode":      "lme_msv",
                                    "ae_desired_msv":       60,
                                    "exposure_min_us":      20,
                                    "exposure_max_us":      33000,
                                    "gain_min":     54,
                                    "gain_max":     8000,
                                    "exposure_soft_min_us": 5000,
                                    "ae_filter_alpha":      0.600000023841858,
                                    "ae_ignore_fraction":   0.20000000298023224,
                                    "ae_slope":     0.05000000074505806,
                                    "ae_exposure_period":   1,
                                    "ae_gain_period":       1
                            }]
            }
            

            It appears as if something happens when the stream is accessed. If I run voxl-camera-server and then kill it voxl-camera-server -l will still show 2 cameras, but if I instead run voxl-camera-server and then in another window run voxl-inspect-cam -a the original window will no longer respond to ctrl-C. If I force kill i with kill -9 proccess_num then run voxl-camera-server -l it now shows 1 camera until I reboot.

            Any ideas?

            Alex KushleyevA Offline
            Alex KushleyevA Offline
            Alex Kushleyev
            ModalAI Team
            wrote on last edited by
            #5

            @LucaVertiq , OK so if you use J7, you can stream the both cameras fine, but only the issue with hanging happens if you switch to J6?

            The reason why not all sensormodules were built for IMX214 (like _1 and _5) is actually because currently on VOXL2 (not mini), the slots 1 and 5 do not support a hires camera (those camera ports are prioritized for a stereo pair use case). However, if you need to test IMX214 in slot 1, it is not an issue, i can build it for you.

            Let me try out the ov7251 tracking and IMX214 configuration on J6 (both connection options) and I will let you know if I run into any stability issues.

            Alex

            LucaVertiqL 1 Reply Last reply
            0
            • Alex KushleyevA Alex Kushleyev

              @LucaVertiq , OK so if you use J7, you can stream the both cameras fine, but only the issue with hanging happens if you switch to J6?

              The reason why not all sensormodules were built for IMX214 (like _1 and _5) is actually because currently on VOXL2 (not mini), the slots 1 and 5 do not support a hires camera (those camera ports are prioritized for a stereo pair use case). However, if you need to test IMX214 in slot 1, it is not an issue, i can build it for you.

              Let me try out the ov7251 tracking and IMX214 configuration on J6 (both connection options) and I will let you know if I run into any stability issues.

              Alex

              LucaVertiqL Offline
              LucaVertiqL Offline
              LucaVertiq
              Contributor
              wrote on last edited by
              #6

              @Alex-Kushleyev Thanks for taking a look. I think we won't need a driver for the imx214 on port 1, as I want the camera cables to extend outwards from the board instead of lying across the board regardless of whether we have them on J6 or J7. I've done some more testing and remain stuck with this error so if you find anything please let me know! I may try reflashing to 1.1.2 as a clean slate, but I want to make sure I have all of the settings I've changed and drivers I've built saved if they aren't in the /data/ directiory

              Alex KushleyevA 1 Reply Last reply
              0
              • LucaVertiqL LucaVertiq

                @Alex-Kushleyev Thanks for taking a look. I think we won't need a driver for the imx214 on port 1, as I want the camera cables to extend outwards from the board instead of lying across the board regardless of whether we have them on J6 or J7. I've done some more testing and remain stuck with this error so if you find anything please let me know! I may try reflashing to 1.1.2 as a clean slate, but I want to make sure I have all of the settings I've changed and drivers I've built saved if they aren't in the /data/ directiory

                Alex KushleyevA Offline
                Alex KushleyevA Offline
                Alex Kushleyev
                ModalAI Team
                wrote on last edited by Alex Kushleyev
                #7

                @LucaVertiq , i was able to reproduce your issue. I am using sdk 1.1.1 - on voxl2 mini the imx214 camera only works in slot 3, does not work in slots 0,1,2. This is not expected, we will look into it.

                LucaVertiqL 1 Reply Last reply
                0
                • Alex KushleyevA Alex Kushleyev

                  @LucaVertiq , i was able to reproduce your issue. I am using sdk 1.1.1 - on voxl2 mini the imx214 camera only works in slot 3, does not work in slots 0,1,2. This is not expected, we will look into it.

                  LucaVertiqL Offline
                  LucaVertiqL Offline
                  LucaVertiq
                  Contributor
                  wrote on last edited by LucaVertiq
                  #8

                  @Alex-Kushleyev Oh! I'm glad I wasn't misunderstanding how it should work. Thanks for taking the time to check it out. I was actually able to get it to work in both slots 2 and 3, just not 0 (and of course not 1 because I don't have the driver).

                  Alex KushleyevA 1 Reply Last reply
                  0
                  • LucaVertiqL LucaVertiq

                    @Alex-Kushleyev Oh! I'm glad I wasn't misunderstanding how it should work. Thanks for taking the time to check it out. I was actually able to get it to work in both slots 2 and 3, just not 0 (and of course not 1 because I don't have the driver).

                    Alex KushleyevA Offline
                    Alex KushleyevA Offline
                    Alex Kushleyev
                    ModalAI Team
                    wrote on last edited by
                    #9

                    @LucaVertiq , we were able to get IMX214 working on all for slots (0,1,2,3), it requires a kernel update. I will check if it is simply available in a newer SDK or otherwise we will share it. Additionally, I will provide the driver for slot 1.

                    Should have an update tomorrow..

                    LucaVertiqL 1 Reply Last reply
                    0
                    • Alex KushleyevA Alex Kushleyev

                      @LucaVertiq , we were able to get IMX214 working on all for slots (0,1,2,3), it requires a kernel update. I will check if it is simply available in a newer SDK or otherwise we will share it. Additionally, I will provide the driver for slot 1.

                      Should have an update tomorrow..

                      LucaVertiqL Offline
                      LucaVertiqL Offline
                      LucaVertiq
                      Contributor
                      wrote on last edited by
                      #10

                      @Alex-Kushleyev Glad that you were able to get that working. I think I tried updating to SDK 1.2.X and was having issues with getting the camera server working, but I think I may just need to wipe. All of these things would be super useful! I'll be out for the next week, so no rush, but it's very good to know that there's a fix.

                      Alex KushleyevA 1 Reply Last reply
                      0
                      • LucaVertiqL LucaVertiq

                        @Alex-Kushleyev Glad that you were able to get that working. I think I tried updating to SDK 1.2.X and was having issues with getting the camera server working, but I think I may just need to wipe. All of these things would be super useful! I'll be out for the next week, so no rush, but it's very good to know that there's a fix.

                        Alex KushleyevA Offline
                        Alex KushleyevA Offline
                        Alex Kushleyev
                        ModalAI Team
                        wrote on last edited by
                        #11

                        @LucaVertiq ,

                        Here is the latest VOXL2 mini nightly SDK : https://storage.cloud.google.com/platform-nightlies/voxl2-mini/voxl2-mini_SDK_nightly_20240415.tar.gz

                        I just tested by using SDK 1.1.1 as a base and booting using the kernel from the nightly:

                        adb reboot bootloader
                        fastboot boot qti-ubuntu-robotics-image-m0104-1-boot.img
                        

                        IMX214 works on all 4 ports. I think you have an option of using this approach or just installing the full nightly. I am not 100% that the latest kernel is fully compatible with everything in SDK 1.1.1, so that is a bit of a risk, so using nightly is a back up option if you wanted to try the SDK 1.1.1 and something did not work as expected with the latest kernel.

                        If you install the full nightly, use M0054-1 board variant for the voxl2 mini.

                        Also here are links for the imx214 sensormodule for slot 1 (regular and flip):

                        https://storage.googleapis.com/modalai_public/temp/voxl2-misc-packages/com.qti.sensormodule.imx214_1.bin
                        https://storage.googleapis.com/modalai_public/temp/voxl2-misc-packages/com.qti.sensormodule.imx214_flip_1.bin

                        1 Reply Last reply
                        0

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        ModalAI
                        Categories Recent Tags ModalAI.com Docs
                        © 2026 ModalAI® · Accelerating autonomy for smaller, smarter, safer drones · Powered by NodeBB
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups