Technexion PICO-IMX7D SOM

Board description

The Technexion PICO-IMX7D is a system-on-module containing a large peripheral set usable for many designs.

The i.MX 7Dual delivers high-performance processing for low-power requirements with a high degree of functional integration. The i.MX 7Dual features an advanced implementation of two ARM®Cortex®-A7 cores, which operate at speeds of up to 1.2 GHz, as well as the ARM® Cortex®-M4 core. The Pico variant is pin-compatible with the Intel® Edison for sensors and low-speed I/O, but also adds additional expansion possibilities for multimedia and connectivity, giving you cutting edge technology that can easily be expanded and implemented for IoT designs.

This integration has been tested with the PICO PI carrier board.



Note that this integration is similar to this one, however the board form-factor is different and this uses the Rocko branch of the Technexion BSP rather than the manifest files provided as part of Mender Hub.

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:

Yocto Project Build Runtime
rocko (2.4) :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

Create a directory for your mender-technexion setup to live in and clone the

meta information.

mkdir mender-technexion && cd mender-technexion

Initialize repo manifest:

repo init -u -b rocko_4.9.y_GA -m imx-4.9.88-2.0.0_ga.xml
mkdir .repo/local_manifests
cd .repo/local_manifests/
cd -

Fetch layers in manifest:

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

Download the wifi firmware

The wifi firmware is not yet in the upstream repos so we need to manually download it and store it in the meta-edm-bsp-release subdirectory.

tar xzvf AP6335_4.2.tgz
mv AP6335_4.2/*/* sources/meta-edm-bsp-release/recipes-kernel/linux-firmware/files/
rm -rf AP6335_4.2/ AP6335_4.2.tgz

tar xzvf AP6212_4.2.tgz
mv AP6212_4.2/*/* sources/meta-edm-bsp-release/recipes-kernel/linux-firmware/files/
rm -rf AP6212_4.2/ AP6212_4.2.tgz

Setup build environment

Initialize the build environment:

WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-fb MACHINE=pico-imx7 BASEBOARD=pi source
cat ../sources/meta-mender-community/meta-mender-nxp/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-nxp/templates/local.conf.append >> conf/local.conf

Building the image

You can now proceed with building an image:

MACHINE=pico-imx7 bitbake core-image-base

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

Using the build output

After a successful build, the images and build artifacts are placed in tmp/deploy/images/pico-imx7/.

  • tmp/deploy/images/pico-imx7/core-image-base-pico-imx7.sdimg

  • tmp/deploy/images/pico-imx7/core-image-base-pico-imx7.mender

The disk image (with .sdimg suffix) is used to provision the device storage for devices without Mender running already. Please proceed to the official documentation on provisioning a new device for steps to do this.

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.

Flash instructions

Initial device provisioning uses the imx_usb utility to present the targets eMMC device as a block device to your build PC. You will need to configure your carrier board for serial download, and then invoke the imx_usb utility as follows:

sudo ./linux/imx_usb pico-imx7d_bootbomb_20170112.imx

At this point a new block device will be present in your system and you can follow the standard Mender instructions for provisioning the SDIMG.


  • 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!

@drewmoseley Hi,

I have issue with source comand:

It looks like something is odd in the file permissions of your source checkout. It looks like the initial error is a permission denied on sources/meta-freescale/EULA.

What does “ls -l . ; ls -l sources/meta-freescale” show?


ls -l . ; ls -l sources/meta-freescale
total 1156
drwxrwxrwx 4 neuberfran neuberfran 4096 abr 6 13:27 AP6212_4.2
drwxrwxrwx 4 neuberfran neuberfran 4096 abr 6 13:27 AP6335_4.2
-rw-r–r-- 1 neuberfran neuberfran 66840 jul 31 15:11 bcm4339a0.hcd
lrwxrwxrwx 1 root root 55 jul 31 15:49 -> sources/meta-edm-bsp-release/tools/
-rw-r–r-- 1 neuberfran neuberfran 541314 jul 31 15:12 fw_bcm4339a0_ag_apsta.bin
-rw-r–r-- 1 neuberfran neuberfran 541314 jul 31 15:12 fw_bcm4339a0_ag.bin
lrwxrwxrwx 1 root root 19 jul 31 15:49 README -> sources/base/README
lrwxrwxrwx 1 root root 35 jul 31 15:49 README-TechNexion-BSP -> sources/meta-edm-bsp-release/README
lrwxrwxrwx 1 root root 55 jul 31 15:49 setup-environment -> sources/meta-edm-bsp-release/tools/
drwxr-xr-x 14 root root 4096 jul 31 15:49 sources
total 116
drwxr-xr-x 2 root root 4096 jul 31 15:49 classes
drwxr-xr-x 3 root root 4096 jul 31 15:49 conf
drwxr-xr-x 2 root root 4096 jul 31 15:49 custom-licenses
drwxr-xr-x 10 root root 4096 jul 31 15:49 dynamic-layers
-rw-r–r-- 1 root root 33570 jul 31 15:49 EULA
-rw-r–r-- 1 root root 955 jul 31 15:49 README
drwxr-xr-x 26 root root 4096 jul 31 15:49 recipes-bsp
drwxr-xr-x 4 root root 4096 jul 31 15:49 recipes-connectivity
drwxr-xr-x 5 root root 4096 jul 31 15:49 recipes-core
drwxr-xr-x 5 root root 4096 jul 31 15:49 recipes-devtools
drwxr-xr-x 8 root root 4096 jul 31 15:49 recipes-dpaa
drwxr-xr-x 8 root root 4096 jul 31 15:49 recipes-dpaa2
drwxr-xr-x 15 root root 4096 jul 31 15:49 recipes-extended
drwxr-xr-x 4 root root 4096 jul 31 15:49 recipes-fsl
drwxr-xr-x 16 root root 4096 jul 31 15:49 recipes-graphics
drwxr-xr-x 9 root root 4096 jul 31 15:49 recipes-kernel
drwxr-xr-x 9 root root 4096 jul 31 15:49 recipes-multimedia
drwxr-xr-x 5 root root 4096 jul 31 15:49 recipes-virtualization
drwxr-xr-x 2 root root 4096 jul 31 15:49 SCR
drwxr-xr-x 2 root root 4096 jul 31 15:49 scripts
drwxr-xr-x 2 root root 4096 jul 31 15:49 wic

@drewmoseley I think solved with sudo chown $USER:$USER ~ -R

Wnhy I need cat oommand? (issue below):

The cat commands add the default Mender settings for this board to your configuration.

I solved with cat ./ and not cat …/

what about MACHINE=pico-imx7 bitbake core-image-base and not MACHINE=pico-imx7d bitbake core-image-base

this correct ? (pls)

pico-imx7 or pico-imx7d or imx7d-pico ?

@drewmoseley oH No. I need review a cat …/ commands:

neuberfran@ubuntu:~/mender-technexion$ MACHINE=pico-imx7 bitbake core-image-base
ERROR: Unable to start bitbake server
ERROR: Server log for this session (/home/neuberfran/mender-technexion/bitbake-cookerdaemon.log):
— Starting bitbake server pid 25739 at 2020-07-31 17:58:33.401022 —
ERROR: Layer directory ‘/home/neuberfran/sources/poky/meta’ does not exist! Please check BBLAYERS in /home/neuberfran/mender-technexion/conf/bblayers.conf


I used pico-imx7 as documented on this page. In the rocko branch of meta-edm-bsp-release that is the only machine file that exists.

The imx7d-pico is a different machine working on the warrior branch and contributed by @jorisoffouga

I don’t know what pico-imx7d is.

What branch are you building that causes the error? It’s not a matter of removing things from bblayers.conf. As the error indicates, you have to select one by setting an appropriate PREFERRED_VERSION_linux-firmware in your local.conf. But I didn’t see that in the branch tested here so I’m guessing you are using a different branch or at least that there are new commits on the rocko branch since this page was created.


@drewmoseley This article said (your article) "Technexion PICO-IMX7D SOM. I have this SOMwith BT and wifi and with baseboard. I tried this tutorial Technexion PICO-PI-IMX7 but not work. Nothing appears on monitor TFT, picocom or using putty

I think that in local.conf (his) there is MACHINE ?? = “qemux86”
and MACHINE? = “imx7d-pico”
. and has no references to u-boot. That may have been it.

You said What branch are you building that causes the error?

How can I know this ?

I’m just following the steps in this tutorial!

@drewmoseley @mirzak @jorisoffouga

Please, help me with this issue in this tutorial: Technexion PICO-PI-IMX7

after saveenv command.
=> mmc list
=> part list mmc 0
“## Unknown partition table type 0”
=> part list mmc 1
MMC Device 1 not found

dfu 0 mmc 0
Couldn’t find part #1 on mmc device #0
DFU entities configuration failed!
(partition table does not match dfu_alt_info?)
dfu - Device Firmware Upgrade

dfu <USB_controller> [list]

  • device firmware upgrade via <USB_controller>
    on device , attached to interface

    [list] - list available alt settings