Voxl 2 Mini with Starvis 2 not detected
-
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 availableSoftware / 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-C6Unit 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-camSymptom
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-ranvoxl-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
- 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.)
- 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.)
- 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.)-
Are there any required mezzanine straps or jumpers on M0194 for the IMX664 path?
-
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). -
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?
-
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! -
@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 varian2.0.2
for Voxl2 Mini and1.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
orcom.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 avoxl-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
-
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
workedThen 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 attachedvoxl2-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:8080Success! 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)
-
@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.Also, i think you meant that you copied the
com.qti.sensormodule.imx664_1.bin
file, not3
after runningvoxl-configure-cameras
.The extra
sensormodule
file for slot number3
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 thesensormodule
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