Difference between revisions of "How to integrate Azure IoT Edge on OpenSTLinux"

[quality revision] [checked revision]
m (Hardware prerequisites)
m (Software update with Yoto meta-iotedge and the dependencies)
 

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/STM32MP157x-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 v3.0.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 Yocto meta-iotedge and the dependencies[edit]

Info white.png Information
The configuration tested is based on on iotedge 1.1.3 version :
meta-iotedge : branch dunfell  : commit 6840cf2afb51b4f2c535a05d5635736652f664f7a03c2f1c089f498658fbcec79a9a417212aae52d 
meta-virtualization : branch dunfell  : commit 502b81ae3ae11bf4d889b7eff6239fb9e6c55994 
meta-rust : branch master : commit e4d25b98083bcecb94df6ee189a165d63ede7f3d7ff669d8cedd83a2d3efb73073a63b0a7efffddc


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

PC $>cd  [your STM32MP1 Distribution path]/layers/
PC $>git clone -b dunfell https://github.com/Azure/meta-iotedge.git
PC $>git clone git://github.com/meta-rust/meta-rust.git
PC $>git clone -b dunfell git://git.yoctoproject.org/meta-virtualization
PC $>cd meta-iotedge
PC $>git checkout a03c2f1c089f498658fbcec79a9a417212aae52d -b dunfell
PC $>cd meta-virtualization
PC $>git checkout  502b81ae3ae11bf4d889b7eff6239fb9e6c55994 -b dunfell     
PC $>cd meta-rust
PC $>git checkout e4d25b98083bcecb94df6ee189a165d63ede7f3d7ff669d8cedd83a2d3efb73073a63b0a7efffddc -b INT_AZURE

2.Setup the build configuration

PC $>cd [your STM32MP1 Distribution path]
PC $>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.

PC $>cd [your STM32MP1 Distribution path]
PC $>bitbake-layers add-layer [your STM32MP1 Distribution path]/meta-rust/
PC $>bitbake-layers add-layer [your STM32MP1 Distribution path]/meta-virtualization/
PC $>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 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
  • delete "inherit python3targetconfig" in layers/meta-virtualization/recipes-extended/libvirt/libvirt-python.inc

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

Board $>vi /etc/iotedge/config.yamyaml
update hostname example with "stm32mp1"
update connectionString with the primary connection string found in your Azure IoT HUB

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

5 References[edit]


==Article purpose==
The purpose of this article is to explain how to integrate the '''Microsoft Azure IoT Edge device''' <ref>https://docs.microsoft.com/en-us/azure/iot-edge/</ref> 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.

{{InternalInfo|
* W2016.5: YCO: it is a simple demonstration of a simulator sensor device with our STM32MP1 board, we use also only the physical ethernet port connexion, we didn't manage any certificat, purpose is to add the software component needed in our OpenSTLinux distribution.}}

==Prerequisites==
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<ref name=azure-iot-edge> https://docs.microsoft.com/en-us/azure/iot-edge/quickstart-linux/</ref>. 

===Hardware prerequisites===
{{InternalInfo|W2014.4 : YCO : We are able to integrate the Azure IoT Edge on STM32MP157C-EV1 also}} 

* STM32MP157C-DK2
 [[File: STM32MP157C-DK2_angle2.jpg|thumb|upright=2|center|link=|STM32MP157C-DK2]]
For more information about the STM32 discovery board and how to start it up, jump to this section [[Getting_started/STM32MP1_boards/STM32MP157x-DK2]].

===Software prerequisites===
The STM32MP1 Distribution Package must be installed on your host. The process has been verified with the delivery  {{EcosystemRelease | revision=3.0.0}}. 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.

==Software update with YotoYocto meta-iotedge and the dependencies==
{{Info| The configuration tested is based on iotedge 1.1.3 version :
 meta-iotedge : branch dunfell  : commit 6840cf2afb51b4f2c535a05d5635736652f664f7a03c2f1c089f498658fbcec79a9a417212aae52d meta-virtualization : branch dunfell  : commit 502b81ae3ae11bf4d889b7eff6239fb9e6c55994  meta-rust : branch master : commit e4d25b98083bcecb94df6ee189a165d63ede7f3d7ff669d8cedd83a2d3efb73073a63b0a7efffddc}}<br>

1.Get '''meta-iotedge''' <ref>https://github.com/Azure/meta-iotedge/tree/dunfell</ref> and the dependencies

 {{PC$}}cd  [your STM32MP1 Distribution path]/layers/
 {{PC$}}git clone -b dunfell https://github.com/Azure/meta-iotedge.git
 {{PC$}}git clone git://github.com/meta-rust/meta-rust.git
 {{PC$}}git clone -b dunfell git://git.yoctoproject.org/meta-virtualization
 {{PC$}}cd meta-iotedge
 {{PC$}}git checkout a03c2f1c089f498658fbcec79a9a417212aae52d -b dunfell
 {{PC$}}cd meta-virtualization
 {{PC$}}git checkout  502b81ae3ae11bf4d889b7eff6239fb9e6c55994 -b dunfell     
 {{PC$}}cd meta-rust
 {{PC$}}git checkout e4d25b98083bcecb94df6ee189a165d63ede7f3d7ff669d8cedd83a2d3efb73073a63b0a7efffddc -b INT_AZURE

2.Setup the build configuration

 {{PC$}}cd [your STM32MP1 Distribution path]
 {{PC$}}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.

 {{PC$}}cd [your STM32MP1 Distribution path]
 {{PC$}}bitbake-layers add-layer [your STM32MP1 Distribution path]/meta-rust/
 {{PC$}}bitbake-layers add-layer [your STM32MP1 Distribution path]/meta-virtualization/
 {{PC$}}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 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
* delete '''"inherit python3targetconfig"''' in layers/'''meta-virtualization/recipes-extended/libvirt/libvirt-python.inc'''
===Image build and flash===
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

==Execution of the Azure IoT Edge demonstration==
1.Update of the '''IoT Edge''' configuration file on the board
 {{Board$}}vi /etc/iotedge/config.yamyaml

 update '''hostname''' example with "stm32mp1"update '''connectionString''' with the primary connection string found in your Azure IoT HUB
2. Follow the process described on the '''Microsoft Azure''' <ref name=azure-iot-edge> https://docs.microsoft.com/en-us/azure/iot-edge/quickstart-linux/</ref> website

== References==<references />

<noinclude>

[[Category:How to run use cases with expansions]]
{{PublicationRequestId | 17215 | 2020-08-28}}</noinclude>
(2 intermediate revisions by 2 users not shown)
Line 23: Line 23:
 
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.
 
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.
   
==Software update with Yoto meta-iotedge and the dependencies==
+
==Software update with Yocto meta-iotedge and the dependencies==
{{Info| The configuration tested is based on :
+
{{Info| The configuration tested is based on iotedge 1.1.3 version :
  meta-iotedge : branch dunfell  : commit 6840cf2afb51b4f2c535a05d5635736652f664f7
+
  meta-iotedge : branch dunfell  : commit a03c2f1c089f498658fbcec79a9a417212aae52d
  meta-virtualization : branch dunfell  : commit 502b81ae3ae11bf4d889b7eff6239fb9e6c55994
+
  meta-virtualization : branch dunfell  : commit 502b81ae3ae11bf4d889b7eff6239fb9e6c55994  
  meta-rust : branch master : commit e4d25b98083bcecb94df6ee189a165d63ede7f3d}}
+
  meta-rust : branch master : commit 7ff669d8cedd83a2d3efb73073a63b0a7efffddc}}
 
<br>
 
<br>
 
1.Get '''meta-iotedge''' <ref>https://github.com/Azure/meta-iotedge/tree/dunfell</ref> and the dependencies
 
1.Get '''meta-iotedge''' <ref>https://github.com/Azure/meta-iotedge/tree/dunfell</ref> and the dependencies
   
 
  {{PC$}}cd  [your STM32MP1 Distribution path]/layers/
 
  {{PC$}}cd  [your STM32MP1 Distribution path]/layers/
  {{PC$}}git clone -b dunfell https://github.com/Azure/meta-iotedge.git
+
  {{PC$}}git clone https://github.com/Azure/meta-iotedge.git
 
  {{PC$}}git clone git://github.com/meta-rust/meta-rust.git
 
  {{PC$}}git clone git://github.com/meta-rust/meta-rust.git
  {{PC$}}git clone -b dunfell git://git.yoctoproject.org/meta-virtualization
+
  {{PC$}}git clone git://git.yoctoproject.org/meta-virtualization
  +
{{PC$}}cd meta-iotedge
  +
{{PC$}}git checkout a03c2f1c089f498658fbcec79a9a417212aae52d -b dunfell
  +
{{PC$}}cd meta-virtualization
  +
{{PC$}}git checkout  502b81ae3ae11bf4d889b7eff6239fb9e6c55994 -b dunfell   
 
  {{PC$}}cd meta-rust
 
  {{PC$}}cd meta-rust
  {{PC$}}git checkout e4d25b98083bcecb94df6ee189a165d63ede7f3d -b INT_AZURE
+
  {{PC$}}git checkout 7ff669d8cedd83a2d3efb73073a63b0a7efffddc -b INT_AZURE
   
 
2.Setup the build configuration
 
2.Setup the build configuration
Line 66: Line 70:
 
==Execution of the Azure IoT Edge demonstration==
 
==Execution of the Azure IoT Edge demonstration==
 
1.Update of the '''IoT Edge''' configuration file on the board
 
1.Update of the '''IoT Edge''' configuration file on the board
  {{Board$}}vi /etc/iotedge/config.yam
+
  {{Board$}}vi /etc/iotedge/config.yaml
 
  update '''hostname''' example with "stm32mp1"
 
  update '''hostname''' example with "stm32mp1"
  +
update '''connectionString''' with the primary connection string found in your Azure IoT HUB
   
 
2. Follow the process described on the '''Microsoft Azure''' <ref name=azure-iot-edge> https://docs.microsoft.com/en-us/azure/iot-edge/quickstart-linux/</ref> website
 
2. Follow the process described on the '''Microsoft Azure''' <ref name=azure-iot-edge> https://docs.microsoft.com/en-us/azure/iot-edge/quickstart-linux/</ref> website