Connect camera sensors to your reference hardware platform and stream using GStreamer and V4L2 APIs — QCS6490, IQ-9075-EVK, IQ-8275-EVK, and IQ615.
QCS6490IQ-9075-EVKIQ-8275-EVKIQ615Stable
MIPI CSI
Multi-platform support
GMSL
Quad deserializer
GStreamer
Primary API
V4L2
Driver API
This page describes how to connect camera sensors to your reference hardware platform and provides information about available APIs.
Before using the camera APIs, verify that the target platform is running a supported QLI 2.0 image. Factory and pre-QLI 2.0 images may require different camera support and verification steps.
01 · Set up the camera
QCS6490
IQ-9075-EVK
IQ-8275-EVK
IQ615
IQx7181
QCS6490 Camera Topology
Default camera modules
OV9282
IMX577
RB3G2 Vision Mezzanine: MIPI CSI
Camera Connections
Slot
Sensor
Status
CAM0A
OV9282
Supported
CAM3
IMX577
Supported
Connect:
OV9282 → CAM0A
IMX577 → CAM3
SW2300 DIP Switch on Interposer Board
Slot
SW2300 Switch 1
Default
Function
CAM0A
Not required
N/A
Works without DIP setting
CAM3
OFF
OFF
Enables CAM3 use
To use the CAM3 slot on the vision mezzanine board, SW2300 switch 1 must be OFF.
This is the default state.
CAM0A works without any DIP switch setting.
RB3G2 Vision Mezzanine: GMSL
There are two GMSL slots on the vision mezzanine board:
GMSL1
GMSL2
Slot
Shared CSI
Switch Required
Default State
Status
GMSL1
No
None
N/A
Supported
GMSL2
Shares CSI with CAM3
SW2300 switch 1 = ON
OFF
Supported
Important
GMSL1 works without any hardware setting
CAM3 CSI and GMSL2 share the same CSI path
To use GMSL2, set SW2300 switch 1 to ON
Default state of SW2300 switch 1 is OFF
RB3G2 Interposer Board: MIPI CSI
Camera Connections
Slot
Sensor
Status
CAM1
OV9282
Supported
CAM2
IMX577
Supported
Connect:
OV9282 → CAM1
IMX577 → CAM2
DIP Switch Settings
Switch
Setting
Default
Purpose
CSI1_DIP_SW
ON
OFF
Enables CAM1
CSI2_DIP_SW
ON
OFF
Enables CAM2
Set CSI1_DIP_SW and CSI2_DIP_SW to ON to use CAM1 and CAM2 on the interposer board.
Default state is OFF.
Supported Features
Feature
IMX577 (CAM3)
OV9282 (CAM0A)
AR0231 (GMSL)
SHDR
Yes
No
No
LDC
Yes
No
No
EIS
Yes
No
No
IQ-9075-EVK Camera Topology
IQ-9075-EVK is offered as the core kit.
The core kit supports MIPI CSI cameras only.
GMSL cameras require a separate GMSL mezzanine board connected to the core kit.
Interface
Hardware Path
Status
MIPI CSI
Core kit / main board
Supported
GMSL
External GMSL mezzanine
Supported via add-on board
In the IQ-9075-EVK hardware stack:
The core kit / main board exposes four MIPI CSI (C/D-PHY) connectors
The GMSL mezzanine board exposes four GMSL ports (0 to 3)
GMSL Port Map
There are four GMSL ports (0 to 3) on the GMSL mezzanine board.
Important
GMSL port numbering is not sequential
Port numbers are assigned based on the CSI index to which the GMSL port is connected
Each GMSL port connects to a MAX96724 quad GMSL deserializer
Each deserializer is connected to one CSI
Port
Deserializer
Status
Sensor Class
Port-0
MAX96724
Enabled
OX03F10 Bayer
Port-1
MAX96724
Disabled
Not enabled in this release
Port-2
MAX96724
Enabled
OX03F10 YUV
Port-3
MAX96724
Enabled
OX03F10 YUV
Current release status
Port-0, Port-2, and Port-3 are enabled for GMSL cameras
Port-1 is not enabled
Port Capacity
Each GMSL port contains four slots (also referred to as channels) numbered 1 to 4.
Item
Value
Slots per GMSL port
4
Channel range
1 to 4
Cameras per port
Up to 4
Sensor Support by Port
Port
Supported Sensor
Resolution / FPS
Capacity
Port-0
OX03F10 Bayer GMSL
1824 × 1536 @ 30 FPS
4 cameras
Port-2
OX03F10 YUV GMSL
1920 × 1536 @ 30 FPS
4 cameras
Port-3
OX03F10 YUV GMSL
1920 × 1536 @ 30 FPS
4 cameras
DIP Switch Setup
IQ-9075-EVK has four CSI PHYs.
Each CSI PHY can be routed to either a MIPI camera port or a GMSL camera port using the DIP switch on the core kit / main board.The switch assignment differs between EVT and DVT/PVT hardware.
EVT Hardware
DVT/PVT Hardware
DIP switch setting for IQ-9075-EVK EVT hardware:
Switch
OFF (Default)
ON
Connection When ON
Connection When OFF
SW2-1
HIGH
LOW
CSI0 → GMSL mezzanine
CSI0 → main board
SW2-2
HIGH
LOW
CSI1 → GMSL mezzanine
CSI1 → main board
SW2-3
HIGH
LOW
CSI2 → GMSL mezzanine
CSI2 → main board
SW2-4
HIGH
LOW
CSI3 → GMSL mezzanine
CSI3 → main board
DIP switch setting for IQ-9075-EVK DVT/PVT hardware:
Switch
ON
OFF (Default)
SW1-5
CSI0 → GMSL mezzanine
CSI0 → main board
SW1-6
CSI1 → GMSL mezzanine
CSI1 → main board
SW1-7
CSI2 → GMSL mezzanine
CSI2 → main board
SW1-8
CSI3 → GMSL mezzanine
CSI3 → main board
Concurrent Camera Support
MIPI Support
The software supports the OV9282 MIPI camera.
MIPI Camera
Supported Resolution / FPS
CAM0
CAM1
CAM2
CAM3
Notes
OV9282
1280 × 720 @ 30 FPS
Supported
Supported
Supported
Supported
Any camera can operate independently. A maximum of two cameras can run concurrently with real-time IFE. All four cameras can run concurrently with the Offline IFE feature.
GMSL Support
The software supports OX03F10 Bayer and OX03F10 YUV GMSL cameras.
Known Issue: YUV 3F10 GMSL camera usecase on Port-2 and Port-3 is not supported in this release.
GMSL Port
Supported Resolution / FPS
Sensor
Notes
Port-0
1824 × 1536 @ 30 FPS
OX03F10 Bayer
Four OX03F10 Bayer GMSL cameras can be connected on Port-0. Any one camera can operate independently. All four cameras on a single port can run concurrently using the Per Port Group feature.
Port-2
1920 × 1536 @ 30 FPS
OX03F10 YUV
Four OX03F10 YUV GMSL cameras can be connected on Port-2. Any one camera can operate independently. All four cameras on a single port can run concurrently using the Per Port Group feature.
Port-3
1920 × 1536 @ 30 FPS
OX03F10 YUV
Four OX03F10 YUV GMSL cameras can be connected on Port-3. Any one camera can operate independently. All four cameras on a single port can run concurrently using the Per Port Group feature.
Port-2 + Port-3
1920 × 1536 @ 30 FPS
OX03F10 YUV
Eight OX03F10 YUV GMSL cameras can be connected, four on Port-2 and four on Port-3. Any one camera from each port can operate independently. All eight cameras can run concurrently using the Per Port Group feature.
GMSL + MIPI Concurrency
CAM0
CAM1
GMSL Port-2
GMSL Port-3
Notes
OV9282 1280 × 720 @ 30 FPS
OV9282 1280 × 720 @ 30 FPS
OX03F10 YUV 1920 × 1080 @ 30 FPS
OX03F10 YUV 1920 × 1080 @ 30 FPS
Any camera can operate independently. All four cameras can operate concurrently.
IQ-8275-EVK Camera Topology
IQ-8275-EVK is offered in the core kit.
The core kit supports MIPI CSI cameras.
GMSL cameras require a separate GMSL mezzanine board connected to the core kit.
Interface
Hardware Path
Status
MIPI CSI
Main board
Supported
GMSL
GMSL mezzanine
Supported via add-on board
GMSL Port Map
There are four GMSL ports (0 to 3) on the GMSL mezzanine board.
Important
GMSL port numbering is not sequential
Port numbers are defined by the CSI index to which the GMSL port is connected
Ports 0, 1, and 2 each connect to a MAX96724 quad GMSL deserializer
Each deserializer is connected to one CSI
Port-3 is a dummy port
Port
Deserializer
Status
Sensor Class
Port-0
MAX96724
Supported
OX03F10 Bayer
Port-1
MAX96724
Disabled
Hardware issue
Port-2
MAX96724
Supported
OX03F10 YUV
Port-3
—
Dummy
No support
Current release status
Port-0 and Port-2 are supported for GMSL cameras
Port-1 is not enabled due to a hardware issue
Port-3 is a dummy port
Port Capacity
Each GMSL port contains four slots (also referred to as channels) numbered 1 to 4.
Item
Value
Slots per GMSL port
4
Channel range
1 to 4
Cameras per port
Up to 4
Port-0 sensor support
OX03F10 Bayer GMSL
Port-2 sensor support
OX03F10 YUV GMSL
DIP Switch Setup
IQ-8275-EVK has three CSI PHYs.
Each CSI PHY can be routed to either a MIPI camera port or a GMSL camera port using the DIP switch on the core kit/main board.The switch assignment differs for EVT and DVT/PVT hardware.
EVT Hardware
DVT / PVT Hardware
DIP switch setting on IQ-8275-EVK EVT hardware:
Switch
ON
OFF (Default)
SW2-1
CSI0 → GMSL mezzanine
CSI0 → main board
SW2-2
CSI1 → GMSL mezzanine
CSI1 → main board
SW2-3
CSI2 → GMSL mezzanine
CSI2 → main board
DIP switch setting on IQ-8275-EVK DVT/PVT hardware:
Switch
ON
OFF (Default)
SW1-5
CSI0 → GMSL mezzanine
CSI0 → main board
SW1-6
CSI1 → GMSL mezzanine
CSI1 → main board
SW1-7
CSI2 → GMSL mezzanine
CSI2 → main board
Concurrent Camera Support
MIPI Support
The software supports the OV9282 MIPI camera.
MIPI Camera
Supported Resolution / FPS
CAM0
CAM1
CAM2
Notes
OV9282
1280 × 720 @ 30 FPS
Supported
Supported
Supported
Any camera can operate independently. Up to two cameras can run concurrently with real-time IFE. All three cameras can run concurrently using Offline IFE.
GMSL Support
The software supports OX03F10 Bayer and OX03F10 YUV GMSL cameras.
Known Issue: YUV 3F10 GMSL camera usecase on Port-2 is not supported in this release.
GMSL Port
Supported Resolution / FPS
Sensor
Notes
Port-0
1824 × 1536 @ 30 FPS
OX03F10 Bayer
Four Bayer GMSL cameras can be connected on Port-0. Any one camera can operate independently. All four cameras on a single port can run concurrently using the Per Port Group feature.
Port-2
1920 × 1536 @ 30 FPS
OX03F10 YUV
Four YUV GMSL cameras can be connected on Port-2. Any one camera can operate independently. All four cameras on a single port can run concurrently using the Per Port Group feature.
GMSL Port-0 + Port-2 Concurrency
Configuration
Status
Notes
4× OX03F10 Bayer on Port-0 + 4× OX03F10 YUV on Port-2
Supported
All eight cameras can run concurrently using the Per Port Group feature
Independent camera on each port
Supported
Any one camera from each port can operate independently
Full 8-camera concurrency on IQ-8275-EVK
Stable
All eight cameras can run concurrently
GMSL + MIPI Concurrency
GMSL Port-0
MIPI
GMSL Port-2
Status
OX03F10 Bayer 1824 × 1536 @ 30 FPS
OV9282 1280 × 720 @ 30 FPS
OX03F10 YUV 1920 × 1080 @ 30 FPS
Supported
OV9282 1280 × 720 @ 30 FPS
OX03F10 Bayer 1824 × 1536 @ 30 FPS
OX03F10 YUV 1920 × 1080 @ 30 FPS
Supported
Rule: Any camera can operate independently.
Result: All three cameras can run concurrently.
IQ615 EVK Camera Topology
The IQ615 EVK supports MIPI CSI cameras.
GMSL is routed through a dedicated interface.
Board Overview
Interface
Connector
Lane Count
Default State
Status
CSI0
22-pin CSI
2-lane
Enabled
Supported
CSI1
22-pin CSI
4-lane
Routed to GMSL by default
Supported via SW13
GMSL
Dedicated GMSL slot
—
Available
Enabled
Important
The IQ615 EVK does not ship with a default sensor connection
CSI0 requires no DIP switch configuration
CSI1 uses SW13 for path selection
CSI1 Path Selection
SW13 controls CSI1 routing.
SW13 Setting
CSI1 Routing
Result
OFF
GMSL deserializer path
CSI1 configured for GMSL
ON
22-pin camera connector path
CSI1 configured for MIPI
Default state: SW13 is OFF
CSI1 defaults to the GMSL path
CSI1 can be switched to MIPI by setting SW13 to ON
GMSL Interface
Item
Status
GMSL slot
Present
Additional hardware config
Not required
Current release support
Enabled
Switch Configuration
Carrier Board Function
Switch
Configuration
Comment
Enable MIPI for CSI1
SW13 OFF
GMSL deserializer → CSI1
Default state
Enable MIPI for CSI1
SW13 ON
22-pin camera connector → CSI1
Switch to MIPI path
Summary
Path
CSI0
CSI1
GMSL
MIPI
Direct use
Enabled via SW13 ON
Enabled
GMSL
Not applicable
Default path via SW13 OFF
Present and Enabled
IQx7181 EVK provides multiple camera serial interface (CSI) connectors, supporting camera modules with different PHY types and lane configurations.
This enables flexible camera connectivity for bring-up and validation use cases.
Interface summary
The following table provides a summary of interface configurations.
CSI Interface
Sensor
PHY Type
Notes
CSI0
OG0VA1B
D-PHY
1-lane
CSI1
IMX766 / IMX577
C-PHY / D-PHY
30-pin (default) or 22-pin via SW2-6
CSI2
IMX766
C-PHY
N/A
CSI4
IMX688
C-PHY
N/A
Supported CSI interfaces
The available CSI interfaces on the IQx7181 EVK are:
CSI0
CSI1
CSI2
CSI4
The following image shows the CSI connector layout on the IQx7181 EVK board.
CSI interface details
CSI0 interface
Connected sensor: OG0VA1B
Lane configuration: 1-lane
PHY type: D-PHY
CSI4 interface
Connected sensor: IMX688
PHY type: C-PHY
CSI1 and CSI2 interfaces
Default connected sensor: IMX766 (C-PHY)
Optional configuration: CSI1 can connect to a 22-pin D-PHY IMX577 sensor
Configure CSI1 connector (30-pin and 22-pin)
The CSI1 interface supports two physical connector types:
30-pin connector
22-pin connector
Select the active connector on CSI1 using switch SW2-6 as described in the following table.
SW2-6 position
Active connector
OFF (default)
30-pin connector
ON
22-pin connector
The default configuration is SW2-6 = OFF, which enables the 30-pin CSI1 connector.
Use IMX577 sensor with CSI1
When connecting an IMX577 image sensor:
Use the CSI1 22-pin interface.
Set SW2-6 to ON to enable the 22-pin connector.
Connect the sensor using a 22-pin Type-B FFC/FPC cable.
Ensure the cable orientation and pin alignment are correct before powering on the system.
02 · Choose the stream API
Qualcomm Linux supports the following APIs for camera:
GStreamer API
GStreamer is an open-source multimedia framework. Qualcomm provides a GStreamer plugin (qtiqmmfsrc) that allows developers to control the camera subsystem in applications. See Qualcomm GStreamer plugins for more information.
V4L2 API
V4L2 is a framework within the Linux kernel that provides support for video capture, video output, and other multimedia devices. Developers can operate the camera using the V4L2 API. The V4L2 API, which uses the CAMSS driver, is suitable for developers who only need to obtain raw images from the camera.
03 · Stream camera with the GStreamer API
gst-launch-1.0 is a command-line GStreamer utility used to build and run a GStreamer pipeline. The pipeline is specified as a collection of elements with properties separated by exclamation marks (!).
Connect to the device console using SSH. See How To SSH? for instructions.
1
🗑️ Clear GStreamer Registry
Clear GStreamer registry (if needed)
If a GStreamer command was executed before enabling the camera overlay, the GStreamer registry must be cleared after enabling the camera overlay. Run the following command to clear the registry:
Terminal
rm ~/.cache/gstreamer-1.0/registry.aarch64.bin
2
📉 Tune Log Level
Log Level Tuning (if needed)
Camera use-cases are expected to run on a performance (perf) build for optimal results. On default builds, reduce the kernel console log level as shown below:
Terminal
echo 4 > /proc/sys/kernel/printk
3
⚡ Activate Adreno OpenCL for cam-server
Activate Adreno OpenCL for cam-server (For Advanced Camera Use-cases only)
Before running any Advanced camera use cases like SHDRv2, SHDRv3, Defog, etc., configure the cam-server systemd service to use the Adreno OpenCL ICD library.
1
🛠️ Open the service override
Edit the qti-cam-server systemd unit so it can load a custom environment file.
Ensure that MIPI cameras are connected to CSI slots. The OV9282 MIPI camera should be connected to the CAM 0A slot and the IMX577 MIPI camera should be connected to the CAM3 slot.
This command starts the camera with 720p at 30 FPS configuration. The frame coming from the camera sensor is thrown away by fakesink. If the gst pipeline status is changed to “PLAYING” as shown below, this indicates that the camera is running. Since this command dumps camera frames to fakesink, nothing will be saved on the device.
Log Output
gbm_create_device(187): Info: backend name is: msm_drmSetting pipeline to PAUSED ...Pipeline is live and does not need PREROLL ...Setting pipeline to PLAYING ...New clock: GstSystemClock
This command starts the camera with 720p at 30 FPS configuration and saves it as a video file after h264 video encoding. If the gst pipeline status is changed to “PLAYING”, this indicates the camera is running.To stop the camera, press CTRL+C.
2
Pull recorded content
/opt/mux_avc.mp4 is generated on the device. The recorded content can be pulled from the device by running the following scp command on the host PC:
Press Enter. This command will print the following menu and wait for user input.
Menu
##################################### MENU #####################################============================== Pipeline Controls==============================(0) NULL: Set the pipeline into NULL state(1) READY: Set the pipeline into READY state(2) PAUSED: Set the pipeline into PAUSED state(3) PLAYING: Set the pipeline into PLAYING state==================================== Other====================================(p) Plugin Mode: Choose a plugin which to control(q) Quit : Exit the applicationChoose an option:
3
Take a snapshot
Use the following menu steps to take a snapshot while recording video.
Menu Steps
(1) ready -> (3) Playing -> (p)Plugin Mode : Select (8)camerasrc -> (37) capture-image -> (1): still - Snapshot ->(1) Snapshot count ( 'guint' value for arg1)
4
Stop and retrieve files
To stop the camera, press Enter, press b (back), and then press q (quit). The recorded video file and snapshot images are saved in /opt/. The recorded content can be pulled from the device by running the following scp command on the host PC:
SCP (SSH)
$ scp -r root@[ip-addr]:/opt/<file name> .
MIPI multi-camera streaming
QCS6490 has five CSI PHYs to which you can connect five MIPI cameras.QCS6490 has three IFEs and two IFE Lites. This means you can run three cameras with IFEs and two cameras with IFE Lites. IFE Lites only support raw dumps from the sensor. You can connect mono cameras to the IFE Lites, dump raw frames, and then convert the output to YUV frames using a CHI node.To validate five camera concurrency on the RB3 platform:
1
Connect MIPI cameras
Connect MIPI cameras as described in the following table.
Slot
Camera sensor
CAM 0A
OV9282 mono camera
CAM 0B
OV9282 mono camera
CAM1
IMX577 bayer camera
CAM2
IMX577 bayer camera
CAM3
IMX577 bayer camera
2
Run GST commands for all five cameras concurrently
For OV9282 mono cameras, a separate camera pipeline (RealTimeMonoToYUV) is used. This pipeline uses IFE Lites to dump the raw frame and then convert it to a YUV frame using a CHI node. Use the GST parameter ife-direct-stream=1 to use this camera pipeline. Since it runs with an IFE Lite, 2A is not applied on these cameras.
The QCS6490 maximum encode capability is 4K@30. Thus, the total encode processing from all five cameras has to be under the 4k@30 limit.
Ensure that the camera (MIPI or GMSL) sensor is connected to the IQ-9075-EVK device. You can connect OV9282 MIPI cameras on CSI slots. Connect OX03f10 Bayer GMSL cameras to GMSL Port-0 and OX03f10 YUV GMSL cameras to Port-2 and Port-3.
The following command starts the camera with 720p at 30 FPS configuration. The frame coming from the camera sensor is thrown away by fakesink. If the gst pipeline status is changed to “PLAYING” as shown below, this indicates that the camera is running. Since this command dumps camera frames to fakesink, nothing will be saved on the device.
Log Output
gbm_create_device(187): Info: backend name is: msm_drmSetting pipeline to PAUSED ...Pipeline is live and does not need PREROLL ...Setting pipeline to PLAYING ...New clock: GstSystemClock
This command starts the camera with 720p at 30 FPS configuration and saves it as a video file after h264 video encoding. If the gst pipeline status is changed to “PLAYING”, this indicates the camera is running. To stop the camera, press CTRL+C.
2
Pull recorded content
/opt/mux_avc.mp4 is generated on the device. The recorded content can be pulled from the device by running the following scp command on the host PC:
SCP (SSH)
$ scp -r root@[ip-addr]:/opt/mux_avc.mp4 .
Video encoding and snapshot
IQ-9075-EVK doesn’t have a hardware JPEG encoder. The snapshot use case works using a software JPEG encoder algorithm that runs on the CPU.
Press Enter. This command will print the following menu and wait for user input.
Menu
##################################### MENU #####################################============================== Pipeline Controls==============================(0) NULL: Set the pipeline into NULL state(1) READY: Set the pipeline into READY state(2) PAUSED: Set the pipeline into PAUSED state(3) PLAYING: Set the pipeline into PLAYING state==================================== Other====================================(p) Plugin Mode: Choose a plugin which to control(q) Quit : Exit the applicationChoose an option:
3
Take a snapshot
Use the following menu steps to take a snapshot while recording video.
Menu Steps
(1) ready -> (3) Playing -> (p)Plugin Mode : Select (11)camerasrc ->(38) capture-image -> (1): still - Snapshot ->(1) Snapshot count ( 'guint' value for arg1)
4
Stop and retrieve files
To stop the camera, press Enter, press b (back), and then press q (quit). The recorded video file and snapshot images are saved in /opt/. The recorded content can be pulled from the device by running the following scp command on the host PC:
SCP (SSH)
$ scp -r root@[ip-addr]:/opt/<file name> .
MIPI multi-camera streaming
There are four MIPI CSI slots present on the IQ-9075-EVK main board. Connect OV9282 cameras to MIPI CSI ports. You can run any two OV9282 cameras concurrently out of four cameras.Run the following GST command in two different terminals with camera = 0, 1 to validate MIPI camera concurrency. Use different file names when saving the encoded file of each camera.
You can also run all four MIPI cameras concurrently using the offline IFE feature. Refer to Support multi-camera using offline IFE for information on four camera validation.
GMSL multi-camera streaming
A single GMSL port contains four slots, allowing connection of four GMSL cameras to a single CSI using different virtual channel IDs. The four cameras connected on one CSI are treated as group. A group of cameras can be run concurrently using the per port grouping feature.
Ensure that the camera (MIPI or GMSL) sensor is connected to the IQ-8275-EVK device. You can connect OV9282 MIPI cameras on CSI slots. Connect OX03f10 bayer GMSL cameras to GMSL Port-0 and OX03f10 YUV GMSL cameras to GMSL Port-2.
The following command starts the camera with 720p at 30 FPS configuration. The frame coming from the camera sensor is thrown away by fakesink. If the gst pipeline status is changed to “PLAYING” as shown below, this indicates that the camera is running. Since this command dumps camera frames to fakesink, nothing will be saved on the device.
Log Output
gbm_create_device(187): Info: backend name is: msm_drmSetting pipeline to PAUSED ...Pipeline is live and does not need PREROLL ...Setting pipeline to PLAYING ...New clock: GstSystemClock
This command starts the camera with 720p at 30 FPS configuration and saves it as a video file after h264 video encoding. If the gst pipeline status is changed to “PLAYING”, this indicates the camera is running. To stop the camera, press CTRL+C.
2
Pull recorded content
/opt/mux_avc.mp4 is generated on the device. The recorded content can be pulled from the device by running the following scp command on the host PC:
SCP (SSH)
$ scp -r root@[ip-addr]:/opt/mux_avc.mp4 .
Video encoding and snapshot
IQ-8275-EVK doesn’t have a hardware JPEG encoder. The snapshot use case works using a software JPEG encoder algorithm that runs on the CPU.
Press Enter. This command will print the following menu and wait for user input.
Menu
##################################### MENU #####################################============================== Pipeline Controls==============================(0) NULL: Set the pipeline into NULL state(1) READY: Set the pipeline into READY state(2) PAUSED: Set the pipeline into PAUSED state(3) PLAYING: Set the pipeline into PLAYING state==================================== Other====================================(p) Plugin Mode: Choose a plugin which to control(q) Quit : Exit the applicationChoose an option:
3
Take a snapshot
Use the following menu steps to take a snapshot while recording video.
Menu Steps
(1) ready -> (3) Playing -> (p)Plugin Mode : Select (11)camerasrc ->(38) capture-image -> (1): still - Snapshot ->(1) Snapshot count ( 'guint' value for arg1)
4
Stop and retrieve files
To stop the camera, press Enter, press b (back), and then press q (quit). The recorded video file and snapshot images are saved in /opt/. The recorded content can be pulled from the device by running the following scp command on the host PC:
SCP (SSH)
$ scp -r root@[ip-addr]:/opt/<file name> .
MIPI multi-camera streaming
There are three MIPI CSI slots present on the IQ-8275-EVK main board. Connect OV9282 cameras to MIPI CSI ports. You can run any two OV9282 cameras concurrently.Run the following GST command in two different terminals with camera = 0, 1 to validate MIPI camera concurrency. Use different file names when saving the encoded file of each camera.
You can also run all three MIPI cameras concurrently using the offline IFE feature. Refer to Support multi-camera using offline IFE for information on three camera validation.
GMSL multi-camera streaming
A single GMSL port contains four slots, allowing connection of four GMSL cameras to a single CSI using different virtual channel IDs. The four cameras connected on one CSI are treated as group. A group of cameras can be run concurrently using the per port grouping feature.
Ensure that the camera MIPI sensor is connected to the IQ615 device. You can connect IMX577 MIPI cameras on CSI slots.
The following command starts the camera with 720p at 30 FPS configuration. The frame coming from the camera sensor is thrown away by fakesink. If the gst pipeline status is changed to “PLAYING” as shown below, this indicates that the camera is running. Since this command dumps camera frames to fakesink, nothing will be saved on the device.
Log Output
gbm_create_device(187): Info: backend name is: msm_drmSetting pipeline to PAUSED ...Pipeline is live and does not need PREROLL ...Setting pipeline to PLAYING ...New clock: GstSystemClock
This command starts the camera with 720p at 30 FPS configuration and saves it as a video file after h264 video encoding. If the gst pipeline status is changed to “PLAYING”, this indicates the camera is running. To stop the camera, press CTRL+C.
2
Pull recorded content
/opt/mux_avc.mp4 is generated on the device. The recorded content can be pulled from the device by running the following scp command on the host PC:
SCP (SSH)
$ scp -r root@[ip-addr]:/opt/mux_avc.mp4 .
Video encoding and snapshot
IQ615 doesn’t have a hardware JPEG encoder. The snapshot use case works using a software JPEG encoder algorithm that runs on the CPU.
Press Enter. This command will print the following menu and wait for user input.
Menu
##################################### MENU #####################################============================== Pipeline Controls==============================(0) NULL: Set the pipeline into NULL state(1) READY: Set the pipeline into READY state(2) PAUSED: Set the pipeline into PAUSED state(3) PLAYING: Set the pipeline into PLAYING state==================================== Other====================================(p) Plugin Mode: Choose a plugin which to control(q) Quit : Exit the applicationChoose an option:
3
Take a snapshot
Use the following menu steps to take a snapshot while recording video.
Menu Steps
(1) ready -> (3) Playing -> (p)Plugin Mode : Select (11)camerasrc ->(38) capture-image -> (1): still - Snapshot ->(1) Snapshot count ( 'guint' value for arg1)
4
Stop and retrieve files
To stop the camera, press Enter, press b (back), and then press q (quit). The recorded video file and snapshot images are saved in /opt/. The recorded content can be pulled from the device by running the following scp command on the host PC:
SCP (SSH)
$ scp -r root@[ip-addr]:/opt/<file name> .
GStreamer app support is not enabled in this release.
To use the V4L2 API, flash the Config1 image. For overlay configuration details, see Overlay Configurations.
QCS6490
IQ-9075-EVK
IQ-8275-EVK
IQ615
IQx7181
The V4L2 framework within the Linux kernel supports video devices. It provides an API that allows user space applications to interact with devices such as cameras and video capture cards.More information on V4L2 is available from kernel.org.
Qualcomm supports the V4L2 interface camera ISP driver for raw frame dump functionality in the upstream kernel.
CAMSS driver
The Qualcomm camera subsystem (CAMSS) driver in the upstream kernel implements the V4L2, media controller, and V4L2 subdev interfaces.Camera sensors using the V4L2 subdev interface in the kernel are supported.The CAMSS driver consists of:
CSIPHY module – Handles the physical layer of the CSI2 receivers. A separate camera sensor can be connected to each CSIPHY module.
CSI Decoder (CSID) module – Handles the protocol and application layers of the CSI2 receivers. A CSID can decode a data stream from any CSIPHY.
Video Front End (VFE) module – Represents the Image Front End (IFE) that contains Raw Dump Interface (RDI) input interfaces that bypass the image processing pipeline. The VFE also contains the AXI bus interface which writes output data to memory.
The CAMSS driver implements the V4L2 interface. Each CSIPHY, CSID, and VFE module is represented by a single V4L2 sub-device.As shown in the following diagram, each CSIPHY can connect to each CSID. Each CSID can connect to each VFE. Each RDI port has an individual video node.
CAMSS V4L2 drivers are in <kernel_root>/drivers/media/platform/qcom/camss. <kernel_root> is the directory of the Linux kernel.
V4L2 sample application — Yavta
This section describes how to capture raw frame data using an application that supports the V4L2 interface.
Connect the IMX577 MIPI camera sensor to the CAM3 slot of the RB3 device.
Yavta is available by default as part of the image; no explicit installation is required.
1
Verify the CAMSS module
The IMX412 and CAMSS modules are loaded by default. Verify that the qcom_camss and IMX412 modules are loaded by running the following lsmod commands:
The expected result is that the IMX412 sensor driver and qcom_camss camera subsystem modules are loaded successfully, confirming the upstream camera stack is active.
2
Check the media node number
Run the following command to print the media device node number for the CAMSS driver.If /dev/media0 does not list the qcom-camss driver, try it with /dev/media1.
The media controller utility (media-ctrl) is a V4L2 utility used to configure camera subsystem subdevices. Use media-ctl --help to print usage information.
Replace [x] with the number found via Check the media node number. For example, # media-ctl -d /dev/media1 --reset.
Reset all links to inactive:
Reset Links
# media-ctl -d /dev/media[x] --reset
Configure the camera sensor format and resolution on pipeline nodes:
libcamera is an open-source software framework. It handles control of the V4L2 camera interface and exposes a native C++ API to upper layers. The applications and upper-level frameworks run based on the libcamera framework.See libcamera architecture for more detail about the libcamera architecture.
This runs the utility and captures 10 raw frames in the root directory and saves them into files.Check the console log messages for information about the resolution and format of the dumped images.
Log Output
Using camera /base/soc@0/cci@ac4b000/i2c-bus@1/camera@1a as cam0 [0:15:01.067615799] [2155] INFO Camera camera.cpp:945 configuring streams:(0) 4056x3040-SRGGB10_CSI2Pcam0: Capture 10 frames
The V4L2 framework within the Linux kernel supports video devices. It provides an API that allows user space applications to interact with devices such as cameras and video capture cards.More information on V4L2 is available from kernel.org.Qualcomm supports the V4L2 interface camera ISP driver for raw frame dump functionality in the upstream kernel.
CAMSS driver
The Qualcomm camera subsystem (CAMSS) driver in the upstream kernel implements the V4L2, media controller, and V4L2 subdev interfaces.Camera sensors using the V4L2 subdev interface in the kernel are supported.The CAMSS driver consists of:
CSIPHY module – Handles the physical layer of the CSI2 receivers. A separate camera sensor can be connected to each CSIPHY module.
CSI Decoder (CSID) module – Handles the protocol and application layers of the CSI2 receivers. A CSID can decode a data stream from any CSIPHY.
Video Front End (VFE) module – Represents the Image Front End (IFE) that contains Raw Dump Interface (RDI) input interfaces that bypass the image processing pipeline. The VFE also contains the AXI bus interface which writes output data to memory.
The CAMSS driver implements the V4L2 interface. Each CSIPHY, CSID, and VFE module is represented by a single V4L2 sub-device.As shown in the following diagram, each CSIPHY can connect to each CSID. Each CSID can connect to each VFE. Each RDI port has an individual video node.
CAMSS V4L2 drivers are in <kernel_root>/drivers/media/platform/qcom/camss. <kernel_root> is the directory of the Linux kernel.
V4L2 sample application — Yavta
This section describes how to capture raw frame data using an application that supports the V4L2 interface.
Connect the IMX577 MIPI camera sensor to the CAM1 slot of the IQ-9075-EVK device.
Yavta is available by default as part of the image; no explicit installation is required.
1
Verify the CAMSS module
The IMX412 and CAMSS modules are loaded by default. Verify the qcom_camss and IMX412 modules are loaded by running the following lsmod commands:
The expected result is that the IMX412 sensor driver and qcom_camss camera subsystem modules are loaded successfully, confirming the upstream camera stack is active.
2
Check the media node number
Run the following command to print the media device node number for the CAMSS driver.If /dev/media0 does not list the qcom-camss driver, try it with /dev/media1.
The media controller utility (media-ctrl) is a V4L2 utility used to configure camera subsystem subdevices. Use media-ctl --help to print usage information.
Replace [x] with the number found via Check the media node number. For example, # media-ctl -d /dev/media1 --reset.
Reset all links to inactive:
Reset Links
# media-ctl -d /dev/media[x] --reset
Configure the camera sensor format and resolution on pipeline nodes:
libcamera is an open-source software framework. It handles control of the V4L2 camera interface and exposes a native C++ API to upper layers. The applications and upper-level frameworks run based on the libcamera framework.See libcamera architecture for more detail about the libcamera architecture.
This runs the utility and captures 10 raw frames in the root directory and saves them into files.Check the console log messages for information about the resolution and format of the dumped images.
Log Output
Using camera /base/soc@0/cci@ac4b000/i2c-bus@1/camera@1a as cam0 [0:15:01.067615799] [2155] INFO Camera camera.cpp:945 configuring streams:(0) 4056x3040-SRGGB10_CSI2Pcam0: Capture 10 frames
The V4L2 framework within the Linux kernel supports video devices. It provides an API that allows user space applications to interact with devices such as cameras and video capture cards.More information on V4L2 is available from kernel.org.Qualcomm supports the V4L2 interface camera ISP driver for raw frame dump functionality in the upstream kernel.
CAMSS driver
The Qualcomm camera subsystem (CAMSS) driver in the upstream kernel implements the V4L2, media controller, and V4L2 subdev interfaces.Camera sensors using the V4L2 subdev interface in the kernel are supported.The CAMSS driver consists of:
CSIPHY module – Handles the physical layer of the CSI2 receivers. A separate camera sensor can be connected to each CSIPHY module.
CSI Decoder (CSID) module – Handles the protocol and application layers of the CSI2 receivers. A CSID can decode a data stream from any CSIPHY.
Video Front End (VFE) module – Represents the Image Front End (IFE) that contains Raw Dump Interface (RDI) input interfaces that bypass the image processing pipeline. The VFE also contains the AXI bus interface which writes output data to memory.
The CAMSS driver implements the V4L2 interface. Each CSIPHY, CSID, and VFE module is represented by a single V4L2 sub-device.As shown in the following diagram, each CSIPHY can connect to each CSID. Each CSID can connect to each VFE. Each RDI port has an individual video node.
CAMSS V4L2 drivers are in <kernel_root>/drivers/media/platform/qcom/camss. <kernel_root> is the directory of the Linux kernel.
V4L2 sample application — Yavta
This section describes how to capture raw frame data using an application that supports the V4L2 interface.
Connect the IMX577 MIPI camera sensor to the CAM1 slot of the IQ-8275-EVK device.
Yavta is available by default as part of the image; no explicit installation is required.
1
Verify the CAMSS module
The IMX412 and CAMSS modules are loaded by default. Verify the qcom_camss and IMX412 modules are loaded by running the following lsmod commands:
The expected result is that the IMX412 sensor driver and qcom_camss camera subsystem modules are loaded successfully, confirming the upstream camera stack is active.
2
Check the media node number
Run the following command to print the media device node number for the CAMSS driver.If /dev/media0 does not list the qcom-camss driver, try it with /dev/media1.
The media controller utility (media-ctrl) is a V4L2 utility used to configure camera subsystem subdevices. Use media-ctl --help to print usage information.
Replace [x] with the number found via Check the media node number. For example, # media-ctl -d /dev/media1 --reset.
Reset all links to inactive:
Reset Links
# media-ctl -d /dev/media[x] --reset
Configure the camera sensor format and resolution on pipeline nodes:
libcamera is an open-source software framework. It handles control of the V4L2 camera interface and exposes a native C++ API to upper layers. The applications and upper-level frameworks run based on the libcamera framework.See libcamera architecture for more detail about the libcamera architecture.
This runs the utility and captures 10 raw frames in the root directory and saves them into files.Check the console log messages for information about the resolution and format of the dumped images.
Log Output
Using camera /base/soc@0/cci@ac4b000/i2c-bus@1/camera@1a as cam0 [0:15:01.067615799] [2155] INFO Camera camera.cpp:945 configuring streams:(0) 4056x3040-SRGGB10_CSI2Pcam0: Capture 10 frames
The V4L2 framework within the Linux kernel supports video devices. It provides an API that allows user space applications to interact with devices such as cameras and video capture cards.More information on V4L2 is available from kernel.org.Qualcomm supports the V4L2 interface camera ISP driver for raw frame dump functionality in the upstream kernel.
CAMSS driver
The Qualcomm camera subsystem (CAMSS) driver in the upstream kernel implements the V4L2, media controller, and V4L2 subdev interfaces.Camera sensors using the V4L2 subdev interface in the kernel are supported.The CAMSS driver consists of:
CSIPHY module – Handles the physical layer of the CSI2 receivers. A separate camera sensor can be connected to each CSIPHY module.
CSI Decoder (CSID) module – Handles the protocol and application layers of the CSI2 receivers. A CSID can decode a data stream from any CSIPHY.
Video Front End (VFE) module – Represents the Image Front End (IFE) that contains Raw Dump Interface (RDI) input interfaces that bypass the image processing pipeline. The VFE also contains the AXI bus interface which writes output data to memory.
The CAMSS driver implements the V4L2 interface. Each CSIPHY, CSID, and VFE module is represented by a single V4L2 sub-device.As shown in the following diagram, each CSIPHY can connect to each CSID. Each CSID can connect to each VFE. Each RDI port has an individual video node.
CAMSS V4L2 drivers are in <kernel_root>/drivers/media/platform/qcom/camss. <kernel_root> is the directory of the Linux kernel.
V4L2 sample application — Yavta
This section describes how to capture raw frame data using an application that supports the V4L2 interface.
Connect the IMX577 MIPI camera sensor to the CAM1 slot of the IQ615 device.
Yavta is available by default as part of the image; no explicit installation is required.
1
Verify the CAMSS module
The IMX412 and CAMSS modules are loaded by default. Verify the qcom_camss and IMX412 modules are loaded by running the following lsmod commands:
The expected result is that the IMX412 sensor driver and qcom_camss camera subsystem modules are loaded successfully, confirming the upstream camera stack is active.
2
Check the media node number
Run the following command to print the media device node number for the CAMSS driver.If /dev/media0 does not list the qcom-camss driver, try it with /dev/media1.
The media controller utility (media-ctrl) is a V4L2 utility used to configure camera subsystem subdevices. Use media-ctl --help to print usage information.
Replace [x] with the number found via Check the media node number. For example, # media-ctl -d /dev/media1 --reset.
Reset all links to inactive:
Reset Links
# media-ctl -d /dev/media[x] --reset
Configure the camera sensor format and resolution on pipeline nodes:
libcamera is an open-source software framework. It handles control of the V4L2 camera interface and exposes a native C++ API to upper layers. The applications and upper-level frameworks run based on the libcamera framework.See libcamera architecture for more detail about the libcamera architecture.
This runs the utility and captures 10 raw frames in the root directory and saves them into files.Check the console log messages for information about the resolution and format of the dumped images.
Log Output
Using camera /base/soc@0/cci@ac4b000/i2c-bus@1/camera@1a as cam0 [0:15:01.067615799] [2155] INFO Camera camera.cpp:945 configuring streams:(0) 4056x3040-SRGGB10_CSI2Pcam0: Capture 10 frames
The V4L2 framework within the Linux kernel supports video devices. It provides an API that allows user space applications to interact with devices such as cameras and video capture cards.More information on V4L2 is available from kernel.org.Qualcomm supports the V4L2 interface camera ISP driver for raw frame dump functionality in the upstream kernel.
CAMSS driver
The Qualcomm camera subsystem (CAMSS) driver in the upstream kernel implements the V4L2, media controller, and V4L2 subdev interfaces.Camera sensors using the V4L2 subdev interface in the kernel are supported.The CAMSS driver consists of:
CSIPHY module – Handles the physical layer of the CSI2 receivers. A separate camera sensor can be connected to each CSIPHY module.
CSI Decoder (CSID) module – Handles the protocol and application layers of the CSI2 receivers. A CSID can decode a data stream from any CSIPHY.
Video Front End (VFE) module – Represents the Image Front End (IFE) that contains Raw Dump Interface (RDI) input interfaces that bypass the image processing pipeline. The VFE also contains the AXI bus interface which writes output data to memory.
The CAMSS driver implements the V4L2 interface. Each CSIPHY, CSID, and VFE module is represented by a single V4L2 sub-device.As shown in the following diagram, each CSIPHY can connect to each CSID. Each CSID can connect to each VFE. Each RDI port has an individual video node.
CAMSS V4L2 drivers are in <kernel_root>/drivers/media/platform/qcom/camss. <kernel_root> is the directory of the Linux kernel.
V4L2 sample application — Yavta
This section describes how to capture raw frame data using an application that supports the V4L2 interface.
Connect the IMX577 MIPI camera sensor to the CAM1 (CSI1 22-pin) slot of the IQx7181 device.
Yavta is available by default as part of the image; no explicit installation is required.
1
Verify the CAMSS module
The IMX412 and CAMSS modules are loaded by default. Verify the qcom_camss and IMX412 modules are loaded by running the following lsmod commands:
Verify Modules
lsmod | grep qcom_camss lsmod | grep imx412
2
Check the media node number
Run the following command to print the media device node number for the CAMSS driver.If /dev/media0 does not list the qcom-camss driver, try it with /dev/media1.
The media controller utility (media-ctrl) is a V4L2 utility used to configure camera subsystem subdevices. Use media-ctl --help to print usage information.
Replace [x] with the number found via Check the media node number. For example, # media-ctl -d /dev/media1 --reset.
Reset all links to inactive:
Reset Links
# media-ctl -d /dev/media[x] --reset
Configure the camera sensor format and resolution on pipeline nodes:
libcamera is an open-source software framework. It handles control of the V4L2 camera interface and exposes a native C++ API to upper layers. The applications and upper-level frameworks run based on the libcamera framework.See libcamera architecture for more detail about the libcamera architecture.
This runs the utility and captures 10 raw frames in the root directory and saves them into files.Check the console log messages for information about the resolution and format of the dumped images.
Log Output
Using camera /base/soc@0/cci@ac4b000/i2c-bus@1/camera@1a as cam0 [0:15:01.067615799] [2155] INFO Camera camera.cpp:945 configuring streams:(0) 4056x3040-SRGGB10_CSI2Pcam0: Capture 10 frames
USB camera
Qualcomm Linux devices provide driver support for USB web cameras that adhere to the USB video class (UVC) standard. The UVC video driver exposes these cameras as V4L2 video devices, which can be accessed through the character device nodes such as /dev/videoX. See USB camera configuration for an USB camera usage. The sample application gst-usb-single-camera-app can be used for USB camera validation.
Network camera
A network camera can be supported with the open source GStreamer plugin. Getting a camera stream from the network depends on the network protocols supported by the GStreamer plugin. Developers can use an open source GStreamer plugin (for example, rtspsrc) to handle camera streams from the network and create a pipeline as needed. See rtspsrc for plugin details.The sample application gst-ai-multistream-inference can also be used for network camera validation. See Bring up Ethernet for instructions on setting up an Ethernet network connection.For developing a GStreamer application on the Qualcomm platform, see Qualcomm Intelligent Multimedia SDK.
Was this page helpful?
Assistant
Responses are generated using AI and may contain mistakes.