Skip to main content

CSI Camera Set 5MP AR0521 Color

Front View with Lens

Side View with Lens

Front View Connected to Toradex Board

Front View without Lens

Side View without Lens

This page contains basic information related to the CSI Camera Set 5MP AR0521 Color.

First Steps

info

Support was added from the BSP version 5.0.0+devel-202008 onwards.

The camera works both with the Toradex BSP Layers and Reference Images for Yocto Project and Torizon. The camera device driver and device tree are integrated into the Toradex BSP Layers and the binaries are deployed to the reference images. The next sections explain how to use the camera.

Reference Images for Yocto Project

Install the Toradex Reference Multimedia pre-built image using the Toradex Easy Installer.

Via serial terminal or ssh, access the board and enable the device-tree overlay already available at /boot/overlay by writing the .dtbo name to the overlays.txt file. To write in the overlays.txt you can use vi and paste apalis-imx8_ar0521_overlay.dtbo on the variable fdt_overlays. After all, just sync and reboot the board so the changes can be applied.

# ls /boot/overlays
apalis-imx8_ar0521_overlay.dtbo display-dpi-lt170410_overlay.dtbo
apalis-imx8_atmel-mxt_overlay.dtbo display-edt5.7_overlay.dtbo
apalis-imx8_hdmi_overlay.dtbo display-edt7_overlay.dtbo
apalis-imx8_lvds_overlay.dtbo display-fullhd_overlay.dtbo
apalis-imx8_mezzanine-can_overlay.dtbo display-lt161010_overlay.dtbo
apalis-imx8_mezzanine_lvds_overlay.dtbo display-lt170410_overlay.dtbo
apalis-imx8_mezzanine_ov5640_overlay.dtbo display-vga_overlay.dtbo
apalis-imx8_ov5640_overlay.dtbo touch-atmel-mxt_overlay.dtbo

# vi /boot/overlays.txt

fdt_overlays=apalis-imx8_hdmi_overlay.dtbo apalis-imx8_ar0521_overlay.dtbo

# sync

# reboot

After the reboot, you can verify that the camera driver is starting correctly:

# dmesg | grep ar0521
[ 7.045228] ar0521 5-0042: Current Firmware Version - (1150CU96RKV1901110d381894XXXXXXX)
[ 11.646248] mx8-img-md: Registered sensor subdevice: ar0521 5-0042 (1)
[ 11.750804] mx8-img-md: created link [ar0521 5-0042] => [mxc-mipi-csi2.1]

To check which /dev/video* is a capture device by getting driver information, you need to use the video-for-linux control (v4l2-ctl) command from v4l2 utils. In this case, the capture device is on /dev/video0.

# ls /dev/video*
/dev/video0 /dev/video1 /dev/video12 /dev/video13 /dev/video2

# v4l2-ctl -d0 -D
Driver Info:
Driver name : mxc-isi-cap
Card type : mxc-isi-cap
Bus info : platform:58140000.isi:cap_devic
Driver version : 5.4.161
Capabilities : 0x84201000
Video Capture Multiplanar
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04201000
Video Capture Multiplanar
Streaming
Extended Pix Format
Media Driver Info:
Driver name : mxc-md
Model : FSL Capture Media Device
Serial :
Bus info :
Media version : 5.4.161
Hardware revision: 0x00000000 (0)
Driver version : 5.4.161
Interface Info:
ID : 0x03000014
Type : V4L Video
Entity Info:
ID : 0x00000012 (18)
Name : mxc_isi.4.capture
Function : V4L2 I/O
Pad 0x01000013 : 0: Sink
Link 0x02000021: from remote pad 0x100000e of entity 'mxc_isi.4': Data, Enabled
info

Note that the video device can be in any of the listed video devices. So, check all of them to make sure to use the right one in the pipeline.

To enable the streaming, run a Gstreamer pipeline on the terminal:

# gst-launch-1.0 v4l2src device='/dev/video0'  ! "video/x-raw, format=RGB16, framerate=30/1, width=1920, height=1080" ! fpsdisplaysink video-sink=waylandsink text-overlay=false sync=false -v
Click here to see the Gstreamer command output
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstWaylandSink:waylandsink0: sync = false
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, format=(string)R[G Bh1960,6 .f5r3a2m5e5r4a]t es=t(rferaamcdtbi[o0n])=300,/ 1m,o dew=id3t
=(int)1920, height=(int)1080, colorimetry=(string)sRGB, interlace-mode=(string)progressive
Setting pipeline to PLAYING ...
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, format=(string)RGB16, framerate=(fraction)30/1, width=(int)1920, height=(int)1080, colorimetry=(string)sRGB, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw, format=(string)RGB16, framerate=(fraction)30/1, width=(int)1920, height=(int)1080, colorimetry=(string)sRGB, interlace-mode=(string)progressive
New clock: GstSystemClock
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstWaylandSink:waylandsink0.GstPad:sink: caps = video/x-raw, format=(string)RGB16, framerate=(fraction)30/1, width=(int)1920, height=(int)1080, colorimetry=(string)sRGB, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0.GstGhostPad:sink: caps = video/x-raw, format=(string)RGB16, framerate=(fraction)30/1, width=(int)1920, height=(int)1080, colorimetry=(string)sRGB, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)RGB16, framerate=(fraction)30/1, width=(int)1920, height=(int)1080, colorimetry=(string)sRGB, interlace-mode=(string)progressive
[ 906.532557] streamdb[1]=1, mode=3
[ 906.658370] streamdb[2]=2, mode=3
[ 906.661706] streamdb[3]=3, mode=3
[ 906.708655] input fmt YUV4
[ 906.714672] output fmt RGBP
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstWaylandSink:waylandsink0: sync = false
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 32, dropped: 0, current: 62.91, average: 62.91
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 56, dropped: 0, current: 47.37, average: 55.16
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 87, dropped: 0, current: 59.26, average: 56.55
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 118, dropped: 0, current: 61.07, average: 57.67
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:02.720832534
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Total showed frames (125), playing for (0:00:02.721266280), fps (45.934).
Freeing pipeline ...

TorizonCore

e-con Systems and Toradex are working on a Partner Demo Container for a great out-of-the-box experience. Subscribe to our developer website updates or contact our sales team to stay up-to-date.

Having trouble?

Please contact our technical support. Various options for technical support are mentioned in the article below.