Black Screen Issue on Sensor-ID 3 with Bayer Format Camera (AR0233)

Hi Jerry,

I swapped the badge values between module3 and module0, and observed that the black screen issue shifted to video0.

To investigate further, I tried assigning all eight cameras with different “unique” badge names, but this resulted in multiple “No cameras available” errors.

Eventually, I found the following configuration that allows all eight cameras to preview correctly without triggering the black screen issue:

//module0
  badge = "gmsl2_rear";
  position = "rear";

//module1 
  badge = "gmsl2_front";
  position = "front";

//module2 
  badge = "gmsl2_topright";
  position = "topright";

//module3 
  badge = "gmsl2_bottomright";
  position = "bottomright";

//module4
  badge = "gmsl2_topleft";
  position = "topleft";

//module5
  badge = "gmsl2_centerright";
  position = "centerright";

//module6
  badge = "gmsl2_centerleft";
  position = "centerleft";

//module7 
  badge = "gmsl2_bottomleft";
  position = "bottomleft";

I’m curious why the badge value seems to affect gstnvarguscamerasrc behavior so significantly.

By the way, I also noticed that the convergenceStatus value changes to 2 after a few image frames.

hello ting.chang

it’s glad to know the issue has resolved.
may I know what’s the badge property value of your module3? I assume such string has duplicated with others to cause such failure.

Hi Jerry,

My original badge properties in the DTS do not contain any duplicated values, so it’s puzzling why the black screen issue consistently occurs with the "gmsl2_sensor_3" badge.

          modules {
            camera_module0: module0 {
              status = "okay";
              badge = "gmsl2_sensor_0";
              position = "rear";
              orientation = "1";
              drivernode0 {
                status = "okay";
                pcl_id = "v4l2_sensor";
                sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/tca9546@70/i2c@0/sensing_sensors_0";
              };
            };

            camera_module1: module1 {
              status = "okay";
              badge = "gmsl2_sensor_1";
              position = "front";
              orientation = "1";
              drivernode0 {
                status = "okay";
                pcl_id = "v4l2_sensor";
                sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/tca9546@70/i2c@0/sensing_sensors_1";
              };
            };

            camera_module2: module2 {
              status = "okay";
              badge = "gmsl2_sensor_2";
              position = "topright";
              orientation = "1";
              drivernode0 {
                status = "okay";
                pcl_id = "v4l2_sensor";
                sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/tca9546@70/i2c@0/sensing_sensors_2";
              };
            };

            camera_module3: module3 {
              status = "okay";
              badge = "gmsl2_sensor_3";
              position = "bottomright";
              orientation = "1";
              drivernode0 {
                status = "okay";
                pcl_id = "v4l2_sensor";
                sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/tca9546@70/i2c@0/sensing_sensors_3";
              };
            };

            camera_module4: module4 {
              status = "okay";
              badge = "gmsl2_sensor_4";
              position = "topleft";
              orientation = "1";
              drivernode0 {
                status = "okay";
                pcl_id = "v4l2_sensor";
                sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/tca9546@70/i2c@1/sensing_sensors_4";
              };
            };

            camera_module5: module5 {
              status = "okay";
              badge = "gmsl2_sensor_5";
              position = "centerright";
              orientation = "1";
              drivernode0 {
                status = "okay";
                pcl_id = "v4l2_sensor";
                sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/tca9546@70/i2c@1/sensing_sensors_5";
              };
            };

            camera_module6: module6 {
              status = "okay";
              badge = "gmsl2_sensor_6";
              position = "centerleft";
              orientation = "1";
              drivernode0 {
                status = "okay";
                pcl_id = "v4l2_sensor";
                sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/tca9546@70/i2c@1/sensing_sensors_6";
              };
            };

            camera_module7: module7 {
              status = "okay";
              badge = "gmsl2_sensor_7";
              position = "bottomleft";
              orientation = "1";
              drivernode0 {
                status = "okay";
                pcl_id = "v4l2_sensor";
                sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3160000/tca9546@70/i2c@1/sensing_sensors_7";
              };
            };
          }; // end modules

hello ting.chang,

it’s a bad practice.
it’s suggest to have an unique string in the last column.

let me give you some examples for reference,
$public_sources/kernel_src/hardware/nvidia/t23x/nv-public/overlay/tegra234-camera-imx185-a00.dtsi
badge = "imx185_bottom_liimx185";
it’s the last string, liimx185 used by camera software stack to distinguish the configuration file.

if you’re having multi-camera, you may still using the same unique string in last column for sharing the single tuning file.
$public_sources/kernel_src/hardware/nvidia/t23x/nv-public/overlay/tegra234-camera-imx274-dual.dtsi
badge = "imx274_bottom_A6V26";
badge = "imx274_top_A6V26";

BTW,
you may see-also Camera Architecture Stack, v4l2-ctl that uses direct kernel IOCTL calls to access V4L2 functionality. that’s why you don’t see black screen issue in post #16.

I’m aware that there are documents explaining the expected values for the badge property, such as the one below:

However, it remains unclear what specifically qualifies as a “unique” value within the camera software stack.
Could you kindly clarify the logic used by the stack to identify and distinguish between camera modules?
Specifically, I’m curious why distinct strings with different indices or IDs—such as those used in my original configuration—are not sufficient for proper module recognition.

hello ting.chang,

as you can see, we usually used sensor names + position + part number to compose the badge property.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.