# Voipac iMX93 Industrial Development Kit

**URL:** <https://hub.mender.io/t/voipac-imx93-industrial-development-kit/7316>\
**Category:** Yocto Project\
**Tags:** voipac, imx93\
**Created:** [November 11, 2024, 9:32am UTC](https://hub.mender.io/t/voipac-imx93-industrial-development-kit/7316 "2024-11-11T09:32:00Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![MarekBelisko](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/marekbelisko/32/33_2.png) [@MarekBelisko](https://hub.mender.io/u/MarekBelisko)\
**Post date:** [November 11, 2024, 9:32am UTC](https://hub.mender.io/t/voipac-imx93-industrial-development-kit/7316/1 "2024-11-11T09:32:00Z")

</div>

# Board description

This embedded system with i.MX93 ARM® Cortex®-A55 core, real-time Cortex-M33 co-processor, and the industry’s first dedicated neural processing unit (NPU) ARM Ethos™-U65 was designed as a development platform for the iMX93 Industrial Module, which includes all of the layout and technologically intensive parts, thus when used as part of the final device, significantly reduces its time-to-market.

The kit features all of the essential high-speed interfaces such as eMMC NAND Flash, LP-DDR4 RAM, LVDS, USB together with many industrial must-haves including dual native CAN, dual Gigabit Ethernet, analog-digital converters (ADCs), and further supports numerous communication peripherals like WiFi, Bluetooth, or Audio - all of them soldered right on the iMX93 Industrial Computer on Module (COM).

The peripheral-rich iMX Development Baseboard was enhanced to present the functionality, connectivity and performance of the iMX93 Industrial COM, as well as of 2 other industrially-focused interchangeable COMs. It does not only provide flexible development environment, but offers numerous design features or connectivity options by its own.

 ![iMX93-Industrial-Development-Kit](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/2X/6/66d5208699779d465e72ac0ace5ab8c6339f93a2.jpeg)

URL: [iMX93 Industrial Development Kit | VOIPAC TECHNOLOGIES s.r.o.](https://www.voipac.com/imx93-industrial-development-kit-max)  
Wiki: [iMX93 Industrial Development Kit | Wiki page](https://wiki.voipac.com/index.php?title=iMX93_Industrial_Development_Kit)  
GitHub: [iMX93 Industrial Development Kit | GitHub page](https://github.com/voipac/yocto-imx-voipac)

# 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):

TODO: Update table below with Yocto Project versions tested & result. Sample data:

| Yocto Project | Build | Runtime |
| --- | --- | --- |
| scarthgap (5.0) | :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/client-installation/integration-checklist) 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://docs.yoctoproject.org/)
  - NOTE. Instructions depend on which Yocto version you intend to use.

- Siemens kas tool [installed](https://hub.mender.io/t/using-kas-to-reproduce-your-yocto-builds/6020).

## Configuring the build

### Setup Yocto environment

Clone repo

```auto
git clone https://github.com/voipac/yocto-imx-voipac.git

```

Checkout mender branch

```auto
cd yocto-imx-voipac
git checkout origin/imx93-mender

```

### 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/artifact-creation/standalone-deployment?target=_blank), due to lack of server configuration.

You can edit the `kas/mender.yml` 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
build_image.sh

```

or if you want to use docker container for building run:

```auto
build_image_container.sh

```

### Using the build output

After a successful build, the images and build artifacts are placed in `tmp/deploy/images/imx93-voipac/`.

The disk image (with `.sdimg.zst` 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/system-updates-yocto-project/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/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).

### Flashing instructions

For flashing to eMMC we need to use `uuu` utility which must be installed on your host computer ([mfgtools](https://github.com/nxp-imx/mfgtools). Also due issue with [emmc boot](https://hub.mender.io/t/imx93-board-support-with-emmc-boot/7247/7) we split flashing to 2 parts. First we use imx-boot without mender integration and the we replace imx-boot in eMMC with one with mender integration. All is prepared in convenient script [imx93 mender flashing](https://github.com/voipac/yocto-imx-voipac/tree/imx93-mender/flashing)

#### Copy image + imx-boot to custom directory

```auto
cp yocto-imx-voipac/build/tmp/deploy/images/imx93-voipac/voipac-image-imx93-voipac.sdimg.zst yocto-imx-voipac/flashing
cp yocto-imx-voipac/build/tmp/deploy/images/imx93-voipac/imx-boot yocto-imx-voipac/flashing

# make copy of mender imx-boot
cd yocto-imx-voipac/flashing
cp -f imx-boot imx-boot-flash-mender

```

#### Prepare board to serial download mode

Setup S1 pin to Serial download mode and connect imx93 board to you PC using USB-C cable.

#### Run flashing script

```auto
./flash-mender.sh

```

After all is done you can unplugged USB-C and power on your board with mender integrated.

# References

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