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

    Voxl 2 Mini with Starvis 2 not detected

    Video and Image Sensors
    3
    6
    362
    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.
    • A
      aheyne
      last edited by

      VOXL 2 Mini + IMX664 (MSU-M0186) on M0194 interposer → voxl-camera-server -s detects 0 cameras on J6/J7 (two different units tried)

      TL;DR: Brand-new VOXL 2 Mini test fixture (M0104), IMX664 FPV camera (MSU-M0186) on M0194 interposer. I’ve tried two separate Minis, two separate M0194 boards, and two separate IMX664 camera modules. On both J6 and J7, voxl-camera-server -s (self-identify) reports 0 cameras. I also tried a minimal one-camera custom config (fsync disabled) and probing camId 0..3. Still no joy. Looking for guidance on what else to check (stack-height/variant, regulator enables, expected camId mapping, known issues in SDK 1.4.5/1.5.0), and how to definitively validate the CSI/CCI link from software.

      Hardware

      Compute: VOXL 2 Mini (board ID M0104), test fixture
      Unit A (current): fresh, working Wi-Fi, ADB OK
      Unit B (earlier test): also fresh; same behavior
      Interposer: M0194 (I believe M0194-2, Mini variant; please confirm what to check on silkscreen). Tried two different M0194 boards
      Camera: MSU-M0186 (Sony Starvis 2 IMX664, micro-coax). Tried two different camera modules using the included micro-coax; firmly latched (also tried reseating).
      Connectors used: J6 and J7 (tried both), correct orientation (DF40 is not reversible)
      Cabling/seat checks: Multiple reseats; interposer sits flat with no visible gap; micro-coax fully latched; tried a second micro-coax where available

      Software / Versions

      Unit A (current)

      system-image: 1.8.02-M0104-14.1a-perf
      voxl-suite: 1.4.5
      kernel: 4.19.125 (#1 SMP PREEMPT Tue Nov 12 00:00:44 UTC 2024)
      SKU: TF-M0104-6-V1-C6

      Unit B (earlier)

      voxl-suite: 1.5.0 (same behavior)

      Tools used:

      voxl-configure-mpa, voxl-configure-cameras
      voxl-inspect-services, voxl-camera-server (-s and -l), voxl-inspect-cam

      Symptom

      No matter which header (J6/J7) or camId (0..3) I target, self-identify and list show 0 cameras, and the camera server exits with:

      ERROR:   Found zero cameras connected, need at least one.
      

      What I’ve tried (chronological-ish)

      Configured cameras via wizard

      Selected 50 – “voxl2 mini hires imx664” (no Boson present).

      Result: voxl-camera-server fails to start; voxl-inspect-cam hires -t shows nothing because the server exits.

      Checked services

      voxl-inspect-services shows voxl-camera-server Enabled, Not Running while IMU/MAVLink etc. run.

      Pulled logs (journal excerpt shows 3 cams configured when using a tracking + hires preset):

      ERROR:   Found zero cameras connected, need at least one.
      ...
      cam #1
          name:                hires
          sensor type:         imx664-fpv
          isEnabled:           1
          camId:               1
          ...
      fsync_en:            1
      fsync_gpio:          109
      

      Then service aborts and systemd stops restarting it (“Start request repeated too quickly”).

      Self-identify (no config dependency)
      voxl-camera-server -s 
      

      and

      voxl-camera-server -d 0 -s
      

      Both print 0 cameras detected:

      DEBUG:   ----------- Number of cameras: 0
      ERROR:   Did not detect any cameras plugged in
      
      Minimal custom config (one camera only, fsync disabled) + camId sweep

      Created /data/modalai/custom_camera_config.txt with a single imx664-fpv block, fsync_en: 0, and then looped camId: 0,1,2,3, restarting the server each time.

      Same result: still 0 cameras.

      Physical reseats & swaps

      • Power off between changes.
      • Reseated interposer on J6 and J7; ensured correct orientation (not reversible).
      • Reseated micro-coax, verified latch. Used the hires/HR_COAX jack on M0194.
      • Swapped in a second M0194 board and a second IMX664 camera module.
      • Tested on a second VOXL 2 Mini unit.
        • Same self-identify result on all combinations: 0 cameras.

      Upgrades / reconfig

      Confirmed voxl-suite 1.4.5 on Unit A; tried 1.5.0 on Unit B previously.

      Ran voxl-configure-mpa after flash; re-ran voxl-configure-cameras and selected 50.

      Still 0 cameras in -s.

      Side note: at one point Wi-Fi didn’t appear in ip a, which I took as a sign something might be partially unseated. After reseating and power cycling, Wi-Fi is back and stable (Unit A IP: wlan0: 192.168.1.242). Camera detection remains 0.

      Representative outputs

      voxl-camera-server -d 0 -s
      DEBUG:   Attempting to open the hal module
      DEBUG:   SUCCESS: Camera module opened on attempt 0
      DEBUG:   ----------- Number of cameras: 0
      VERBOSE: cci-direct: using voxl_platform_mod config 0 layout
      ERROR:   Did not detect any cameras plugged in
      journalctl -u voxl-camera-server -n 150 --no-pager
      ERROR:   Found zero cameras connected, need at least one.
      ...
      voxl-camera-server.service: Main process exited, code=exited, status=255/n/a
      voxl-camera-server.service: Start request repeated too quickly.
      Failed to start voxl-camera-server.
      

      What I’m looking for help with

      1. Interposer variant sanity:

      Can you confirm the exact marking for the Mini-compatible interposer (M0194-2, 1.5 mm stack)? If a 1.0 mm variant is used, could it “seem” seated yet always read as 0 cameras? (If so, I’ll re-verify the silkscreen on both boards.)

      1. J6/J7 lane mapping and camId:

      For M0104 + M0194-2, what is the definitive camId mapping for J6 lower/upper and J7 lower/upper? (I probed 0..3, but would like to confirm expectations.)

      1. Regulator / enable sequence:

      Does voxl-camera-server -s depend on any GPIO or regulator enables on the M0194 for the IMX664 to enumerate? (I tried fsync_en: 0 to avoid GPIO 109 dependencies.)

      1. Are there any required mezzanine straps or jumpers on M0194 for the IMX664 path?

      2. Any known detection issues for IMX664 on VOXL 2 Mini with system-image 1.8.02-M0104-14.1a-perf and voxl-suite 1.4.5 / 1.5.0?

      Low-level validation tips:

      Beyond -s/-l, are there recommended dmesg/sysfs prints to confirm CSIPHY/CSID/CCI bring-up? e.g.:

      dmesg | grep -Ei 'imx664|imx|cci|csiphy|csid|cam'

      Any module names or nodes I should expect to see if the link is alive?

      Micro-coax families / pinouts:

      Can you confirm the HR_COAX port we should be using for MSU-M0186 on M0194-2 and whether any other coax port would be valid/invalid for this sensor?

      What I can add if helpful

      • Top-down photos of M0194 seated on J6 and J7 (showing orientation and which coax jack is used).
      • Silkscreen close-ups to confirm M0194-2 vs older variants.
      • Fresh dmesg tails after a boot + -s attempt.

      Thanks in advance—happy to run any additional diagnostics you recommend. My goal is to get a single IMX664 up first; once detected via -s, I’ll lock in the correct camId in voxl-camera-server.conf and move on to streaming (voxl-inspect-cam/voxl-streamer).

      A 1 Reply Last reply Reply Quote 0
      • A
        aheyne @aheyne
        last edited by

        We got an LED on the interposer board to light on boot but then it dies and we can't seem to get it to come back. Sometimes while moving the cable we can get it to flicker but then goes out. Are there any known issues with the connectors or them not seating right?

        VinnyV 1 Reply Last reply Reply Quote 0
        • VinnyV
          Vinny ModalAI Team @aheyne
          last edited by Vinny

          Hi @aheyne
          From a hardware perspective, I just wanted to clarify this comment in your post:

          "(DF40 is not reversible)"

          The DF40 is absolutely reversible and an incorrect insertion can be done. So please be sure to align the Pin 1's on M0104/M0204 to M0194.

          • EDIT: I think after reading your post again you are confirming that is not reversible by design, meaning you understand it must be inserted in only one direction. In that case, thanks for noticing that.

          If you think the junction between DF40's is not stable, please use a spacer to secure the boards together, especially for a real drone or flight test, some type of mechanical restraint system is required for all B2B (board to board) connectors.

          Hope this helps.
          Thanks!

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

            @aheyne , can you please run voxl-version and check the following output:

            ...
            hw platform:  M0104
            mach.var:     2.0.2
            ...
            

            I suspect that your variant will show up as 2.0.0 . In order to use M0194 (or M0181) with ModalAI hires cameras with coax connections (M0161, M0186), you need to use kernel varian 2.0.2 for Voxl2 Mini and 1.0.1 if using VOXL2.

            I know this is definitely not obvious that you have to use the proper kernel variant and it looks like we don't have that documented. We will fix that.

            In order to switch your kernel from 2.0.0, you should re-install your SDK and when it asks you which kernel to install, you should select the config 2:

            PLEASE SELECT WHICH KERNEL TO FLASH
            1. M0104-1 -> QRB5165M, VOXL 2 Mini
            2. M0104-1 -> QRB5165M w/ M0188 Camera Breakout Board, Stinger, MVX-T0001
            

            Other answers:

            • the hires camera can ONLY be connected to the HR / J2U port (not 5L / J1L). If the connection of Hires camera is made to J1L of M0194, there will be a short of VOXL2's 5V to GND (inside the camera), not exactly sure what would happen as a result.
            • both J6 and J7 should work. All you need to do is to copy the camera drivers (sensormodule files) from /usr/share/modalai/chi-cdk/imx664/ to /usr/lib/camera and pick the correct slot id (which is a number at the end of the file). For J6, you would be using slot 1, and J7 slot 3 (com.qti.sensormodule.imx664_1.bin or com.qti.sensormodule.imx664_3.bin). When you configure camera setup via a script, this is done automatically.
            • SDK 1.4.5 or 1.5.0 should work, maybe better to use the latest one
            • all this also applies to M0204, which is a slightly updated version of M0104 VOXL Mini

            Here is a summary:

            • Install VOXL2 Mini SDK 1.5.x with kernel option 2, confirm mach. var. 2.0.2 after reboot
            • power off, plug in M0186 into M0194 J2U / HR via coax, connect the M0194 into M0104 J6
            • power on, copy com.qti.sensormodule.imx664_1.bin from /usr/share/modalai/chi-cdk/imx664/ to /usr/lib/camera/
            • run voxl-camera-server -l in foreground and it should show
            voxl2-mini:/$ voxl-camera-server -l
            DEBUG:   Attempting to open the hal module
            DEBUG:   SUCCESS: Camera module opened on attempt 0
            DEBUG:   ----------- Number of cameras: 1
            
            DEBUG:   Cam idx: 0, Cam slot: 1, Slave Address: 0x006C, Sensor Id: 0x0600
            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: 1
            
            
            ====================================
            Stats for camera: 0
            
            ANDROID_SCALER_AVAILABLE_RAW_SIZES:
            These are likely supported by the sensor
            2704 x 1540
            ...
            
            • from there, you can run the voxl-configure-cameras script so that you also get a voxl-camera-server.conf for the IMX664 camera placed into /etc/modalai/ . But then double check the correct index of the sernsormodule after running the setup script and check the camera server config to make sure there is only one camera there (remove extras) and camera id should be 0.

            Please try 🙂

            And we have some documentation updates to do..

            Edit: regarding the green LED on M0194 board, it should stay on after boot. You said that it comes on, but turns off - at which point does it come off? also does the LED behave the same if you plug M0194 into M0104 without any cameras plugged into M0194?

            Alex

            A 1 Reply Last reply Reply Quote 0
            • A
              aheyne @Alex Kushleyev
              last edited by

              @Alex-Kushleyev

              I copied /usr/share/modalai/chi-cdk/imx664/com.qti.sensormodule.imx664_1.bin to /usr/lib/camera

              here is what was there when I started:

              voxl2-mini-test-fixture (TF-M0104):/$ ls /usr/lib/camera/ | grep imx66
              com.qti.sensor.imx664.so
              com.qti.sensormodule.imx664_3.bin
              

              I noticed that the imx664_3.bin was there and thought that was odd but ended up being a tell to one of the problems I was having as you'll see later in this post. I then copied in the imx664_1.bin and then the voxl-camera-server -l worked

              Then I tried to do the camera setup via voxl-configure-cameras

              voxl2-mini-test-fixture (TF-M0104):/$ voxl-configure-cameras
                                                                 
              Available camera config IDs are as follows:
              
              22 - M0188 Stinger Dual AR0144
              33 - M0188 Stinger IMX664 + dual AR0144
              34 - M0195 Stinger IMX664 + dual AR0144 + boson
              35 - RESERVED for Future Stinger Config
              38 - M0188 Sparrow IMX664 + Triple AR0144
              50 - MVX-T0001 voxl2 mini hires imx664
              51 - MVX-T0001 voxl2 mini hires imx664 + boson
              52 - MVX-T0001 voxl2 mini dual hires imx664 + boson
               C - use user-defined custom camera config in
                   (/data/modalai/custom_camera_config.txt)
               q - Quit The Wizard        
              
              selection: 50            
              Selected numerical camera config
              Camera Configuration: 50    
                                                                 
              camera server config helper list:
              hires:imx664-fpv:0:              
              
              driver binary list:            
              /usr/share/modalai/chi-cdk/imx664/com.qti.sensormodule.imx664_3.bin
                                                                 
              calling camera-server-config-helper hires:imx664-fpv:0:
              MISP awb str: auto            
              Setting MISP AWB to Auto  
              MISP channels enabled in defaults : 3
              ERROR: object missing misp_channels
              misp channel 0: en=1, w=1280, h=720, fps=30.0, bitrate=2.00, npframes=2, venc_mode=h265, osd=0
              misp channel 1: en=1, w=960, h=540, fps=30.0, bitrate=0.80, npframes=1, venc_mode=h265, osd=0
              misp channel 2: en=1, w=960, h=540, fps=60.0, bitrate=1.50, npframes=29, venc_mode=h265, osd=0
              WARNING: Limiting maximum exposure to 16466us due to desired FPS (60)
              successfully wrote this camera config to disk:
              =================================================================
              configuration for 1 cameras:
                                                                 
              cam #0                                                                                                
                  name:                hires
                  sensor type:         imx664-fpv
                  isEnabled:           1                                                                            
                  camId:               0
                  camId2:              -1                
                  fps:                 60            
                  en_rotate:           0                                                                            
                  en_rotate2:          0            
                                                                 
                  en_preview:          1                    
                  pre_width:           2704                                                                        
                  pre_height:          1540                      
                  en_raw_preview:      1                
              
                  en_small_video:      0    
                  small_video_width:   1024          
                  small_video_height:  768                  
                                                                 
                  en_large_video:      0              
                  large_video_width:   2704        
                  large_video_height:  1540                
                                                                                                                   
                  en_misp:             1                  
                  misp_width:          1280                
                  misp_height:         720
              
                  en_snapshot:         0
                  snap_width:          2704  
                  snap_height:         1540
                  exif_focal_length:   3.100000                  
                  exif_focal_len_35mm_format:17
                  exif_fnumber:        1.240000
              
                  ae_mode:             lme_msv
                  msv_exposure_min_us: 25                                                                          
                  msv_exposure_max_us: 16466                    
                  gain_min           : 54                                                                          
                  gain_max           : 30000
                  standby_enabled:     0
                  decimator:           1          
                  independent_exposure:0        
                                                                                                                   
              fsync_en:            0                                                                                
              fsync_gpio:          109                                                                              
              =================================================================    
              camera_server_config_helper is done          
              camera-server-config-helper succeeded on attempt 1                                                    
              leaving fsync pin off      
              copying required camera drivers in place          
              /usr/share/modalai/chi-cdk/imx664/com.qti.sensormodule.imx664_3.bin                                  
              enabling voxl-camera-server  
                                                                 
              ------------------------------------------------------------------                                    
              Done Configuring Cameras  
              Please power cycle VOXL to load new drivers
              camera server will start on next reboot
              ------------------------------------------------------------------        
              

              I noticed from the output above:

              driver binary list:            
              /usr/share/modalai/chi-cdk/imx664/com.qti.sensormodule.imx664_3.bin
              

              Despite the default configuration setting camId: 0 which implies it should be using imx664_1.bin

              and then suddenly voxl-camera-server -l shows no cameras attached

              voxl2-mini-test-fixture (TF-M0104):/$ 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: 0
              
              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: 0
              

              it appears to wipe the imx664_1.bin out of the /usr/lib/cameras directory

              voxl2-mini-test-fixture (TF-M0104):/$ ls /usr/lib/camera/ | grep imx66
              com.qti.sensor.imx664.so
              com.qti.sensormodule.imx664_3.bin
              

              So the key to making it all work is when I
              cp /usr/share/modalai/chi-cdk/imx664/com.qti.sensormodule.imx664_3.bin /usr/lib/camera/

              Then manually started the server again with:

              voxl-camera-server now with success in detecting the camera.

              It didn't appear to mind that the imx664_3.bin was there at the same time and then I was able to see video feed in the portal by

              adb forward tcp:8080 tcp:80
              then visit:
              http://localhost:8080

              Success! Saw video going to "Cameras -> Multiview (or any of the views really worked)"

              Side note: when you plug camera into J1L and create that short, 1) the camera gets really hot (no surprise there) 2) the wifi kit doesn't work 🙂 (presumably power drain from pulling a rail directly to ground)

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

                @aheyne ,

                Thank you for the update.

                Please note that our standard configuration 50 has the IMX664 camera in slot 3, as shown in the link below ( J7 upper = slot ID 3). Since it is the only camera connected in this config, it would still show up as ID 0 in the voxl-camera-server.conf file.

                https://gitlab.com/voxl-public/voxl-sdk/services/voxl-camera-server/-/blob/master/misc_files/usr/share/modalai/voxl-camera-server/standard_configs/platform_config_2/50 - MVX-T0001 voxl2 mini hires imx664

                Also, i think you meant that you copied the com.qti.sensormodule.imx664_1.bin file, not 3 after running voxl-configure-cameras.

                The extra sensormodule file for slot number 3 in this case does not do anything because there is no camera actually connected in slot 3, so the camera pipeline will just try to probe the camera in this slot and will fail and move on. In general. I would recommend having only the sensormodule files that you are actually using in /usr/lib/camera in order to avoid any confusion in the future.

                Also, thank you for letting me know what happened when you connected the camera to the wrong ucoax port (J1L, which is designed for a Boson camera, which needs 5V). Yes, the camera shorted the 5V rail to ground inside the camera, but it seems it has survived? Don't try it again 🙂

                By the way, did you have to update the kernel?

                Is there anything else I can help you with, so you can get the most use of the IMX664 camera?

                Alex

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