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.
- Robust design for industrial use
- Powerful processor for edge computing tasks
- Multiple connectivity options (Ethernet, USB, serial interfaces)
- Open Debian based OS for various communication protocols
- Expandable with Arduino and S7-1200 G1 SM
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.ioIf 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 afterTo 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 menuOr use kas-container build:
# Example image (includes demos, Node-RED, SM)
./kas-container build kas-iot2050-example.ymlMore 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 cleanFor 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=syncAlternatively, 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/mmcblk0The 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.
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 NOTE: All content of 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.
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.xzBy 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 distro_bootcmdto 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 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