The Siemens IOT2050 is an industrial-grade Internet of Things (IoT) gateway designed for edge computing applications. It serves as a versatile platform for connecting operational technology (OT) with information technology (IT) in industrial environments.
For more information or to purchase, please visit: SIMATIC IOT2050 - Siemens SiePortal.
This Isar layer contains recipes, configuration, and other artifacts specific to the Debian-based IOT2050 product. It is accompanied by a lean core BSP and modular, opt-in layers plus KAS fragments for feature and variant enablement (e.g., Node-RED, examples, SM, Hailo AI, etc.).
Before building the system, you will need to install Docker on the build host. For example, under Debian Linux:
sudo apt install docker.io
If you want to run Docker as a non-root user, you need to add your user to the docker group:
sudo usermod -aG docker $USER # may need to re-login after
To build the example image with EIO subsystem support, which is required for the IOT2050 SM variant, the EIO firmware & binaries must be downloaded from Siemens Industry Online Support and extracted to meta-sm/recipes-app/iot2050-eiofsd/files/bin before the building.
Interactive menu:
./kas-container menu
Or use kas-container build:
# Example image (includes demos, Node-RED, SM)
./kas-container build kas-iot2050-example.yml
More composition patterns: build-config ยง3
After the build completes, the final image is located at: build/tmp/deploy/images/iot2050/iot2050-image-example-iot2050-debian-iot2050.wic
To clean the build result:
./kas-container --isar clean
For a more detailed reference, please visit build-config.
Under Linux, insert an unused SD card. Assuming the SD card is assigned the device /dev/mmcblk0, use dd to copy the image to it. For example:
sudo dd if=build/tmp/deploy/images/iot2050/iot2050-image-example-iot2050-debian-iot2050.wic \
of=/dev/mmcblk0 bs=4M oflag=sync
Alternatively, install the bmap-tools package and run the following command, which is generally faster and safer:
sudo bmaptool copy build/tmp/deploy/images/iot2050/iot2050-image-example-iot2050-debian-iot2050.wic /dev/mmcblk0
The example image starts with the IP 192.168.200.1 preconfigured on the first Ethernet interface and uses DHCP on the other. You can use SSH to connect to the system.
The BSP image does not configure the network. If you want to SSH into the system, you can use the root terminal via UART to configure the IP address using ifconfig and then connect via SSH.
NOTE: The default username is root. You are required to change the default password upon first login.
This installation flow is provided by the example image. It is not available in the base/minimal image or the SWUpdate image variants.
During the very first boot of the image from an SD card or USB stick, you can request installation to the eMMC. To do this, press the USER button while the status LED is blinking orange during that first boot. Hold the button for at least 5 seconds to start the installation.
NOTE: All content on the eMMC will be overwritten by this procedure!
The ongoing installation is signaled by a fast-blinking status LED. Wait for several minutes until the LED stops blinking and the device reboots to the eMMC. You can safely remove the SD card or USB stick at that point.
The installation can also be triggered automatically by creating the file /etc/install-on-emmc on the vanilla image by mounting it under Linux and executing, e.g., touch <mountpoint>/etc/install-on-emmc.
For the example image, make sure <mountpoint> is the Linux rootfs partition (label rootfs). Do not place the file on the EFI partition or on the BOOT partition, because those partitions do not contain /etc and will not trigger the installation.
In other words, for the example image the removable medium contains three partitions:
BOOT partition for EFI Boot Guardrootfs)The trigger file must be created on the rootfs partition before the first boot from that SD card or USB stick.
Starting from V01.05.x, the updated firmware tarball is integrated into the /usr/share/iot2050/fwu/ directory by default. To update the U-Boot firmware, execute the following command:
iot2050-firmware-update /usr/share/iot2050/fwu/IOT2050-FW-Update-PKG-<Version>.tar.xz
By default, the boot loader will pick the first bootable device. If that device may no longer fully start, you can select an alternative boot device in the U-Boot shell. Attach a USB-UART adapter to X14, connect it to a host PC and open a terminal program on that port. Reset the device and interrupt the boot when it counts down ("Hit any key to stop autoboot"). Then type
=> setenv boot_targets mmc0
=> run bootcmd
to boot from the microSD card. Use usb0 for the first USB mass storage device.
NOTE: This selection is not persistent. The boot loader will fall back to its default boot order after reset.
Legend: โ
= implicit / already included in example image & SWUpdate images, โ = optional fragment, ๐งฉ = descriptor (top-level KAS file) | Type / Feature | Default Contents / Purpose | How to Enable / Build | Extends With | |----------------|-----------------------------|-----------------------|--------------| | ๐งฉ Example image | Demos, Node-RED, SM variant bundled | kas-iot2050-example.yml | Hailo, LXDE, Docker, SDK, secure boot, QEMU | | ๐งฉ Example image (SWUpdate A/B) | Example image + dual rootfs (A/B) | kas-iot2050-swupdate.yml | Same as example (larger footprint) | | ๐งฉ Example image (minimal HW enablement) | Core BSP only; lean EFI baseline | kas/iot2050.yml | example.yml, node-red.yml, sm.yml, others | | ๐งฉ Boot firmware descriptor | TF-A, OP-TEE, U-Boot, SPL artifacts (no rootfs) | kas-iot2050-boot.yml | Secure boot (signing), provisioning | | ๐งฉ Firmware update package | Boot chain update bundle (.tar.xz) for field updates | kas-iot2050-fwu-package.yml | N/A | | QEMU descriptor | Emulated target config | Chain :kas-iot2050-qemu.yml after image | Adds on top of minimal or example | | โ
Example demos (fragment) | Reference apps & sample content | example.yml or implicit | Combine with minimal image | | โ
Node-RED (fragment) | Flow runtime + curated nodes | node-red.yml or implicit | Combine with minimal image | | โ
SM variant (fragment) | Sensors, extended IO services | sm.yml or implicit | Combine with minimal image | | โ Hailo AI (fragment) | Hailo8 runtime & integration | hailo.yml | Demos, minimal, example | | โ LXDE desktop (fragment) | Lightweight desktop environment | lxde.yml | GUI builds (example/minimal) | | โ Docker / containers (fragment) | Container runtime & helpers | docker.yml | Example/minimal variants | | โ SDK (fragment) | Cross-toolchain + sysroot | sdk.yml or menu | Any image variant | | โ QEMU (fragment usage) | Emulation add-on (alternate view) | :kas-iot2050-qemu.yml | Minimal or example builds |
See also composition reference: build-config.
Note: Boot firmware & firmware update descriptors build only boot chain components (no rootfs image). Combine image descriptors separately when you need full system images.
Additional infrastructure / reproducibility / provisioning fragments (RT kernel, package locking, RPMB setup, upstream kernel, mirror override): see Fragment Catalog.
Index landing page: docs index.
For the complete architecture rationale and migration, see: layer-architecture.
MIT โ see COPYING.MIT