Board description

The DART-MX8M offers an ideal solution for embedded systems that require high-end multimedia applications in a small form factor, as well as portable and battery operated products.

This tiny 30mm x 55mm ARM SoM is based on NXP i.MX8M Quad 1.5GHz ARM Cortex-A53 plus 266MHz Cortex-M4. The high multimedia performance spec encompasses 4K video HEVC/H265/H264/VP9 decode with HDR, high-quality audio, 4K display support, 2D/3D graphics acceleration, with a variety of interfaces and connectivity options: Certified dual-band Wi-Fi 802.11 ac/a/b/g/n, BT 4.2/BLE, GbE, dual USB3, dual PCIe and UART.

The DART-MX8M SoM provides a pin2pin scalable option to the DART-MX8M-MINI based on NXP’s i.MX8M Mini 1.8GHz Single/Quad-core Cortex-A53 plus 400MHz Cortex-M4 real-time processor with integrated video encode and decode acceleration, lower power consumption and higher CPU performance.

The evaluation kit comes with a VAR-DT8MCustomBoard and a 7" Capacitive touch LCD.


Test results

The Yocto Project releases in the table below have been tested by the Mender community. Please update it if you have tested this integration on other Yocto Project releases:

SD Card Root Filesystem

Yocto Project Build Runtime
sumo (2.5) :test_works: :test_works:

eMMC Root Filesystem

Yocto Project Build Runtime
sumo (2.5) :test_works: :test_works:

Build Means that the Yocto Project build using this Mender integration completes without errors and outputs images.
Runtime Means that Mender has been verified to work on the board. For U-Boot-based boards, the integration checklist has been verified.

Getting started


  • A supported Linux distribution and dependencies installed on your workstation/laptop as described in the Yocto Mega Manual
    • NOTE. Instructions depend on which Yocto version you intend to use.
  • Google repo tool installed and in your PATH.

Configuring the build

Setup Yocto environment

Set the Yocto Project branch you are building for:

# set to your branch, make sure it is supported (see table above)
export BRANCH="sumo"

Create a directory for your mender-variscite setup to live in and clone the
meta information.

mkdir mender-variscite && cd mender-variscite

Initialize repo manifest:

repo init -u https://github.com/varigit/variscite-bsp-platform.git -b fsl-$BRANCH -m imx-4.14.78-1.0.0_ga-var01.xml                                                                                                            
mkdir .repo/local_manifests
cd .repo/local_manifests/
wget https://raw.githubusercontent.com/mendersoftware/meta-mender-community/$BRANCH/scripts/mender-no-setup.xml
cd -

Fetch layers in manifest:

repo sync
cd .repo/local_manifests/
ln -sf ../../sources/meta-mender-community/scripts/mender-no-setup.xml .
cd -

Determine root filesystem media

The Variscite DART-MX8M platform supports running U-Boot directly from the following media:

  • SD-Card
  • eMMC

The root filesystem can be stored on any of the following media:

  • SD-Card
  • eMMC

Note that eMMC has not been fully tested for the DART-M8XM. There are issues updating U-Boot on our test hardware.

Set the shell variable for your desired root filesystem media:

export MEDIA="sdcard"
export MEDIA="emmc"

Setup build environment

Initialize the build environment:

MACHINE=imx8m-var-dart DISTRO=fslc-xwayland . var-setup-release.sh build
cat ../sources/meta-mender-community/meta-mender-variscite/templates/bblayers.conf.append >> conf/bblayers.conf
cat ../sources/meta-mender-community/templates/local.conf.append >> conf/local.conf
cat ../sources/meta-mender-community/meta-mender-variscite/templates/local.conf.append >> conf/local.conf
cat ../sources/meta-mender-community/meta-mender-variscite/templates/local-${MEDIA}.conf.append >> conf/local.conf

Building the image

You can now proceed with building an image:

bitbake core-image-base

Replace core-image-base with your desired image target.

Using the build output

SD Card

Provision an SD Card with the built above. WARNING, make sure you use the correct device node as the of= parameter to avoid overwriting the wrong device:

sudo dd if=tmp/deploy/images/imx8m-var-dart/core-image-base-imx8m-var-dart.sdimg of=<SDCARD-DEVICE-NODE>

Remove the SD Card from your build host and insert it into the target. Configure your board to boot from SD Card by moving the Boot Select switch (also labeled as SW7 ) to the SD position. Now turn on power to the board and it will boot from the SDCard and Mender will connect to the server configured in your local.conf file.


Using either the above built SDCard Yocto image or the Variscite i.MX8M recovery SD card, boot your system off of SD. Transfer the following files from your build PC to the target board with a USB drive:

  • tmp/deploy/images/imx8m-var-dart/imx-boot-imx8m-var-dart-sd.bin
  • tmp/deploy/images/imx8m-var-dart/core-image-base-imx8m-var-dart.sdimg

Assuming the USB drive is mounted on the target at /mnt, run the following commands:

dd if=/mnt/core-image-base-imx8m-var-dart.sdimg of=/dev/mmcblk0 bs=8M
echo 0 > /sys/block/mmcblk0boot0/force_ro
dd if=/mnt/imx-boot-imx8m-var-dart-sd.bin of=/dev/mmcblk0boot0 seek=66

Then change the Boot Select switch (also labeled as SW7 ) to the eMMC position and power cycle your board.

On the other hand, if you already have Mender running on your device and want to deploy a rootfs update using this build, you should use the Mender Artifact files, which have .mender suffix. You can either deploy this Artifact in managed mode with the Mender server (upload it under Releases in the server UI) or by using the Mender client only in Standalone deployments.


  • The Variscite imx8m-var-dart template files can be found in meta-mender-community.
  • The official Mender documentation explains how Mender works. This is simply a board-specific complement to the official documentation.

If this post was useful to you, please press like, or leave a thank you note to the contributor who put valuable time into this and made it available to you. It will be much appreciated!

1 Like