Skip to main content
IQ-9075-EVKIQ-8275-EVK

4

Sensors per CSI

VC/DT

Multiplexing

RDI

Independent Ports

GMSL

Interface
Platform Scope:
This section is applicable for IQ-9075-EVK and IQ-8275-EVK.

01 · What Is It?

Per Port Grouping enables the connection of up to 4 GMSL sensors through a single deserializer to a shared CSI interface and IFE-Lite instance. Each sensor utilizes a unique Virtual Channel (VC) to transmit image streams. The hardware then routes these streams to individual RDI ports (4 available in IFE-Lite) via VC/DT mapping.
Sensor [0..3] → Deserializer → Shared CSI → IFE-Lite [RDI 0..3] → Virtual RDI → User Space

02 · How Does It Work?

As part of boot up, the camera software sends camera group information to the application through a vendor tag (org.codeaurora.qcamera3.AvailableISPGroupsInfoTag). The application then sends additional information for all the cameras it’s going to open in that use case via EnabledISPGroupsConfigTag.

Implementation Logic

  • Kernel Management: The kernel space manages different sensors connected to same CSI by mapping the virtual RDI with hardware ports of the same IFE-Lite using port sharing information.
  • Configuration: All RDI ports need to be configured before enabling streaming on any port.
  • Concurrency: As long as the group configuration isn’t changed, the application can start any camera mentioned in that group at any time and stop at any time.

03 · Hardware Topology

In both IQ-9075-EVK and IQ-8275-EVK architectures, each GMSL deserializer port supports multiplexing up to four cameras into a single CSI group.
InstanceIQ-9075-EVK ConfigurationIQ-8275-EVK Configuration
Deserializer-04x 3F10 Bayer (Group-0)4x 3F10 Bayer (Group-0)
Deserializer-1❌ Disabled (Hardware Issue)❌ Disabled (Hardware Issue)
Deserializer-24x 3F10 YUV (Group-1)4x 3F10 YUV (Group-1)
Deserializer-34x 3F10 YUV (Group-2)

04 · Validation

Currently on IQ-9075-EVK, the following GMSL concurrency is supported using the gst-camera-per-port-example application, which runs cameras with the per port group feature.
GMSL camera concurrencySupported resolution and FPSConnection
Four 3F10 YUV GMSL cameras1920x1536, 30 FPSConnect 4 3F10 YUV GMSLs to Port-2
Four 3F10 YUV GMSL cameras1920x1536, 30 FPSConnect 4 3F10 YUV GMSLs to Port-3
Eight 3F10 YUV GMSL cameras1920x1536, 30 FPSConnect 4 3F10 YUV GMSLs to Port-2 Connect 4 3F10 YUV GMSLs to Port-3
The four YUV GMSL concurrency use case is supported on GMSL Port 2 and Port 3. Four bayer GMSL and eight YUV GMSL camera concurrency is not supported in this release.
To run an eight 3F10 YUV GMSL camera concurrency use case using the gst-camera-per-port-example:
1

Connect hardware

Connect four 3F10 YUV GMSLs to Port-2 and four 3F10 YUV GMSLs to Port-3.
2

Run application

Run the gst-camera-per-port-example application.
Application Launch
# gst-camera-per-port-example --custom
3

Enter camera IDs

Enter the camera ID’s you want to open (space separated): 0 1 2 3 4 5 6 7
4

Configure stream details

Enter the following details for all eight cameras:
  • Number of streams for camera 0: 1
  • Width for stream 1 of camera 0: 1920
  • Height for stream 1 of camera 0: 1536
  • Framerate for stream 1 of camera 0: 30
  • Number of streams for camera 1: 1
  • Width for stream 1 of camera 1: 1920
  • Height for stream 1 of camera 1: 1536
  • Framerate for stream 1 of camera 1: 30
5

Execute GST pipelines

Enter the GST camera pipeline command for all 8 cameras. Use different file names when saving the encoded file of each camera.
The GST command needs to be in a single line without any new line or ‘\’ characters.
Camera 0:
GStreamer Pipeline
qtiqmmfsrc name=camsrc0 camera=0 video_0::type=video ! video/x-raw,format=NV12,width=1920,height=1536,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! queue ! filesink location=/opt/cam0_IOT_1536p_NV12.mp4
Camera 1:
GStreamer Pipeline
qtiqmmfsrc name=camsrc1 camera=1 video_0::type=video ! video/x-raw,format=NV12,width=1920,height=1536,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! h264parse ! mp4mux ! queue ! filesink location=/opt/cam1_IOT_1536p_NV12.mp4
6

Verify log output

Confirm pipelines are started successfully:
Terminal Output
Setting pipeline gst-camera-pipeline for camera 0 to PLAYING
Pipeline is PREROLLING ...
Setting pipeline gst-camera-pipeline for camera 1 to PLAYING
Pipeline is PREROLLING ...
Pipelines are started
To stop camera streaming, select (q). The following logs are shown while exiting the application:
Exit Logs
Quit pressed!!

gst-camera-pipeline for camera 0 Received End-of-Stream...
Setting pipeline to NULL
Pipeline state change was successful

gst-camera-pipeline for camera 1 Received End-of-Stream...
Setting pipeline to NULL
Pipeline state change was successful
g_main_loop_run ends

🛠️ Troubleshooting / Known Issues

Issue / ObservationAffected PlatformDetails / Notes
Deserializer-1 DisabledIQ-9075-EVK & IQ-8275-EVKDeserializer-1 is disabled on both platforms due to a hardware issue
Four Bayer GMSL concurrency not supportedIQ-9075-EVK4x Bayer GMSL concurrent streaming is not supported in the current release
Eight YUV GMSL concurrency not supportedIQ-9075-EVK8x YUV GMSL camera concurrency is not supported in the current release
Deserializer-3 not availableIQ-8275-EVKDeserializer-3 (Group-2, 4x 3F10 YUV) exists on IQ-9075-EVK but is absent on IQ-8275-EVK