MX8 Basler Camera

From Variscite Wiki
DART-MX8M-MINI Basler Camera

Introduction

The following instructions will help you to integrate Basler MIPI camera support into Variscite Yocto images for i.MX8M and i.MX8MM platforms.
This will allow you to stream images/video from a Basler camera(s) connected to Variscite evaluation platforms.
You can save the camera output to a storage device and process it using the Basler pylon SDK and the pylonViewer app.

Download Variscite Yocto BSP

Please follow Build Yocto from source code.
Execute steps 1-4.3 to download the BSP sources, but don't start bitbake yet.

Download and install Basler meta layers

$ wget ftp://customerv:Variscite1@ftp.variscite.com/Basler/basler-dart-bcon-mipi-imx8-cep_1.1.2.tar.gz
$ tar xf basler-dart-bcon-mipi-imx8-cep_1.1.2.tar.gz -C ../sources

Download and install Variscite kernel patches

$ wget ftp://customerv:Variscite1@ftp.variscite.com/Basler/sumo-fsl-4.14.98/recipes-kernel/linux.tar.gz
$ rm -rf ../sources/meta-variscite-imx/recipes-kernel/linux
$ tar xf linux.tar.gz -C ../sources/meta-variscite-imx/recipes-kernel

Customize configuration files

Customize bblayers.conf

Add the following lines to conf/bblayers.conf

BBLAYERS += " ${BSPDIR}/sources/meta-basler-imx8 "
BBLAYERS += " ${BSPDIR}/sources/meta-basler-tools/meta-basler-common "

Customize local.conf

Add the following to conf/local.conf under your Yocto build directory:

Add Basler software and driver:

IMAGE_INSTALL_append = " \
        basler-camera-driver \
        pylon \
        python3-pypylon \
        gentl-producer \
"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel-module-basler-camera-driver"

Add Basler DTB files:

KERNEL_DEVICETREE_append_imx8mm-var-dart = " \
        freescale/fsl-imx8mm-var-dart-basler-camera.dtb \
"

Build Yocto image

Follow Variscite wiki to build and install Yocto image.

Running Basler camera application

Run the following commands at the shell prompt:

$ export DISPLAY=:0.0
$ GENICAM_GENTL64_PATH=/opt/dart-bcon-mipi/lib /opt/pylon6/bin/pylonviewer 2>/dev/null &