How to integrate Azure IoT Edge on OpenSTLinux

Revision as of 10:01, 28 June 2021 by Nathalie Sangouard (talk | contribs) (Reverted edits by Yves Coppeaux (talk) to last revision by Jean-Christophe Trotin)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

1 Article purpose[edit]

The purpose of this article is to explain how to integrate the Microsoft Azure IoT Edge device [1] on OpenSTLinux.

This article explains step by step how to add the Yocto meta-data components needed on OpenSTLinux distribution, and how to configure and build the image.


2 Prerequisites[edit]

You need to have an active Azure subscription, a "Free Trail" subscription is possible for 12 months. The way to do that is described in the Linux Quickstart document[2].

2.1 Hardware prerequisites[edit]


  • STM32MP157C-DK2
STM32MP157C-DK2

For more information about the STM32 discovery board and how to start it up, jump to this section Getting_started/STM32MP1_boards/STM32MP157C-DK2.

2.2 Software prerequisites[edit]

The STM32MP1 Distribution Package must be installed on your host. The process has been verified with the delivery ecosystem release v1.2.0 More info.png. For more information about the OpenSTLinux distribution package go to STM32MP1_Distribution_Package article.

Note that the software customizations have been applied on a (DISTRO: openstlinux-weston, MACHINE: stm32mp1) OpenSTLinux distribution environment, and for a st-image-weston image.

3 Software update with Yoto meta-iotedge and the dependencies[edit]

Info white.png Information
The configuration tested is based on :
meta-iotedge :Yocto thud branch : iotedge v1.0.8
meta-virtualization : Yocto thud branch latest
meta-rust : commit for "Update to rust and cargo version 1.36.0"


1.Get meta-iotedge [3] and the dependencies

cd  [your STM32MP1 Distribution path]/layers/
git clone -b thud https://github.com/Azure/meta-iotedge.git
git clone git://github.com/meta-rust/meta-rust.git
git clone -b thud git://git.yoctoproject.org/meta-virtualization
cd meta-rust
git checkout c5ff05d1e99c1e80844c1673456e2368499918c7 -b INT_AZURE

2.Setup the build configuration

cd [your STM32MP1 Distribution path]
DISTRO=openstlinux-weston MACHINE=stm32mp1 source layers/meta-st/scripts/envsetup.sh

3.Add the meta-iotedge layer and other dependencies yocto layers to the distribution configuration.

cd [your STM32MP1 Distribution path]
bitbake-layers add-layer [your STM32MP1 Distribution path]/meta-rust/
bitbake-layers add-layer [your STM32MP1 Distribution path]/meta-virtualization/
bitbake-layers add-layer [your STM32MP1 Distribution path]/meta-iotedge/

4.Update the configuration to add the new components in your image.

  • Add DISTRO_FEATURES_append = "virtualization" into [your STM32MP1 Distribution path]/layers/meta-st/meta-st-openstlinux/conf/distro/openstlinux-weston.conf
  • Add IMAGE_INSTALL_append += "iotedge-daemon iotedge-cli libiothsm-std docker docker-contrib connman connman-client" into [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1/conf/local.conf
  • Change ROOTFS_PARTITION_SIZE = "763904" to ROOTFS_PARTITION_SIZE = "2097152" in[your STM32MP1 Distribution path]//layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-common-stm32mp.inc file
  • Add CONFIG_EXT4_FS_SECURITY=y into [your STM32MP1 Distribution path]/layers/meta-st/meta-st-stm32mp\recipes-kernel/linux/linux-stm32mp/4.19/fragment-03-systemd.config

3.1 Image build and flash[edit]

Go the article STM32MP1_Distribution_Package for the details about the process to build and flash your image.

To build the image:

In the folder [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1 Execute the command:

PC $>bitbake st-image-weston

4 Execution of the Azure IoT Edge demonstration[edit]

1.Update of the IoT Edge configuration file on the board

vi /etc/iotedge/config.yam
update hostname example with "stm32mp1"

2. Follow the process described on the Microsoft Azure [4] website

5 References[edit]