# Toradex Colibri iMX7 Dual 512MB / Colibri iMX7 Solo 256MB

**URL:** <https://hub.mender.io/t/toradex-colibri-imx7-dual-512mb-colibri-imx7-solo-256mb/81>\
**Category:** Yocto Project\
**Tags:** yocto, rocko, imx7, nxp, toradex\
**Created:** [October 8, 2018, 12:06pm UTC](https://hub.mender.io/t/toradex-colibri-imx7-dual-512mb-colibri-imx7-solo-256mb/81 "2018-10-08T12:06:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mirzak](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/mirzak/32/2056_2.png) [@mirzak](https://hub.mender.io/u/mirzak)\
**Post date:** [October 8, 2018, 12:06pm UTC](https://hub.mender.io/t/toradex-colibri-imx7-dual-512mb-colibri-imx7-solo-256mb/81/1 "2018-10-08T12:06:31Z")

</div>

The official [Mender documentation](https://docs.mender.io/) explains how Mender works. This is simply a board-specific complement to the official documentation.

# Board description

The Colibri iMX7S and Colibri iMX7D are SODIMM-sized System on Modules (SoMs) based on the NXP i.MX 7Solo and i.MX 7Dual SoCs respectively.

Arm Cortex-A7 cores are highly optimized for energy efficiency while delivering high performance. Advanced security features make the Colibri iMX7 a great choice for connected devices.

Typical applications include power-sensitive edge computing devices, IoT gateways, medical devices, industrial automation and many more. The NXP i.MX 7 uses an asymmetric, heterogeneous multicore processing system with a Cortex-M4 core that runs at up to 200MHz.

 ![102958-colibriimx7d-top-view](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/3b0fff0a1f13fa8bbe1fa1cccffb847b5198e917.jpeg)

URL: [https://www.toradex.com/computer-on-modules/colibri-arm-family/nxp-freescale-imx7](https://www.toradex.com/computer-on-modules/colibri-arm-family/nxp-freescale-imx7)  
Wiki: [Colibri iMX7 | Toradex Developer Center](https://developer.toradex.com/products/colibri-imx7)

# 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](https://wiki.yoctoproject.org/wiki/Releases?target=_blank):

| 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](https://docs.mender.io/system-updates-yocto-project/board-integration/bootloader-support/u-boot/integration-checklist?target=_blank) has been verified.

# Getting started

## Prerequisites

- A supported Linux distribution and dependencies installed on your workstation/laptop as described in the [Yocto Mega Manual](https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#detailed-supported-distros)
  - NOTE. Instructions depend on which Yocto version you intend to use.

- Google repo tool [installed](https://hub.mender.io/t/google-repo/58/2) and in your `PATH` .

## Configuring the build

### Setup Yocto environment

Set the Yocto Project branch you are building for:

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

```

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

```auto
mkdir mender-toradex && cd mender-toradex

```

Initialize repo manifest:

```auto
repo init -u https://github.com/mendersoftware/meta-mender-community \
           -m meta-mender-toradex-nxp/scripts/manifest-toradex.xml \
           -b ${BRANCH}

```

Fetch layers in manifest:

```auto
repo sync

```

## Setup build environment

Initialize the build environment:

```auto
source setup-environment toradex-nxp

```

**NOTE!** You need to accept the Freescale EULA at ‘../sources/meta-freescale/EULA’. Please read it and in case you accept it, add:

```
ACCEPT_FSL_EULA = "1" 

```

in your local.conf.

### Configure Mender server URL (optional)

This section is not required for a successful build but images that are generated by default are only suitable for usage with the Mender client in [Standalone deployments](https://docs.mender.io/architecture/standalone-deployments?target=_blank), due to lack of server configuration.

You can edit the `conf/local.conf` file to provide your Mender server configuration, ensuring the generated images and Mender Artifacts are connecting to the Mender server that you are using. There should already be a commented section in the generated `conf/local.conf` file and you can simply uncomment the relevant configuration options and assign appropriate values to them.

Build for Hosted Mender:

```auto
# To get your tenant token:
# - log in to https://hosted.mender.io
# - click your email at the top right and then "My organization"
# - press the "COPY TO CLIPBOARD"
# - assign content of clipboard to MENDER_TENANT_TOKEN
#
MENDER_SERVER_URL = "https://hosted.mender.io"
MENDER_TENANT_TOKEN = "<copy token here>"

```

### Building the image

You can now proceed with building an image:

```auto
MACHINE=colibri-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:

- `tmp/deploy/images/colibri-imx7/core-image-base-colibri-imx7.ubimg`
- `tmp/deploy/images/colibri-imx7/core-image-base-colibri-imx7.mender`
- `tmp/deploy/images/colibri-imx7/u-boot-nand.imx`

The disk image (with `.ubimg` suffix) is used to provision the device storage for devices without Mender running already.

The `u-boot-nand.imx` file is used to provision the device with a Mender compatible U-Boot.

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](https://docs.mender.io/overview/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 [standalone mode](https://docs.mender.io/artifact-creation/standalone-deployment).

#### Flash instructions

Based on the output artifacts described above we need to flash the `u-boot-nand.imx` and `core-image-base-colibri-imx7.ubimg` separately to fully provision an device and for it to work with Mender.

Prerequisites:

- tftp server running on your PC
- device connected on the same network as your PC with access to an DHCP server
- serial console access

In my case the `tftp` server directory is setup as `/srv/tftp`, and this is what I will use in the examples but the location might be different on other distributions.

Copy `ubiimg` to `tftp` server directory:

```auto
cp tmp/deploy/images/colibri-imx7/core-image-base-colibri-imx7.ubimg /srv/tftp

```

Copy `u-boot-nand.imx` to `tftp` server directory:

```auto
cp tmp/deploy/images/colibri-imx7/u-boot-nand.imx /srv/tftp

```

Connect to your device serial console port using your virtual terminal application of choice and halt the device in the U-Boot prompt. You should see the following:

```auto
Colibri iMX7 #

```

The following commands are executed on the device U-Boot prompt.

**NOTE**! Replace `192.168.1.122` with the IP address of your PC where the `tftp` server is running.

Transfer `u-boot-nand.img` to RAM:

```auto
dhcp 192.168.1.122:u-boot-nand.imx

```

Write `u-boot-nand.img` to the on-board FLASH:

```auto
nand erase.part u-boot1 && nand write $loadaddr u-boot1 $filesize

```

Transfer `core-image-base-colibri-imx7.ubimg` to RAM:

```auto
dhcp 192.168.1.122:core-image-base-colibri-imx7.ubimg

```

Flash `ubimg` to on-board FLASH:

```auto
nand erase.part ubi && nand write $loadaddr ubi $filesize

```

# References

- The Mender integration for Toradex Colibri iMX7 Dual 512MB / Colibri iMX7 Solo 256MB can be found in [meta-mender](https://github.com/mendersoftware/meta-mender/tree/rocko/meta-mender-toradex-nxp)
- The Toradex Colibri iMX7 Dual 512MB / Colibri iMX7 Solo 256MB template files can be found in [meta-mender-community](https://github.com/mendersoftware/meta-mender-community/tree/rocko/meta-mender-toradex-nxp).
- This was tested using a [Iris Carrier board](https://developer.toradex.com/products/iris-carrier-board)

* * *

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

---

<div class="post-metadata">

**Author:** ![Markus](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@Markus](https://hub.mender.io/u/Markus)\
**Post date:** [April 16, 2021, 10:13am UTC](https://hub.mender.io/t/toradex-colibri-imx7-dual-512mb-colibri-imx7-solo-256mb/81/2 "2021-04-16T10:13:24Z")

</div>

Thanks for this post! But what changes I have to do for Colibri iMX6 DualLite 512MB?

---

<div class="post-metadata">

**Author:** ![drewmoseley](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/drewmoseley/32/47_2.png) [@drewmoseley](https://hub.mender.io/u/drewmoseley)\
**Post date:** [April 16, 2021, 1:42pm UTC](https://hub.mender.io/t/toradex-colibri-imx7-dual-512mb-colibri-imx7-solo-256mb/81/3 "2021-04-16T13:42:23Z")

</div>

That platform will require similar changes as these. You can see the docs on [Yocto based integrations here](https://docs.mender.io/system-updates-yocto-project/board-integration).

---

<div class="post-metadata">

**Author:** ![Markus](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@Markus](https://hub.mender.io/u/Markus)\
**Post date:** [April 28, 2021, 9:14am UTC](https://hub.mender.io/t/toradex-colibri-imx7-dual-512mb-colibri-imx7-solo-256mb/81/4 "2021-04-28T09:14:42Z")

</div>

Do you know where to find a working example for the Colibri-imx6, because I’m a rookie in Yocto, Mender and the Colibri-imx6.

---

<div class="post-metadata">

**Author:** ![drewmoseley](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/drewmoseley/32/47_2.png) [@drewmoseley](https://hub.mender.io/u/drewmoseley)\
**Post date:** [April 28, 2021, 2:10pm UTC](https://hub.mender.io/t/toradex-colibri-imx7-dual-512mb-colibri-imx7-solo-256mb/81/5 "2021-04-28T14:10:44Z")

</div>

We don’t have a Mender-integration for that platform. You can use the standard Toradex provided builds but they do not have Mender. We do offer a [fee-based integration service](https://mender.io/support-and-services/board-integration) if that is of interest.

Drew
