Zeus Yocto release for i.MX8MQ

Published on March 2, 2020

YoctoWe are pleased to announce a new Yocto release Zeus for our Nitrogen8M SBC. Below you will find the download link for the image as well as detailed instructions for the build including a features set.

For the Impatient

You can download the Yocto image from here: As usual, you'll need to register on our site and agree to the EULA because it contains NXP content. Since the Nitrogen8M board has no SD card slot, you need to program this image via fastboot or using U-Boot USB Mass Storage Gadget. Instructions on programming the SW can be found below: programming-emmc-on-i-mx8 However, you can still flash the image onto an SD card and use an SD Card to USB adapter or flash to a USB stick via zcat and dd under Linux: ~$ zcat *boundary-image*.wic.gz | sudo dd of=/dev/sdX bs=1M In addition, you can use the etcher utility to flash the SD Card or USB stick via Windows or Linux: balena-etcher

Build procedure

This image uses the zeus branch of our boundary-bsp-platform repository. To build the image, we recommend using a Docker Container so that you can build with a repeatable and stable build environment. Otherwise, you’ll need these packages installed as well as this repo tool that can be installed like this: ~$ sudo apt-get install repo Then create your build directory and initialize everything. ~$ mkdir ~/yocto-imx8m && cd yocto-imx8m ~/yocto-imx8m$ repo init -u https://github.com/boundarydevices/boundary-bsp-platform -b zeus ~/yocto-imx8m$ repo sync Setup the environment for building, in this example we will be building our boundary-wayland distro for nitrogen8m. ~/yocto-imx8m$ MACHINE=nitrogen8m DISTRO=boundary-wayland . setup-environment build Now bitbake boundary-image-multimedia-full which is equivalent to fsl-image-multimedia-full with Boundary-specific packages such as BD-SDMAC support ~/yocto-imx8m/build$ bitbake boundary-image-multimedia-full After some time this should build the same image as above. The image file will deploy to tmp/deploy/images/{MACHINE}/boundary-image-multimedia-full-{MACHINE}.wic.gz.

Features list

The image built above contains the following components:
  • GPU Vivante libraries 6.2.4p4.0
  • VPU Hantro libraries v1.11.0
  • GStreamer1.0 1.14.4 for i.MX
  • Weston 5.0.0 for i.MX
  • qcacld-2.0 Wi-Fi driver for BD-SDMAC
  • BlueZ 5.50 with support for BD-SDMAC
The next sub-sections will describe how to test most features.

Display support

Please make sure your platform includes the latest U-Boot for i.MX8M: This version of U-Boot supports the display configuration, allowing to use any of the following displays: Note that we've noticed that the NXP HDMI driver is picky when it comes to custom display timings (sometimes refuses to set the clock). So if you are experiencing any issue with HDMI, please try entering the following commands in U-Boot in order to force the use of standard timings: => setenv cmd_custom 'setenv bootargs $bootargs drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin' => saveenv

GPU acceleration

In order to test the GPU, you can either use the standard Weston EGL programs or the ones provided by Vivante. Here are a few examples: root@nitrogen8m:~# weston-simple-egl & root@nitrogen8m:~# cd /opt/viv_samples/vdk/ root@nitrogen8m:/opt/viv_samples/vdk# ./tutorial7

Nitrogen8M GPU

VPU decoding

The i.MX8MQ processor can decode videos with a resolution up to 4K. Here is an example using GPlay tool: root@nitrogen8m:~# wget http://linode.boundarydevices.com/videos/SKYFALL-4K.mp4 root@nitrogen8m:~# gplay-1.0 --video-sink=glimagesink SKYFALL-4K.mp4


Camera input

Camera MIPI-CSI input can be checked using our OV5640 MIPI with GStreamer: root@nitrogen8m:~# gst-launch-1.0 v4l2src device=/dev/video0 ! \ video/x-raw,width=1280,height=720 ! glimagesink



Once the eth0 interface is up, you can use iperf3 to check Ethernet performances: root@nitrogen8m:~# iperf3 -c Connecting to host, port 5201 [ 5] local port 32880 connected to port 5201 [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.09 GBytes 938 Mbits/sec 0 sender [ 5] 0.00-10.04 sec 1.09 GBytes 932 Mbits/sec receiver


Same goes for the Wi-Fi that can be tested just as easily: root@nitrogen8m:~# nmcli d wifi connect <network_name> password <password> root@nitrogen8m:~# iw wlan0 link Connected to a4:3e:51:08:54:f6 (on wlan0) SSID: Jabu_5GHz freq: 5240 RX: 3243 bytes (31 packets) TX: 9117 bytes (48 packets) signal: -79 dBm tx bitrate: 15.0 MBit/s MCS 0 40MHz short GI root@nitrogen8m:~# ping google.com -Iwlan0 PING google.com ( 56 data bytes 64 bytes from seq=0 ttl=55 time=3.470 ms ...


For products with a Silex bluetooth module, you'll be able to connect using our handy silex-uart script with the following commands: root@nitrogen8mm:~# /usr/share/silex-uart/silex-uart.sh start Starting silex-uart rfkill on/off cycle. silex found root@nitrogen8mm:~# hciconfig hci0 up root@nitrogen8mm:~# hcitool scan Scanning ... 11:22:DE:AD:BE:EF    Some Device
If you have any issues, please email support@boundarydevices.com