# Technexion PICO-IMX7D SOM

**URL:** <https://hub.mender.io/t/technexion-pico-imx7d-som/451>\
**Category:** Yocto Project\
**Tags:** yocto, rocko, nxp\
**Created:** [April 4, 2019, 2:48pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451 "2019-04-04T14:48:59Z")\
**Posts on this page:** 13\
**Page:** 1

<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 4, 2019, 2:48pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/1 "2019-04-04T14:48:59Z")

</div>

# 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.](https://shop.technexion.com/picopifl.html)

[PICO-IMX7D SOM](https://d15z4ngi7vchau.cloudfront.net/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/p/i/picoimx7-revb1-topweb_5.jpg)

URL:[https://shop.technexion.com/system-on-modules/pico/pico-modules/pico-imx7d-10-r10-e08-9377.html](https://shop.technexion.com/system-on-modules/pico/pico-modules/pico-imx7d-10-r10-e08-9377.html)

Note that this integration is similar to [this one](https://hub.mender.io/t/technexion-pico-pi-imx7/136), 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](https://hub.mender.io).

# 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/devices/integrating-with-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

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

meta information.

```auto
mkdir mender-technexion && cd mender-technexion

```

Initialize repo manifest:

```auto
repo init -u https://github.com/TechNexion/edm-yocto-bsp.git -b rocko_4.9.y_GA -m imx-4.9.88-2.0.0_ga.xml
mkdir .repo/local_manifests
cd .repo/local_manifests/
wget https://raw.githubusercontent.com/mendersoftware/meta-mender-community/rocko/scripts/mender-no-setup.xml
cd -

```

Fetch layers in manifest:

```auto
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.

```auto
wget ftp://download.technexion.net/development_resources/Download/wifi_firmware/Broadcom/AP6335_4.2.tgz
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

wget ftp://download.technexion.net/development_resources/Download/wifi_firmware/Broadcom/AP6212_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:

```auto
WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-fb MACHINE=pico-imx7 BASEBOARD=pi source edm-setup-release.sh
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:

```auto
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](https://docs.mender.io/artifacts/provisioning-a-new-device?target=_blank) 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](https://docs.mender.io/architecture/mender-artifacts?target=_blank) 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](https://docs.mender.io/architecture/standalone-deployments?target=_blank).

#### 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](https://www.technexion.com/support/knowledgebase/boot-configuration-settings-for-pico-baseboards/), 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](https://docs.mender.io/artifacts/provisioning-a-new-device?target=_blank) for provisioning the SDIMG.

# References

- The official [Mender documentation](https://docs.mender.io/) 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!_

---

<div class="post-metadata">

**Author:** ![neuberfran](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/neuberfran/32/369_2.png) [@neuberfran](https://hub.mender.io/u/neuberfran)\
**Post date:** [July 31, 2020, 7:03pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/2 "2020-07-31T19:03:39Z")

</div>

@drewmoseley Hi,

I have issue with **source edm-setup-release.sh** comand:

 ![issueWithSourceCmd](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/16ec9a6b4a56f97f0a7be6ec4886cc6aa73c9f9b.png)

---

<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:** [July 31, 2020, 7:27pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/3 "2020-07-31T19:27:22Z")

</div>

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?

Drew

---

<div class="post-metadata">

**Author:** ![neuberfran](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/neuberfran/32/369_2.png) [@neuberfran](https://hub.mender.io/u/neuberfran)\
**Post date:** [July 31, 2020, 8:12pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/4 "2020-07-31T20:12:29Z")

</div>

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 edm-setup-release.sh -\> sources/meta-edm-bsp-release/tools/edm-setup-release.sh  
-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/setup-environment.sh  
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

---

<div class="post-metadata">

**Author:** ![neuberfran](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/neuberfran/32/369_2.png) [@neuberfran](https://hub.mender.io/u/neuberfran)\
**Post date:** [July 31, 2020, 8:40pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/5 "2020-07-31T20:40:12Z")

</div>

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

Wnhy I need cat oommand? (issue below):

 ![new issue ?](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/eed25419da8b52add0afbfab4dfd3f160d44aafc.png)

---

<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:** [July 31, 2020, 8:43pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/6 "2020-07-31T20:43:05Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![neuberfran](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/neuberfran/32/369_2.png) [@neuberfran](https://hub.mender.io/u/neuberfran)\
**Post date:** [July 31, 2020, 8:47pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/7 "2020-07-31T20:47:02Z")

</div>

> [@drewmoseley](#):
>
> `MACHINE=pico-imx7 bitbake core-image-base`

I solved with cat ./ and not cat …/

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

this correct ? (pls)

---

<div class="post-metadata">

**Author:** ![neuberfran](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/neuberfran/32/369_2.png) [@neuberfran](https://hub.mender.io/u/neuberfran)\
**Post date:** [July 31, 2020, 8:57pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/8 "2020-07-31T20:57:23Z")

</div>

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

 ![question is imx7d-pico](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/a2aa9d28d12ca0cb311cb6b2e87884cdec1f981e.png)

---

<div class="post-metadata">

**Author:** ![neuberfran](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/neuberfran/32/369_2.png) [@neuberfran](https://hub.mender.io/u/neuberfran)\
**Post date:** [July 31, 2020, 9:00pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/9 "2020-07-31T21:00:12Z")

</div>

@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

neuberfran@ubuntu:~/mender-technexion$

 ![missing directory](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/2c56beb776b377e2aced4922b4bdfd8fa4e13d6f.png) ![missing file](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/ef8008f77a26364ab91e64564c659b0e8c1afd02.png)

 ![ISSUE BUILD](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/2d6434066c624ce4662ce9c2f8a09d0a239d8410.png)

---

<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:** [July 31, 2020, 10:20pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/10 "2020-07-31T22:20:59Z")

</div>

I used pico-imx7 as documented on this page. In the [rocko branch of meta-edm-bsp-release](https://github.com/TechNexion/meta-edm-bsp-release/tree/rocko_4.9.88-2.0.0_GA/conf/machine) that is the only machine file that exists.

The imx7d-pico is a different machine working on the warrior branch and [contributed](https://hub.mender.io/t/technexion-pico-pi-imx7/136) 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.

Drew

---

<div class="post-metadata">

**Author:** ![neuberfran](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/neuberfran/32/369_2.png) [@neuberfran](https://hub.mender.io/u/neuberfran)\
**Post date:** [July 31, 2020, 10:36pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/11 "2020-07-31T22:36:49Z")

</div>

@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](https://hub.mender.io/t/technexion-pico-pi-imx7/136) 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.

> <https://gist.github.com/neuberfran/15d3f2f7eb57e1cdd354221627fde6a0>

---

<div class="post-metadata">

**Author:** ![neuberfran](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/neuberfran/32/369_2.png) [@neuberfran](https://hub.mender.io/u/neuberfran)\
**Post date:** [July 31, 2020, 11:07pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/12 "2020-07-31T23:07:03Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![neuberfran](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/neuberfran/32/369_2.png) [@neuberfran](https://hub.mender.io/u/neuberfran)\
**Post date:** [August 2, 2020, 3:29pm UTC](https://hub.mender.io/t/technexion-pico-imx7d-som/451/13 "2020-08-02T15:29:00Z")

</div>

@drewmoseley @mirzak @jorisoffouga

Please, help me with this issue in this tutorial: [Technexion PICO-PI-IMX7](https://hub.mender.io/t/technexion-pico-pi-imx7/136)

**after saveenv command.**  
**=\> mmc list**  
FSL\_SDHC: 0 (eMMC)  
**=\> 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

Usage:  
dfu \<USB\_controller\> [list]

- device firmware upgrade via \<USB\_controller\>  
on device , attached to interface  
  
[list] - list available alt settings

 ![help](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/551d5dd714e2f3f635332c542a8ddd1e209f0e88.png)
