Problem Description
Field engineers deploying the SIMATIC IOT2050 Basic (MLFB 6ES7647-0BA00-0YA2) frequently encounter a no-boot symptom after inserting a flashed SD card. The STATUS LED stays continuously ON in green instead of blinking, no console output is produced on the debug UART, and the device is unreachable over any of its network interfaces (X1, X2, or the optional WLAN module).
The triggering scenario is reproducible across multiple units:
- An Example Image is written to a micro-SD card using a standard imaging tool (Raspberry Pi Imager, balenaEtcher,
dd, or Win32DiskImager). - The same SD card is inserted into two IOT2050 Basic units in sequence.
- The first unit (older hardware revision) boots normally; the second unit (newer hardware revision) hangs with the LED stuck solid green.
The discrepancy is not caused by a corrupted SD card, an incorrect u-boot environment, or a power supply defect. It is the result of a hardware/firmware version mismatch that manifests only on the newer FS02 (Functional State 02) variant of the Basic.
Affected Hardware and Firmware Identification
Before any corrective action, identify the exact model variant and functional state. Siemens encodes the hardware revision in the device label as a two-digit FS suffix (FS:01, FS:02, FS:04, etc.). On the IOT2050 family the currently documented FS codes are:
| MLFB Number | Variant | Hardware Generation | Functional State |
|---|---|---|---|
6ES7647-0BA00-0YA2 |
IOT2050 Basic | PG1 (original) | FS:01 |
6ES7647-0BA00-0YA2 |
IOT2050 Basic | PG2 (new) | FS:02 |
6ES7647-0BA00-1YA2 |
IOT2050 Advanced | PG1 (original) | FS:01 / FS:03 |
6ES7647-0BA00-1YA2 |
IOT2050 Advanced | PG2 (new) | FS:04 |
Determine the FS of your specific unit from the rating-plate label or by querying the device:
cat /sys/devices/platform/soc/13000000.i2c/i2c-0/0-0040/eeprom 2>/dev/null | hexdump -C | head -20
Or read the production data via dmidecode once a compatible image is running:
sudo dmidecode -t 2 | grep -E "Version|Serial"
Documented firmware releases shipped or referenced on Siemens support and the official meta-iot2050 Yocto layer include:
| Firmware / Image Version | Applicable FS | Notes |
|---|---|---|
| Example Image V1.0.2 | FS:01 only | Initial public release; no PG2 support |
| Example Image V1.1.1 | FS:01 only | Adds firmware update tooling for FS:01 → FS:02-capable |
| Example Image V1.2.1 | FS:01, FS:02, FS:04 | First version with native FS:02 / FS:04 hardware support |
| Example Image V1.2.2 | FS:01, FS:02, FS:04 | Recommended baseline for mixed fleets |
| Firmware V01.00.00 (u-boot/EFI bundle) | FS:01 only | Original BSP firmware |
| Firmware V01.02.01 (u-boot/EFI bundle) | FS:01, FS:02, FS:04 | Required for PG2 hardware |
Root Cause: Hardware Revision vs Image Compatibility
The IOT2050 transitioned from a first-generation hardware platform (PG1) to a second-generation platform (PG2) without a visible model-number change. The MLFB 6ES7647-0BA00-0YA2 covers both PG1 (FS:01) and PG2 (FS:02) units. The two platforms differ in:
-
System-on-Chip (SoC): PG2 integrates a different TI Sitara revision and an updated PMIC power-tree that requires new pinmux and clock initialization in
u-boot. -
EEPROM / board ID: A unique board ID is stored in on-board EEPROM and read by
u-bootto select the correct device tree blob (DTB) at boot time. - Memory training: DDR3L timing parameters on PG2 differ; an FS:01-trained firmware cannot bring up DRAM reliably on PG2.
- Display output: PG2 changes the HDMI/DP PHY routing; legacy device trees cause the kernel to hang during framebuffer initialization.
When an Example Image compiled for FS:01 (such as V1.0.2 or V1.1.1) is inserted into an FS:02 device, the bootloader succeeds in reading the FAT partition and starts the kernel, but the kernel cannot complete the platform initialization and stalls before mounting the root filesystem. The STATUS LED pattern reflects this state.
Compatibility Matrix
The following matrix defines which combinations of firmware, Example Image, and functional state will boot successfully. Use it as a definitive reference when planning a deployment.
| FS State | Firmware V01.00.00 | Firmware V01.02.01 | Image V1.0.2 | Image V1.1.1 | Image V1.2.1 | Image V1.2.2 |
|---|---|---|---|---|---|---|
| FS:01 (Basic PG1) | ✓ | ✓ (after update) | ✓ | ✓ | ✓ | ✓ |
| FS:02 (Basic PG2) | ✗ | ✓ (factory) | ✗ | ✗ | ✓ | ✓ |
| FS:04 (Advanced PG2) | ✗ | ✓ (factory) | ✗ | ✗ | ✓ | ✓ |
✗ entries typically result in a solid green STATUS LED, no kernel console, and no Ethernet link-up on X1. The boot is aborted during board-ID verification or during the device-tree application phase.
STATUS LED Decoding
The front-panel STATUS LED (green/red/yellow tristate) provides the primary diagnostic channel when no console is attached. The decode is documented in the operating instructions shipped with the device.
| Color | State | Meaning |
|---|---|---|
| Off | — | No power or hardware fault before PMIC handshake |
| Green | Slow blink (1 Hz, 50% duty) | u-boot running, kernel boot in progress, OS operational |
| Green | Solid ON | u-boot loaded kernel image but kernel failed to mount root or initialize platform |
| Green | Fast blink (~5 Hz) | Bootloader stage; missing/invalid bootloader configuration |
| Yellow | Solid | Firmware update in progress (do not power-cycle) |
| Red | Solid | Hardware fault (PMIC, EEPROM read failure, watchdog reset) |
| Red | Slow blink | Recovery mode active (bootloader waiting for recovery SD card) |
A solid green LED without blinking after 60+ seconds is the canonical symptom of the FS:01 image on FS:02 hardware mismatch. Capture a console trace through the Micro-USB debug port (/dev/ttyUSB0, 115200 8N1) to confirm.
Resolution Procedure
Three viable resolution paths exist. Choose based on the FS state of each unit in your fleet.
Resolution A — Update FS:01 devices to firmware V01.02.01 and unify on Image V1.2.2
This is the recommended path for mixed FS:01 / FS:02 fleets because the same SD card image can then be used on every device.
- Download Example Image V1.2.2 from the Siemens Industry Online Support portal under entry ID
109758673and write it to a micro-SD card (≥8 GB, Class 10 or better). - Boot an FS:01 device from this card. Confirm normal operation (blinking green LED, SSH access via X1).
- Within the running image, execute the firmware update tool that ships inside the V1.2.2 image to install the bundled firmware V01.02.01 bundle:
sudo iot2050-firmware-update /media/.../firmware_V01.02.01.bin
- Wait for the STATUS LED to turn yellow (update in progress). The unit will auto-reboot when complete (yellow LED off, green blinking).
- Power off, re-insert the same SD card, and verify boot. The same card will now boot both FS:01 and FS:02 hardware.
Resolution B — Use a dedicated V1.2.1 / V1.2.2 image only on FS:02 units
When the FS:01 units must remain on an older, validated image (for example, because of regulatory re-qualification), keep two SD cards:
- SD #1: Image V1.0.2 or V1.1.1 — reserved for FS:01 only.
- SD #2: Image V1.2.1 or V1.2.2 — used on FS:02 and FS:04 only.
Color-code or label the SD cards by FS to prevent accidental swaps on the shop floor.
Resolution C — Reflash an FS:02 device with a freshly written supported image
If the on-board firmware on the FS:02 device itself has been corrupted (for example by an interrupted firmware update), follow the recovery procedure:
- Write the Example Image V1.2.2 to a second SD card.
- Power off the FS:02 unit.
- Hold the recovery button (recessed, behind the front panel — see operating instructions) while applying power.
- Release the button when the LED turns solid red (recovery mode active).
- Insert the recovery SD card and reboot. The bootloader re-flashes firmware V01.02.01 from the card into the on-board SPI flash.
- After re-flash completes (green blinking), reboot normally with the target application image.
Firmware Update Procedure (FS:01 to V01.02.01)
Field engineers upgrading an FS:01 unit for the first time should follow this end-to-end sequence. The firmware update is non-destructive: the application filesystem on the SD card is untouched; only the SPI flash is rewritten.
- Verify the boot image is at least V1.1.1 (the update tool is not present in V1.0.2). If the device is on V1.0.2, write a V1.1.1 image to a temporary SD card and boot from it first.
- Download the firmware bundle
iot2050-firmware-V01.02.01.zipand extractfirmware_V01.02.01.bin. - Copy
firmware_V01.02.01.binto/tmpon the running IOT2050. - Confirm battery-backed RTC clock is set; an invalid date causes the signed-bundle verification to fail:
date
sudo timedatectl set-time "2025-01-15 12:00:00"
- Run the updater with elevated privileges:
sudo /usr/bin/iot2050-firmware-update /tmp/firmware_V01.02.01.bin
- Monitor the LED. Yellow = update in progress, do not power-cycle. Green blink = success.
- After the auto-reboot, verify the new firmware version:
sudo iot2050-firmware-update --version
The command should report V01.02.01. If it still reports V01.00.00, the update did not persist — re-run with the recovery procedure (Resolution C).
Firmware Downgrade Procedure
Downgrades from V01.02.01 back to V01.00.00 are supported only through the bootloader recovery path. There is no in-OS downgrade tool.
- Obtain the legacy firmware bundle from Siemens Support (reference the IOT2050 firmware archive entry on the Industry Online Support portal).
- Write Example Image V1.2.2 to an SD card and place
firmware_V01.00.00.binin the/bootpartition. - Boot the device into recovery mode using the front-panel button.
- The recovery bootloader detects the legacy bundle in
/bootand writes it to SPI flash. - After the green-blink confirmation, remove power, replace the SD card with the desired operating image, and reboot.
SD Card Image Flashing Procedure
To eliminate SD card write issues as a contributing factor, validate each card after flashing:
- Write the image using a bit-exact tool. On Linux:
sudo dd if=iot2050-example-image-V1.2.2.wic of=/dev/sdX bs=4M status=progress conv=fsync
- On Windows, use Raspberry Pi Imager with the "Use custom image" option; checksum-verify after write.
- Mount the first (FAT) partition and confirm the following files exist:
ls /media/$USER/boot
# Expected: MLO, u-boot.img, uEnv.txt, sysfw.itb, *-iot2050-basic.dtb, Image, wic-image-*
- Verify the DTB filename matches your device variant:
iot2050-basic.dtbfor FS:01/FS:02,iot2050-advanced.dtbfor FS:03/FS:04. - Run
syncand remove the card only after the OS reports the write cache flushed.
Verification Steps
After applying Resolution A or C, verify the fix end-to-end:
- Power-cycle the FS:02 unit. Observe STATUS LED transitions: off → fast green blink → slow green blink → solid green on OS ready.
- Connect a serial console (115200 8N1) to the Micro-USB debug port and confirm the kernel prints
Booting Linux on physical CPU 0x0followed by rootfs mount of/dev/mmcblk0p2. - Confirm network reachability on X1 (default DHCP):
ssh root@<dhcp-lease-ip>
uname -a
cat /etc/os-release | grep VERSION
- Verify the firmware version reported by the device matches the expected baseline:
sudo iot2050-firmware-update --version
# Expected: V01.02.01
- Insert the same SD card into the FS:01 unit (after it has been firmware-updated to V01.02.01) and confirm identical boot behavior.
Known Issues and Edge Cases
Beyond the FS/image mismatch root cause, several documented edge cases can mimic or co-occur with the no-boot symptom:
-
60-day reboot hang (issue #440): Devices running continuously for 60+ days may fail to complete a
sudo rebootcommand and require a hard power-cycle. The mitigation is to schedule supervised reboots (cron-drivenreboot) at intervals below the failure threshold, or to apply the latest BSP patch level referenced in the meta-iot2050 issue tracker. See the issue thread on the meta-iot2050 GitHub repository for the current patch status. - RTC battery depletion: A dead CR2032 backup cell causes the bootloader to fall back to a default timestamp that fails the signed-bundle verification on every boot. Replace the cell and re-run the firmware update.
- Industrial SD card wear: Consumer-grade cards with insufficient write endurance may develop bad blocks on the ext4 rootfs partition, producing the same solid-green LED symptom. Replace with an industrial-grade card (e.g., Swissbit, ATP, or Siemens-approved SD card from the catalog).
-
Watchdog false-positive: A user-space service that fails to pet the hardware watchdog will trigger a reset that boots correctly the second time. Confirm by checking
journalctl -b -1forwatchdogentries. - Power supply undervoltage: A 24 V supply sagging below 19 V under load will trip the PMIC and abort boot. Measure at the Phoenix connector under full load.
Preventive Measures for Mixed Fleets
To prevent recurrence across sites:
- Maintain a single baseline image (V1.2.2 or newer) and a single firmware baseline (V01.02.01 or newer) for every IOT2050 Basic or Advanced unit, regardless of FS.
- Log the FS state of every unit at commissioning in your asset database. A two-character field (FS:01, FS:02, FS:03, FS:04) prevents future confusion.
- Use color-coded SD card cases (blue for FS:01, red for FS:02, green for FS:04) to prevent field swaps.
- Schedule firmware baseline audits quarterly against the latest entry on the Siemens Industry Online Support portal for IOT2050.
- Subscribe to firmware release notifications via the Siemens Support RSS feed to be alerted when a new PG2-capable image ships.
What is the difference between FS:01 and FS:02 on the SIMATIC IOT2050 Basic?
FS:01 is the original first-generation hardware (PG1) with the initial SoC and PMIC. FS:02 is the second-generation hardware (PG2) with a revised SoC revision, updated PMIC, and different DDR3L timing. Both share the same MLFB (6ES7647-0BA00-0YA2) and same external connectors; the FS code on the rating plate is the only visible identifier.
Which Example Image version supports the FS:02 hardware?
Example Image V1.2.1 is the first version with native FS:02 (Basic) and FS:04 (Advanced) support. V1.2.2 is the current recommended baseline. Earlier versions (V1.0.2, V1.1.1) will not boot on FS:02 hardware and produce a solid-green STATUS LED with no console output.
Can firmware V01.00.00 be used on an FS:02 device?
No. Firmware V01.00.00 lacks the PG2 board-ID table in u-boot and will not complete the device-tree selection phase on FS:02 hardware. The minimum firmware version for FS:02 is V01.02.01, which is the factory-shipped baseline on new FS:02 units.
How do I upgrade an FS:01 unit to firmware V01.02.01?
Boot the unit from an Example Image V1.1.1 or newer, then run sudo iot2050-firmware-update /tmp/firmware_V01.02.01.bin. The STATUS LED turns yellow during the write and the unit auto-reboots to V01.02.01. Confirm with sudo iot2050-firmware-update --version.
Is it possible to downgrade firmware from V01.02.01 to V01.00.00?
Yes, but only through the bootloader recovery path using the front-panel recovery button and a recovery SD card that contains the legacy bundle. Do not downgrade an FS:02 or FS:04 unit below V01.02.01, because V01.00.00 does not support PG2 hardware and will brick the device.
Why does the STATUS LED stay solid green after inserting an SD card?
A solid green LED without blinking indicates the bootloader successfully loaded the kernel image but the kernel failed to initialize the platform or mount the root filesystem. The most common cause on FS:02 hardware is using an Example Image compiled for FS:01 (V1.0.2 or V1.1.1). Replace the image with V1.2.2 to resolve.