@Matthew-Wellner , sorry for the delay.
First off, please update your libmodal-journal
package. You are using a version that has a bug and prevents most of the output messages from being printed from voxl-camera-server
. You can just use apt to update it or download it directly from : http://voxl-packages.modalai.com/dists/qrb5165/dev/binary-arm64//
Now, as I understand, you are only able to detect Boson in slot ID5, which is not where it's actually connected.
Let me explain why Boson is successfully detected in slot 5 (but won't stream) and how this can be used to diagnose the issue.
- Inside the Hadron camera, the two cameras (IR and EO) have a single I2C (CCI) bus that they use to communicate - both cameras are connected to the same bus
- Each VOXL2 camera slot has a I2C (CCI) port assigned to it in hardware
- VOXL2 only has 4 independent CCI controllers, but 6 physical camera slots (in the 3 camera connectors, 2 per connector)
- the CCI ports are shared in several camera slots, as follows (mapping of camera slot to CCI #:
0 : 0
1 : 1
2 : 2
3 : 3
4 : 1
5 : 3
This can also be seen from the voxl2 connector pinouts for J6, J7, J8 (look for CAMx_CCIy.. pins on each connector) : https://docs.modalai.com/voxl2-connectors/#j6-pin-out
This means that CCI1 is shared between slots 1 and 4, CCI3 is shared between slots 3 and 5
Now.. on M0159 adapter, the single CCI connection coming from Hadron is split into two, and the command (from instructions) to enable the mux that connects the two CCI busses on M0159 (from the two camera slots) together is the following : voxl-gpio -m 6 out && voxl-gpio -w 6 1
. Then from M0159, you have two sets of cables that connect to VOXL2 via M0181.
If Hadron is connected to J7, then the single CCI connection will be bridged into slot 2's and slot 3's CCI ports (which are 2 and 3). However, since they are bridged, then both cameras can be detected on either CCI 2 or CCI 3.
Also, one important detail is that both IR and EO cameras in Hadron are always on, as opposed to typical cameras we use, which have a reset signal, which is off when the camera is off. When the camera is probed / used, the camera pipeline first turns on the camera and then uses it. Normally, in order to probe a camera in slot 5, it would first need to be turned on via its reset pin, but since Boson is actually connected to slot 2, that reset pin would have been incorrect.. but sin Boson is always ON, the lack of reset and shared CCI bus allows you to probe it in the wrong slot.
The fact that you were able to detect Boson in slot 5 (CCI3) but not able to detect it in slot 2 (CCI2) means that the CCI2 hardware path is broken (connector or wire issue). Also, if you remove the ov64b sensormodule, you should also be able to probe the Boson in slot 3 :).
Incorrectly detecting the camera in the wrong slot will not allow you to get any images, since the MIPI data connection is going to slot 2, not 5, even though the CCI busses are shared / bridged.
You should do a quick test and plug in your M0181 adapter in J6 and see if Boson is detected in slot 0. If yes, then the issue may be in the Voxl's J7 connector. If not, then the issue is upstream (between M0181 and Hadron). Please note that EO will not work in slot 1 (J6U) because with default kernel, J6U is set up to be used for a second camera in a stereo pair. A hires camera in J6U will be detected (probed successfully) but will not stream.
Please inspect the wiring and try to probe Boson in J6L (slot 0) and let me know what that results in.
Alex