Table of Contents

TQMa67xx - YOCTO Linux BSP documentation


Camera

Hardware Setup:

Instructions for setting up and connecting the camera can be found in the Camera Quick Start Guide:
MIPI-CSI Quick Start Guide

Software Setup:

The extlinux.conf generated by this BSP's default configuration will display a menu to choose between a number of different LVDS display and MIPI-CSI camera configurations. The default can be modified by setting the pxe_label_override environment variable:

setenv pxe_label_override 'label' # Set default boot option to 'label'
saveenv # Persist configuration
Label Display Camera
default none none
dsi-rpi-7inch-panel RaspberryPi 7“ none
lvds-tm070jdhg30 Tianma TM070JDHG30 none
lvds-vesa-fhd Generic VESA FullHD none
csi0-imx327 none VisionComponents module with IMX327 sensor (X18)
csi0-ov9281 none VisionComponents module with OV9281 sensor (X18)
csi2-imx219 none RaspberryPi camera module with IMX219 sensor (X19)
csi3-imx219 none RaspberryPi camera module with IMX219 sensor (X20)
lvds-tm070jdhg30-csi0-imx327 Tianma TM070JDHG30 VisionComponents module with IMX327 sensor (X18)
lvds-tm070jdhg30-csi0-ov9281 Tianma TM070JDHG30 VisionComponents module with OV9281 sensor (X18)
lvds-tm070jdhg30-csi2-imx219 Tianma TM070JDHG30 RaspberryPi camera module with IMX219 sensor (X19)
lvds-tm070jdhg30-csi3-imx219 Tianma TM070JDHG30 RaspberryPi camera module with IMX219 sensor (X20)
lvds-vesa-fhd-csi0-imx327 Generic VESA FullHD VisionComponents module with IMX327 sensor (X18)
lvds-vesa-fhd-csi0-ov9281 Generic VESA FullHD VisionComponents module with OV9281 sensor (X18)
lvds-vesa-fhd-csi2-imx219 Generic VESA FullHD RaspberryPi camera module with IMX219 sensor (X19)
lvds-vesa-fhd-csi3-imx219 Generic VESA FullHD RaspberryPi camera module with IMX219 sensor (X20)
spe none none

Simultaneous operation of multiple cameras is possible in some combinations, but no labels are defined in extlinux.conf for such configurations at the moment.

Camera commands

The following commands can be used to capture the camera picture and display it on the display:

For IMX327 (X18):

media-ctl -V '"30102000.ticsi2rx":0[fmt:SRGGB10/1280x720]'
media-ctl -V '"cdns_csi2rx.30101000.csi-bridge":0[fmt:SRGGB10/1280x720]'
media-ctl -V '"imx327 3-001a":0[fmt:SRGGB10/1280x720 field:none]'
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-bayer,format=rggb10le,bpp=10,width=1280,height=720 ! \
  bayer2rgb ! waylandsink sync=false

For OV9281 (X18):

media-ctl -V '"30102000.ticsi2rx":0[fmt:Y8_1X8/1280x800]'
media-ctl -V '"cdns_csi2rx.30101000.csi-bridge":0[fmt:Y8_1X8/1280x800]'
media-ctl -V '"ov9281 3-0060":0[fmt:Y8_1X8/1280x800 field:none]'
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=GRAY8,width=1280,height=800 ! \
  videoconvert ! waylandsink sync=false

For IMX219 (X19):

media-ctl -V '"30142000.ticsi2rx":0[fmt:SRGGB10/1920x1080]'
media-ctl -V '"cdns_csi2rx.30141000.csi-bridge":0[fmt:SRGGB10/1920x1080]'
media-ctl -V '"imx219 3-0010":0[fmt:SRGGB10/1920x1080 field:none]'
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-bayer,format=rggb10le,bpp=10,width=1920,height=1080 ! \
  bayer2rgb ! waylandsink sync=false

For IMX219 (X20):

media-ctl -V '"30142000.ticsi2rx":0[fmt:SRGGB10/1920x1080]'
media-ctl -V '"cdns_csi2rx.30141000.csi-bridge":0[fmt:SRGGB10/1920x1080]'
media-ctl -V '"imx219 5-0010":0[fmt:SRGGB10/1920x1080 field:none]'
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-bayer,format=rggb10le,bpp=10,width=1920,height=1080 ! \
  bayer2rgb ! waylandsink sync=false

waylandsink will render the video using Wayland by default. Alternatively, the video can be displayed in fullscreen directly on a Linux framebuffer device by stopping the Wayland compositor with systemctl stop weston.service and replacing waylandsink sync=false with fbdevsink sync=false in the gst-launch-1.0 command.

Hardware acceleration for the conversion from the Bayer pixel format to RGB is currently unsupported, resulting in very low achievable framerates with the IMX219 and IMX327 camera sensors.