eloi3
May 20, 2024, 11:08am
1
I have a IMX219-120 that works correctly with my Jetson TX2 NX. However when I connect a IMX219-83 stereo, it doesn’t show in /dev/videoX
If i run dmesg
I2c is working correctly as I am able to read accelerometer
I have seen many posts regarding similar errors but no solution is working for me.
hello eloi3,
please confirm IMX219-83 stereo using same I2C slave address.
or… you may updating the device tree.
eloi3
May 21, 2024, 7:48am
4
Hi Jerry,
Slave address is fixed at 0x10 as per datasheet.
This is the DTBO i am using:
/dts-v1/;
/ {
overlay-name = "Camera IMX219 Dual";
jetson-header-name = "Jetson Nano CSI Connector";
compatible = "nvidia,tegra186", "nvidia,p3449-0000+p3668-0000", "nvidia,p3449-0000+p3668-0001", "nvidia,p3509-0000+p3668-0000", "nvidia,p3509-0000+p3668-0001", "nvidia,p3509-0000+p3636-0001", "nvidia,p2597-0000+p3310-1000";
fragment@0 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
};
};
fragment@1 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
badge = "jakku_front_RBP194";
position = "front";
orientation = [31 00];
};
};
fragment@2 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "imx219 9-0010";
proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@0/rbpcv2_imx219_a@10";
};
};
fragment@3 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
};
};
fragment@4 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
badge = "jakku_rear_RBP194";
position = "rear";
orientation = [31 00];
};
};
fragment@5 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "imx219 10-0010";
proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@1/rbpcv2_imx219_c@10";
};
};
fragment@6 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
port-index = <0x0>;
bus-width = <0x2>;
remote-endpoint = <0xffffffff>;
};
};
fragment@7 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
port-index = <0x2>;
bus-width = <0x2>;
remote-endpoint = <0xffffffff>;
};
};
fragment@8 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
port-index = <0x0>;
bus-width = <0x2>;
remote-endpoint = <0xffffffff>;
};
};
fragment@9 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
};
};
fragment@10 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
port-index = <0x2>;
bus-width = <0x2>;
remote-endpoint = <0xffffffff>;
};
};
fragment@12 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
};
};
__fixups__ {
imx219_cam0 = "/fragment@0:target:0";
cam_module0 = "/fragment@1:target:0";
cam_module0_drivernode0 = "/fragment@2:target:0";
imx219_cam1 = "/fragment@3:target:0";
cam_module1 = "/fragment@4:target:0";
cam_module1_drivernode0 = "/fragment@5:target:0";
rbpcv2_imx219_vi_in0 = "/fragment@6:target:0";
rbpcv2_imx219_csi_out0 = "/fragment@6/__overlay__:remote-endpoint:0", "/fragment@9:target:0";
rbpcv2_imx219_vi_in1 = "/fragment@7:target:0";
rbpcv2_imx219_csi_out1 = "/fragment@7/__overlay__:remote-endpoint:0", "/fragment@12:target:0";
rbpcv2_imx219_csi_in0 = "/fragment@8:target:0";
rbpcv2_imx219_out0 = "/fragment@8/__overlay__:remote-endpoint:0";
rbpcv2_imx219_csi_in1 = "/fragment@10:target:0";
rbpcv2_imx219_out1 = "/fragment@10/__overlay__:remote-endpoint:0";
};
};
This is the resulting fragment of the device tree
i2c@1 {
reg = <0x1>;
#address-cells = <0x1>;
#size-cells = <0x0>;
linux,phandle = <0x163>;
phandle = <0x163>;
rbpcv2_imx219_c@10 {
status = "okay";
compatible = "nvidia,imx219";
reg = <0x10>;
devnode = "video1";
physical_w = "3.680";
physical_h = "2.760";
sensor_model = "imx219";
use_sensor_mode_id = "true";
reset-gpios = <0x21 0x6b 0x0>;
linux,phandle = <0x164>;
phandle = <0x164>;
mode0 {
mclk_khz = "24000";
num_lanes = [32 00];
tegra_sinterface = "serial_c";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "3264";
active_h = "2464";
pixel_t = "bayer_rggb";
readout_orientation = "90";
line_length = "3448";
inherent_gain = [31 00];
mclk_multiplier = "9.33";
pix_clk_hz = "182400000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = "16";
max_gain_val = "170";
--
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
mode4 {
mclk_khz = "24000";
num_lanes = [32 00];
tegra_sinterface = "serial_c";
phy_mode = "DPHY";
discontinuous_clk = "yes";
dpcm_enable = "false";
cil_settletime = [30 00];
active_w = "1280";
active_h = "720";
pixel_t = "bayer_rggb";
readout_orientation = "90";
line_length = "3448";
inherent_gain = [31 00];
mclk_multiplier = "9.33";
pix_clk_hz = "182400000";
gain_factor = "16";
framerate_factor = "1000000";
exposure_factor = "1000000";
min_gain_val = "16";
max_gain_val = "170";
step_gain_val = [31 00];
default_gain = "16";
min_hdr_ratio = [31 00];
max_hdr_ratio = [31 00];
min_framerate = "2000000";
max_framerate = "60000000";
step_framerate = [31 00];
default_framerate = "60000000";
min_exp_time = "13";
max_exp_time = "683709";
step_exp_time = [31 00];
default_exp_time = "2495";
embedded_metadata_height = [32 00];
};
ports {
#address-cells = <0x1>;
#size-cells = <0x0>;
port@0 {
reg = <0x0>;
endpoint {
status = "okay";
port-index = <0x2>;
bus-width = <0x2>;
remote-endpoint = <0xd4>;
linux,phandle = <0x4f>;
phandle = <0x4f>;
};
};
};
};
};
hello eloi3,
I’m not sure the difference between IMX219-120 and IMX219-83.
are they using the same sensor kernel driver?
eloi3
May 21, 2024, 8:40am
6
The only difference to me is that IMX219-120 is monocular and 83 is stereo (uses 2 csi connectors). I do not understand neither why 120 is working and 83 is not. For 83 I get
[ 4.389606] tegra-i2c 3180000.i2c: no acknowledge from address 0x10
[ 4.389653] imx219 9-0010: imx219_board_setup: error during i2c read probe (-121)
[ 4.389716] imx219 9-0010: board setup failed
[ 4.389758] imx219: probe of 9-0010 failed with error -121
[ 4.390037] imx219 10-0010: tegracam sensor driver:imx219_v2.0.6
[ 4.414910] tegra-i2c 3180000.i2c: no acknowledge from address 0x10
[ 4.414951] imx219 10-0010: imx219_board_setup: error during i2c read probe (-121)
[ 4.415000] imx219 10-0010: board setup failed
[ 4.415034] imx219: probe of 10-0010 failed with error -121
hello eloi3,
it usually due to regulator settings that your board did not power-up correctly, that’s why i2c communication has failed.
are they using the same sensor kernel driver? you may try adding some debug prints for confirmation.
eloi3
May 21, 2024, 12:39pm
8
Hello Jerry,
I have attached the camera that is working, IMX219-120, and it shows the same message
However, it shows up in /dev/video0 and is working correctly, so I think the I2C message always appears, doesn’t matter if the cam is working or not.
So my question would be, why is the IMX219-120 appearing in /dev/video and the 83 is not?
as my request from you… are they using the same sensor kernel driver?
eloi3
May 22, 2024, 7:21am
10
I guess so yes. I am just disconnecting one and connecting the other without changing anything.
hello eloi3,
again, this is failure on device registration.
you may digging into driver init process to understand why i2c communication has failed.
system
Closed
June 19, 2024, 4:03am
13
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.