Overview
The SIMATIC IOT2050 is Siemens' industrial IoT gateway based on the TI AM6528 processor platform. It ships in two hardware variants — IOT2050 Basic (1 GB RAM, 8 GB eMMC, no Arduino shield) and IOT2050 Advanced (2 GB RAM, 16 GB or 32 GB eMMC, Arduino shield connector). Both can run SIMATIC Industrial OS, a hardened Debian-based operating system with the SIMATIC IOT2050 BSP pre-integrated, or SIMATIC IOT2050 IED-OS for Industrial Edge deployments.
This article covers the end-to-end field procedure for installing SIMATIC Industrial OS onto an IOT2050, including the mandatory UBoot upgrade that precedes an IED-OS v3.0 install via the IED-SS v3.0 service stick. It also documents two recurring install failures — the no-POST / no-ping-192.168.200.1 symptom caused by a passive DisplayPort-to-HDMI adapter, and the 52% setup freeze during the date/time stage — together with their fixes.
service-stick-image-industrial-os-iot2050-IPC-2.1_S0013.img.gz is a service stick (SS) image intended to boot from USB and install onto eMMC or SD card. Do not dd this image directly onto the boot medium you intend to use as the runtime storage device unless the procedure explicitly states that target.Prerequisites
| Item | Specification | Notes |
|---|---|---|
| SIMATIC IOT2050 | Basic (6ES7647-0BA00-0YA2) or Advanced (6ES7647-0BA00-1YA2) | Confirm variant before downloading image |
| Service stick image |
service-stick-image-industrial-os-iot2050-IPC-2.1_S0013.img.gz (or newer) |
Verify SHA-256 against Siemens release notes |
| USB 2.0/3.0 stick | ≥ 8 GB, USB 2.0 recommended for older boot loaders | Used as live installer |
| Target media | SD card (slot on Basic/Advanced) or onboard eMMC | eMMC is factory-installed; SD is external |
| Display | DP/HDMI monitor with active DP-to-HDMI adapter | Passive adapters will not enumerate on the IOT2050 DP output |
| Keyboard | USB HID keyboard | Required for the interactive setup wizard |
| Ethernet cable | Cat 5e or better | For default IP 192.168.200.1 (X1 P1) |
| Power supply | 24 V DC via the 4-pin connector | Observe polarity and grounding per manual |
| Image writer host | Linux/macOS host with dd, bmaptool, or Etcher |
Windows hosts require Win32 Disk Imager or Rufus (DD mode) |
UBoot Pre-Install Requirements (IED-OS v3.0 Path)
Before installing SIMATIC IOT2050 IED-OS v3.0 through the SIMATIC IOT2050 IED-SS v3.0 service stick, the on-board UBoot bootloader must be upgraded first. This prerequisite is listed in the official Siemens device release notes and is non-negotiable — skipping it will leave the device unable to boot the new image or, in some configurations, brick the boot path until the UBoot is reflashed through the recovery procedure.
UBoot upgrade is performed from a previous SIMATIC Industrial OS installation or from the recovery shell of the service stick itself. The standard flow is:
- Boot the device from the existing SIMATIC Industrial OS (or attach the UART console if the device is unbootable).
- Copy the signed UBoot binary to
/tmp/or fetch it from the package feed. - Run the UBoot update helper shipped with the BSP:
# Example UBoot upgrade command (verify exact path/version in your release)
sudo /usr/sbin/iot2050-uboot-update \
--image /tmp/u-boot-iot2050-<version>.bin \
--target /dev/mmcblk0boot0
Verify the new UBoot version from the serial console during the next cold boot — the banner prints the UBoot build tag before the boot menu.
Step-by-Step Installation of SIMATIC Industrial OS
1. Prepare the Service Stick
Download the official image and verify the SHA-256 checksum against the value published in the Siemens Industry Online Support (SIOS) download entry.
# Linux/macOS
sha256sum service-stick-image-industrial-os-iot2050-IPC-2.1_S0013.img.gz
# Decompress and write to USB stick
gunzip -k service-stick-image-industrial-os-iot2050-IPC-2.1_S0013.img.gz
sudo dd if=service-stick-image-industrial-os-iot2050-IPC-2.1_S0013.img \
of=/dev/sdX bs=4M status=progress conv=fsync
sync
/dev/sdX with the actual device node for your USB stick. Confirm with lsblk or diskutil list. Writing to the wrong device will destroy the host data.Alternatively, use bmaptool with the accompanying .bmap file shipped by Siemens — this is significantly faster and validates the image block-by-block.
sudo bmaptool copy service-stick-image-industrial-os-iot2050-IPC-2.1_S0013.img.gz /dev/sdX
2. Configure Boot Source
Insert the service stick into one of the USB 2.0 ports on the IOT2050 (USB 3.0 ports are on the Advanced variant; either works for the installer). Power-cycle the device and enter the UBoot menu by pressing Esc or Space during the early boot window (roughly the first 3 seconds after power-on).
Set the boot order so the USB stick is tried first. If you cannot enter UBoot (no console visible), see the troubleshooting section below — this is the classic symptom of a passive DisplayPort adapter.
U-Boot> setenv boot_targets usb0 mmc1 mmc0 pxe dhcp
U-Boot> saveenv
U-Boot> reset
3. Run the Installer
The service stick boots into a live SIMATIC Industrial OS environment with an install-iot2050 helper (or the Industrial OS first-boot wizard, depending on image variant). The wizard:
- Detects the target media (eMMC
/dev/mmcblk0or SD/dev/mmcblk1). - Partitions the target.
- Extracts the root filesystem and kernel.
- Installs UBoot to the boot partition of the target media.
- Prompts for hostname, user, locale, and time zone.
- Reboots into the freshly installed OS.
Default management IP after install: 192.168.200.1/24 on the X1 P1 port. Verify connectivity from a directly attached host:
# Host side
sudo ip addr add 192.168.200.2/24 dev eth0
ping 192.168.200.1
4. Post-Install Validation
| Check | Expected | Command |
|---|---|---|
| Power LED | Solid green | Visual |
| STAT LED | Solid green (after boot) or heartbeat | Visual |
| Management ping | 192.168.200.1 responds | ping 192.168.200.1 |
| Service port SSH | Port 22 open after setup | ssh [email protected] |
| Board identifier | Reads IOT2050 model string | cat /sys/firmware/devicetree/base/model |
| eMMC wear | Brand new, low P/E count | sudo mmc extcsd read /dev/mmcblk0 | grep -i life |
Troubleshooting Matrix
| Symptom | Root Cause | Fix |
|---|---|---|
| Power LED on, STAT LED on for ~20 s then off, no ping on 192.168.200.1, no console output | Passive DisplayPort-to-HDMI adapter cannot negotiate the IOT2050's DP++ output. The SoC boots, but the framebuffer init fails and the installer stalls silently before bringing up network. | Replace with an active DP-to-HDMI adapter (chip-based converter, not a pin-out dongle). |
| First-boot wizard freezes at 52% during "Setting up date and time" | Real-time clock (RTC) is not battery-backed or NTP is unreachable on the management VLAN during initial sync. | Provide a working internet/NTP path or set the system clock manually from the wizard before the 30 s auto-continue timer; alternatively, complete setup offline and run systemctl restart systemd-timesyncd after manual time setting. |
| Service stick not detected | USB 3.0 stick on a USB 3.0 port on Basic variant, or stick formatted with non-FAT boot sector | Use a USB 2.0 stick in a USB 2.0 port; re-image using dd not a "quick format" tool. |
| Device boots but reports old kernel | UBoot not upgraded before IED-OS v3.0 install | Perform the UBoot upgrade procedure per the SIMATIC IOT2050 release notes, then re-install. |
| Image install fails with "no space left on device" | Target chosen is the running USB stick itself | Confirm target disk in the wizard before proceeding; the service stick is /dev/sda, eMMC is /dev/mmcblk0, SD is /dev/mmcblk1. |
| Wrong image variant downloaded (e.g. IPC image used on IOT2050) | Siemens ships separate images for the IPC227G / IPC277E and the IOT2050. They are not interchangeable. | Re-download the IOT2050-specific image from the SIOS entry tied to your device's MLFB. |
Active vs Passive DP-to-HDMI Adapters: Why It Matters on IOT2050
The SIMATIC IOT2050 exposes a DisplayPort output that supports both DP-native and HDMI signaling through DP++. A passive adapter only re-routes the physical pins and assumes the source is DP++ dual-mode. The IOT2050's TI AM6528 SoC may or may not emit the dual-mode adaptor signature, depending on the UBoot build and the connected sink's DDC. When the adapter cannot resolve, the framebuffer is never populated, the UBoot splash is suppressed, and the device appears to hang — exactly the "STAT LED on for 20 s then off" behaviour reported in the field.
An active adapter contains a level shifter / protocol converter (e.g. MegaChips STDP2600, Parade PS186, or equivalent) and presents itself as a native HDMI sink to the source. This is the configuration Siemens documents as supported.
| Property | Passive Adapter | Active Adapter |
|---|---|---|
| Internal converter chip | None | Yes (DP-to-HDMI level shifter) |
| Cost | ~$3–8 | ~$15–40 |
| IOT2050 DP++ compat | Inconsistent / fails | Reliable |
| Typical symptom on fail | No console, no splash, but SoC boots | n/a |
| Recommended for IOT2050 install | No | Yes |
Resolving the 52% First-Boot Freeze
The first-boot wizard of SIMATIC Industrial OS 2.x for IOT2050 has a documented sensitivity around the date/time step. The wizard times out after approximately 30 seconds and attempts to set the clock via NTP; if NTP is unreachable (no default route, captive portal, or air-gapped network), the call hangs and the progress bar stalls at 52%. Workarounds, in order of preference:
- Provide NTP reachability. Connect X1 P2 to a network with internet (or a local NTP server) before the first boot.
- Skip the auto-continue. Press the wizard's "Manual" date/time entry within the 30-second window and supply a valid time and date. This bypasses the NTP probe.
- Post-install correction. Allow the install to finish after a long wait (the wizard will eventually time out and proceed), then run:
sudo timedatectl set-time "2026-01-15 12:00:00"
sudo timedatectl set-ntp true
sudo systemctl restart systemd-timesyncd
timedatectl status
If the wizard never completes even after the NTP timeout (variant-specific behaviour depending on the exact iot2050-firstboot package version shipped with S0013), re-image the target media and retry with the active DP adapter and NTP reachability both satisfied.
Working with the meta-iot2050 BSP
Custom images, kernel patches, and the canonical UBoot recipe live in the siemens/meta-iot2050 Yocto layer. Pull this layer into a Poky / Isar build when you need to:
- Build a custom SIMATIC Industrial OS image with additional packages.
- Rebuild UBoot from source (e.g. for security updates not yet packaged).
- Add board-specific device trees for non-standard I/O expansion.
- Reproduce a known-good image byte-for-byte for fleet rollouts.
# Add the layer to your Yocto build
git clone https://github.com/siemens/meta-iot2050.git
cd meta-iot2050
git checkout <branch-matching-your-yocto-release>
# In your bblayers.conf
BBLAYERS += "${TOPDIR}/../meta-iot2050"
meta-iot2050 that matches the Yocto / Isar release documented for your Industrial OS version. Mixing branches is the most common cause of "recipe not found" and kernel/U-Boot ABI mismatches.Verification Checklist Before Declaring Success
- Console: Active DP-to-HDMI adapter → full UBoot menu and wizard output visible.
- UBoot version: Matches the version required by the target IED-OS release per the device release notes.
- Boot media: Either eMMC or SD, not the USB service stick.
-
Network:
ping 192.168.200.1from the directly attached host succeeds with < 1 ms latency. - Wizard completion: First-boot wizard reached 100% and rebooted into a login prompt.
-
Time sync:
timedatectl statusreportsSystem clock synchronized: yes. -
SSH:
ssh [email protected]returns the Industrial OS banner. - LED state: STAT LED in steady-state pattern documented in the operating manual.
Field-Proven Caveats
-
Image naming conventions vary by Siemens release cycle. A filename like
service-stick-image-industrial-os-iot2050-IPC-2.1_S0013.img.gzembeds the OS major version (2.1), the build sequence (S0013), and the device class. Always cross-check the SIOS download entry title and the release notes before flashing — a similar-looking image for the IPC127E or IPC227G will not boot on the IOT2050. - The UBoot update is destructive to the boot partition only. It does not touch the root filesystem, but a power loss during the update bricks the board from eMMC. Always perform the UBoot upgrade with a stable supply and, preferably, an attended console session.
- The "STAT on for 20 s then off" symptom is misleading. 20 seconds corresponds to UBoot's USB enumeration window and the kernel's first network bring-up. If no link is detected on X1 P1 or no console is present, the kernel may still be alive and reachable over serial (via the X2 service UART, header on the board) — connect a 3.3 V UART cable at 115200 8N1 to confirm before assuming a brick.
-
Do not rely on the LED pattern alone to decide whether the IOT2050 is booting. The pattern depends on the Industrial OS version and the configured LED trigger (
heartbeat,default-on, etc.).
Document Reference Index
- SIMATIC IOT2050 device release notes — UBoot / IED-OS pairing, known issues.
- siemens/meta-iot2050 — Official Yocto BSP layer for kernel, UBoot, and device trees.
Why does my IOT2050 show the Power LED on and STAT LED on for 20 s then off, with no ping on 192.168.200.1?
The SoC is booting and UBoot is enumerating USB, but the framebuffer fails because your DisplayPort-to-HDMI adapter is passive. Replace it with an active DP-to-HDMI adapter that contains a level-shifter chip — this is the most common root cause and the device will boot normally once a console display is established.
Do I really need to upgrade UBoot before installing SIMATIC IOT2050 IED-OS v3.0?
Yes. The official IOT2050 device release notes require the UBoot to be upgraded first when moving to IED-OS v3.0 via the IED-SS v3.0 service stick. Skipping this step can leave the device unbootable from the new image or break the boot menu entirely.
The first-boot wizard freezes at 52% during "Setting up date and time." What now?
The wizard is waiting on NTP. Provide NTP reachability on X1 P2 before first boot, or press "Manual" and enter the date/time within the 30-second auto-continue window. If you missed it, let the install finish (it will eventually time out) and run timedatectl set-ntp true && systemctl restart systemd-timesyncd from a shell.
Can I use the SIMATIC Industrial OS image written for an IPC on the IOT2050?
No. Siemens ships dedicated images per device class — the IPC227G / IPC277E images are not interchangeable with the IOT2050. Always download the image whose filename contains iot2050 and matches your device's MLFB (6ES7647-0BA00-0YA2 Basic or 6ES7647-0BA00-1YA2 Advanced).
Where can I find the official SIMATIC IOT2050 release notes and BSP source?
The official device release notes (including UBoot / IED-OS pairing and known issues) are published at the Siemens Industrial Edge documentation portal, and the Yocto / Isar BSP layer is hosted at the siemens/meta-iot2050 GitHub repository.