# Most VOXL 2 hires-capable camera ports nonfunctional after SDK 1.0 flash

Source: https://forum.modalai.com/topic/2411/most-voxl-2-hires-capable-camera-ports-nonfunctional-after-sdk-1-0-flash
Category: VOXL 2 and VOXL 2 Mini (https://forum.modalai.com/category/26/voxl-2-and-voxl-2-mini)
Tags: voxl-2
Posted: 2023-07-13 18:52:49 UTC by brycek
Replies: 5 · Views: 1291

## brycek · 2023-07-13 18:52:49 UTC

Hello, I have a test setup with two IMX678 cameras that had been working well in SDK0.9.5 with a dev version of cam-server for hardware encoding. I had the cameras set up in a dual hires config like this: https://docs.modalai.com/images/voxl2/m0054-imx412-imx678.JPG  
![alt text](https://docs.modalai.com/images/voxl2/m0054-imx412-imx678.JPG )

Yesterday I upgraded to SDK1.0 and I haven't been able to get dual hire working since. after looking through debugging outputs, it can't detect both cameras. I've swapped camera modules around, used different cable and interposers, and in the end it seems that only camera slot 3 is functioning. I can move the same module around to all the different slot options listed [here](https://docs.modalai.com/voxl2-camera-configs/#155-supported-sensor-hardware-ids) with the dual cable and the interposer, and running `voxl-cam-server -l` will only find cameras in slot 3. I've also tested this with some M0024 cam modules, and have the same result.  

Any advice on further troubleshooting? Also, how hard is it to revert to 0.9.5?

## Reply by Tjark · 2023-07-14 08:00:10 UTC

@brycek We had the same issue but we managed to get it working. We have the following setup with 3 cameras:

Camera name: hires2
Camera type: imx412
Camera id: 0
Camera slot: 2

Camera name: hires
Camera type: imx214
Camera id: 1
Camera slot: 3

Camera name: tracking
Camera type: ov7251
Camera id: 2
Camera slot: 4

We added an extra option to `/usr/bin/qrb5165-configure-cameras`:
```
17) # Hires(imx214) + Hires2(imx412) + Tracking(ov7251)
		CAM_LIST+=("hires2:imx412:0")
		CAM_LIST+=("hires:imx214:1")
		CAM_LIST+=("tracking:ov7251:2")
		BIN_LIST+=("/usr/share/modalai/chi-cdk/ov7251/com.qti.sensormodule.ov7251_4.bin")
		BIN_LIST+=("/usr/share/modalai/chi-cdk/imx412/com.qti.sensormodule.imx412_2.bin")
		BIN_LIST+=("/usr/share/modalai/chi-cdk/imx214/com.qti.sensormodule.imx214_3.bin")
		;;
```
So the camera name, type and id are used in the `CAM_LIST+=` part and the camera type and the camera slot are used in the `BIN_LIST+=` part.

Then we can execute `voxl-configure-cameras 17` which places the camera drivers in the correct places and creates a default `voxl-camera-server.conf` file. Then when we do `voxl-camera-server --list`, all the cameras will appear. 

Also small note that you need to update the file `/usr/bin/qrb5165-print-camera-configs` if you want the option to be shown when executing `voxl-configure-cameras --help`

@ModalAI, is this the correct way to approach this or is this not recommended because problems are expected when using it this way?

@brycek I think you can adjust it to match your situation

## Reply by brycek · 2023-07-14 18:50:57 UTC (in reply to Tjark)

@Tjark 

Yes! Thank you for your helpful reply! I was trying to use config 8, or config 0 and writing my own file at `/etc/modalai/voxl-camera-config`, but option 8 only loads the binary driver for slot 3 (and 0 doesn't load any) I ended up making my own config like you, and just loading the IMX678 drivers for slots 2, 3, and 4, because I'm not sure which I'll use, but I'm only using the IMX678 modules.  
My addition to `/usr/bin/qrb5165-configure-cameras` looked like this:
```
17) # Dual Hires (IMX678)
                CAM_LIST+=("hires0:imx678:0")
                CAM_LIST+=("hires1:imx678:1")
                BIN_LIST+=("/usr/share/modalai/chi-cdk/imx678/com.qti.sensormodule.imx678_2.bin")
                BIN_LIST+=("/usr/share/modalai/chi-cdk/imx678/com.qti.sensormodule.imx678_3.bin")
                BIN_LIST+=("/usr/share/modalai/chi-cdk/imx678/com.qti.sensormodule.imx678_4.bin")
                ;;
```
This change made it s.t. after loading that config, (and killing the cam server) I could run `voxl-camera-server -l' and see the imx678 modules in any of those 3 slots! :)   
I also tried to actually run the camera server, and while it does run, I'm only getting data in the hires1 pipes, so I still have a bit of debug to do. :(  
Here's the config file it generated as well.
```
{
        "version":      0.1,
        "cameras":      [{
                        "type": "imx678",
                        "name": "hires0",
                        "enabled":      true,
                        "camera_id":    0,
                        "fps":  30,
                        "en_preview":   false,
                        "preview_width":        640,
                        "preview_height":       480,
                        "pre_format":   "nv21",
                        "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":    2048,
                        "large_video_height":   1536,
                        "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":    3840,
                        "en_snapshot_height":   2160,
                        "ae_mode":      "isp"
                }, {
                        "type": "imx678",
                        "name": "hires1",
                        "enabled":      true,
                        "camera_id":    1,
                        "fps":  30,
                        "en_preview":   false,
                        "preview_width":        640,
                        "preview_height":       480,
                        "pre_format":   "nv21",
                        "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":    2048,
                        "large_video_height":   1536,
                        "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":    3840,
                        "en_snapshot_height":   2160,
                        "ae_mode":      "isp"
                }]
}
```

## Reply by brycek · 2023-07-14 19:25:09 UTC (in reply to brycek)

@brycek said in [Most VOXL 2 hires\-capable camera ports nonfunctional after SDK 1\.0 flash](/post/11242):
> I also tried to actually run the camera server, and while it does run, I'm only getting data in the hires1 pipes, so I still have a bit of debug to do. :(

Okay, interestingly, it worked when I moved the camera in slot 3 to slot 2. So now I am using slots 2 and 4, and getting data from both cameras. Not sure why that is (maybe its my cable?), but I'm going to work with it for now. Thanks for the excellent tip, @Tjark. I might fork a version of the configuration script that adds all possible slot drivers for the requested types of cameras unless there's a reason not to load unused drivers.

## Reply by Tjark · 2023-07-19 06:40:06 UTC (in reply to brycek)

@brycek That's great!

@Modalai could you still answer the question if this is a good way of handling this?

## Reply by Chad Sweet (ModalAI staff) · 2023-08-16 00:11:22 UTC (in reply to Tjark)

For future reference, this is the doc to follow https://docs.modalai.com/voxl2-image-sensors/
