SIMATIC IOT2000 Series Hardware Reference
The SIMATIC IOT2000 family comprises two industrial IoT gateways built on Intel Quark (x86) SoC architecture and shipped with a custom Yocto-based Linux image. Both SKUs share the same Arduino Uno R3-compatible shield interface, a single 10/100 Mbit Ethernet port, two USB 2.0 host ports, and a 24 V DC power input.
| Parameter | IOT2020 | IOT2040 |
|---|---|---|
| CPU | Intel Quark x1020D, 400 MHz, single core | Intel Quark x1020D, 400 MHz, single core |
| RAM | 512 MB DDR3 | 1 GB DDR3 |
| Internal Flash | microSD card only | 8 GB eMMC + microSD |
| Arduino Shield Pins | Yes (3.3 V tolerant via level shifter) | Yes |
| Ethernet | 1x RJ45 10/100 | 1x RJ45 10/100 |
| USB | 2x USB 2.0 Type-A | 2x USB 2.0 Type-A |
| Serial Console | 1x RS232/RS485 via Arduino | 1x RS232/485 + 1x RS232 dedicated |
| Operating Temp | 0 to 50 °C | -20 to +60 °C |
| Typical Use | Prototype / education / lab | Industrial / cabinet mount |
| Article Number | 6ES7647-0AA00-0YA2 | 6ES7647-0AA00-1YA2 |
Firmware V2.1.3 Image and Bundled Software Stack
Firmware V2.1.3 is one of the last released example images for the IOT2000 series and ships the following software versions out of the box:
| Component | Version (V2.1.3 Image) | Notes |
|---|---|---|
| Kernel | Linux 4.4.13-yocto-standard | Yocto Poky 2.1.3 (Krogoth branch) |
| Node.js | v4.6.2 (LTS) | Hard requirement for the bundled Node-RED |
| Node-RED | 0.15.2 | Listens on TCP 1880 (default) |
| node-red-contrib-firebase | 1.1.1 | Installable via Palette Manager |
| node-red-dashboard | 2.4.0 | UI on /ui path |
| WiFi support | connman + wpa_supplicant | Only with compatible USB dongle |
| OPC UA server | Prosys SDK demo | Optional PLC connectivity |
| S7 node | node-red-contrib-s7 1.0.0 | Talk to S7-1200 / S7-1500 PLCs |
The image is delivered as a writable .wic file (~250 MB) and must be flashed to the microSD card (IOT2020) or to the microSD / eMMC (IOT2040) using tools such as Win32DiskImager, balenaEtcher, or dd on Linux. Siemens provides the image and SHA-256 checksums via the SIMATIC IOT2000 example image support entry.
Problem Description: Firebase Nodes Will Not Initialise
Symptoms reported on firmware V2.1.3 with the example image installed unmodified:
- The
node-red-contrib-firebasenode throws an authentication or connection error on the first deploy. - Node-RED logs a red exclamation mark in the Editor at the firebase (config) node.
- Edison/console output contains lines similar to:
Firebase: FirebaseAuthError: There is no user record corresponding to this identifier.
orECONNREFUSED 127.0.0.1:9000 - The IOT2000 can reach the internet for npm install (palettete installation succeeds), but data exchanges terminate after 5-10 s.
These symptoms almost always fall into one of three categories: a local TCP/IP conflict, a misconfigured firebase database URL/secret, or a firewall/NAT issue on the upstream router. The first category is the most common on the IOT2000 because the device ships with a default address of 192.168.200.1 on the Ethernet interface - identical to the default subnet of many consumer SOHO routers (D-Link, TP-Link, certain Fritz!Box models, OpenWrt defaults).
Root Cause: IP Address Collision on 192.168.200.1
When the IOT2020 or IOT2040 is connected via Ethernet to a router that also uses 192.168.200.1/24 as its LAN prefix, the gateway (the router) and the IOT2000 appear at the same IPv4 address on the wire. The IOT2000's connman service binds the address, but routing becomes ambiguous: TCP SYN packets from the IOT2000 are returned to whichever device last sent an ARP reply for the address, which in practice is the router itself. The result is that:
- The IOT2000 can no longer reach DNS (UDP 53) because DNS is offered by the router at 192.168.200.1, which the IOT2000 believes is itself.
- Outbound TLS handshakes to
*.firebaseio.comhang or fail, which surfaces asETIMEDOUTin the firebase node. - When a USB WiFi NIC is also installed, the host's WLAN is also degraded because the IOT2000 begins responding to ARPs on the wired side and confuses the PC's IP stack - this matches the reported "I lose WiFi on my laptop when I connect the IOT2000" symptom.
/var/lib/connman/ethernet_001122334455_cable/settings as 192.168.200.1/24. The address is chosen by Siemens to match the SINUMERIK / SIMOTION default subnet. It must be changed before integration with a typical office network.Step-by-Step: Reconfigure the Ethernet Address and Restore Connectivity
Prerequisites
- SSH or serial console access to the IOT2000 (default user
root, no password on the example image). - Knowledge of the LAN prefix of the upstream router (for example 192.168.1.0/24).
- An unused IPv4 outside the router's DHCP pool (for example 192.168.1.50).
Procedure
- Connect the IOT2000 to your PC over the Ethernet cable and access the console:
ssh [email protected] - List the connman services to identify the Ethernet interface:
connmanctl services
Note the service identifier (typically*A0 ethernet_001122334455_cable). - Edit the persistent settings file (replace the MAC in the path):
vi /var/lib/connman/ethernet_001122334455_cable/settings - Replace the
IPv4stanza with a static address on the production LAN:[ethernet_001122334455_cable] Name=Wired AutoConnect=true Modified=2018-04-12T08:32:01Z IPv4=192.168.1.50/255.255.255.0/192.168.1.1 IPv6=off - Disable the WiFi client on the IOT2000 if you are not using it (recommended for deterministic routing):
connmanctl disable wifi - Reboot and confirm:
reboot
After login:ip addr show dev eth0ping -c 3 192.168.1.1ping -c 3 sfo3.firebaseio.com
Configuring node-red-contrib-firebase (v1.1.1) Correctly
With IP connectivity restored, install the firebase palette node:
cd /usr/lib/node_modules
npm install [email protected] --save
Restart Node-RED:
systemctl restart node-red
In the Node-RED editor (http://<iot2000>:1880) drop a firebase config node and fill in the following parameters:
| Field | Value | Notes |
|---|---|---|
| Firebase | Realtime Database | Firestore is not supported by v1.1.1 |
| Server | your-project.firebaseio.com | From the Firebase console -> Realtime Database URL |
| Auth Type | Legacy token / Email + Password | v1.1.1 does not support OAuth2 service accounts |
| Database Type | Realtime | Hard requirement |
| Child path | /machines/iot2000/temp |
Per-flow telemetry topic |
Minimum flow to push an S7 tag to Firebase every 5 s:
[{"id":"in.s7","type":"s7 in","z":"f1","endpoint":"192.168.1.20","mode":"single","variable":"DB1,REAL0","name":"TempPV"},
{"id":"fn.set","type":"function","z":"f1","name":"wrap","func":"msg.payload = { value: msg.payload, ts: Date.now() }; return msg;"},
{"id":"fb.out","type":"firebase out","z":"f1","firebase":"c1","childpath":"/machines/iot2000/temp","name":"Push"},
{"id":"c1","type":"firebase config","z":"","name":"iot2000-prod","firebase":"your-project.firebaseio.com","authType":"legacy","token":"<dbSecret>"}]
Hardware Selection: IOT2020, IOT2040, or IOT2050
| Use Case | Recommended SKU | Rationale |
|---|---|---|
| Bench prototype, education, Node-RED learning | IOT2020 | Lowest cost, microSD boot simplifies image swap |
| Cabinet install with -20 to +60 °C requirement | IOT2040 | Industrial temperature range, eMMC wear-levelling |
| Production line with modern TLS / Docker / S7-1500 OPC UA | IOT2050 (6ES7647-0BA00-0YA2) | Quad-core ARM A53, 1-2 GB RAM, 16 GB eMMC, supported until 2027 |
For purely WiFi-based deployments a USB WiFi NIC based on the Realtek RTL8188CUS or Atheros AR9271 chipset is recommended; the Intel Quark kernel on firmware V2.1.3 does not include the brcmfmac or rt2x00 modules needed for some consumer adapters. Connect a USB hub if the WiFi NIC and a USB serial console dongle must coexist.
Network Architecture: Avoiding the 192.168.200.x Trap
The cleanest production deployment is to keep the IOT2000 on a dedicated industrial subnet, isolated from the office LAN, and route through a managed firewall that performs NAT to the upstream network. A recommended topology:
By moving the IOT2000 to a private subnet (10.10.10.0/24) the 192.168.200.1 collision is impossible by design, and the firewall can apply egress rules that allow only the Firebase FQDNs:
*.firebaseio.com TCP 443
*.googleapis.com TCP 443
sfo3-xxxx.firebaseio.com UDP 9553 (long-poll)
Verification Checklist
- From the IOT2000 console:
curl -v https://<project>.firebaseio.com/.json?print=prettyreturns JSON, not an SSL error. - In Node-RED, the firebase (config) node has a green dot and no red exclamation.
- Deploy a debug node downstream of a firebase in node pointing to
/machines/iot2000/temp- it should emit the last value within 30 s. - From the Firebase console, the Realtime Database viewer shows the timestamped object
{value: 23.7, ts: 1700000000000}. - Watch the connman log:
journalctl -u connman -f- no DHCP renew errors and only one IPv4 oneth0.
Troubleshooting Matrix
| Symptom | Likely Cause | Resolution |
|---|---|---|
| Editor shows red exclamation on firebase node, error "ECONNREFUSED 127.0.0.1:9000" | Wrong Firebase endpoint - Database vs Hosting | Use the URL from Realtime Database, not the project web URL |
| "Auth error: invalid API key" | Legacy db secret revoked by Firebase in 2020 | Generate new database secret under Project Settings -> Service Accounts -> Database Secrets, or migrate to OAuth2 |
| PC WiFi dies when IOT2000 is plugged in | IP collision 192.168.200.1 | Reconfigure the IOT2000 to a non-conflicting address |
| Node-RED 0.15.2 fails to start on Node.js 8+ | Version mismatch on image upgrade | Stay on the bundled Node 4.6.2 or reflash the V2.1.3 image |
| node-red-contrib-firebase install: "no such file or directory, open 'package.json'" | npm run from /, not from /usr/lib/node_modules
|
cd /usr/lib/node_modules before npm install |
| Long-poll data only arrives after 30-60 s | Default 25 s keepalive trimmed by router | Lower keepalive or move the device behind a less aggressive NAT gateway |
Migration Path to the IOT2050
Siemens officially announced the phase-out of the IOT2000 line in 2021. New projects should use the SIMATIC IOT2050 with firmware V1.2.x or later, which provides:
- Container runtime (Docker/Podman) for running Node-RED as a signed image.
- Native OPC UA Pub/Sub over MQTT 5 - more efficient than the Firebase REST polling model.
- Updated Node.js 16 LTS and Node-RED 3.x compatibility.
The configuration procedure in this article applies to the IOT2050 by analogy: change the connman profile at /var/lib/connman/<iface>_<mac>_cable/settings, install node-red via the image, and deploy the same firebase flow with the newer node-red-contrib-firebase-modern package (which supports OAuth2 service accounts).
FAQ
What firmware version of the Siemens IOT2000 bundles Node-RED and the Firebase node?
Firmware V2.1.3 ships Node-RED 0.15.2 on Node.js 4.6.2 and pre-installs node-red-contrib-firebase 1.1.1. The image and SHA-256 checksum are available in the Siemens support entry for the SIMATIC IOT2000 example image. Earlier images (V1.x) do not include Node-RED.
Why does my PC lose WiFi when I connect the IOT2020 over Ethernet?
Both devices default to the IPv4 address 192.168.200.1. When the IOT2020 is plugged in it answers ARPs for that address on the wired segment, which confuses the PC's IP stack and disrupts WLAN routing. Reconfigure the IOT2020 to a non-conflicting address in connman (for example 192.168.1.50) and reboot.
Should I use the IOT2020 or IOT2040 for an industrial cabinet installation?
Use the IOT2040 (6ES7647-0AA00-1YA2). It has 1 GB RAM, 8 GB eMMC, an extended -20 to +60 °C temperature range, and a second dedicated RS232 port. The IOT2020 is specified 0 to 50 °C and boots from microSD only, which is acceptable for prototypes and education but not for long-term field use.
How do I enable WiFi on the IOT2000 with firmware V2.1.3?
Insert a USB WiFi NIC based on RTL8188CUS or Atheros AR9271. The kernel in V2.1.3 includes both r8192cu and ath9k_htc drivers. Configure with connmanctl enable wifi, scan with connmanctl scan wifi, then connmanctl connect <SSID>. Avoid the BCM43236-based NICs that some consumer adapters ship with - the IOT2000 kernel has no brcmfmac module.
Does node-red-contrib-firebase 1.1.1 still work with current Firebase projects?
Yes, with caveats. v1.1.1 uses legacy database secrets (Database Settings -> Secrets tab), which are still issued but Firebase announced their deprecation. The package also does not support the new Google Cloud OAuth2 service-account authentication. For new projects prefer the community fork node-red-contrib-firebase-modern or migrate the IOT2000 to the IOT2050 platform which runs Node-RED 3.x and supports OAuth2.