Configuring Remote Desktop on SIMATIC IOT2050 SM for WinCC OA

David Krause11 min read
HMI / SCADASiemensTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Configuring Remote Desktop on SIMATIC IOT2050 SM for SIMATIC WinCC OA

The SIMATIC IOT2050 in the SM hardware variant is deployed as a compact edge gateway running SIMATIC WinCC Open Architecture (WinCC OA) as the supervisory software layer. Because the SM variant omits the integrated DisplayPort that the standard IOT2050 provides, engineers must establish a graphical desktop session through a remote protocol stack rather than a directly attached monitor. This reference documents the end-to-end procedure for installing a desktop environment, exposing it through xrdp or VNC, and validating the WinCC OA IPC Package 128 graphical console without physical video output.

Hardware note: The standard SIMATIC IOT2050 includes a DisplayPort connector on the front faceplate. The SM (Smart) variant replaces the video interface with additional serial/IO density and is intended for headless gateway operation. Confirm the exact order number (6ES7647-0BA00-0YX2 or 6ES7647-0CA00-0YX2) before assuming a DisplayPort is present. Refer to the SIMATIC IOT2050 Operating Instructions for the variant-specific connector layout.

1. Hardware Architecture and Display Subsystem

The IOT2050 product family ships in two principal configurations, both based on the same Linux-based firmware image (Example OS based on Debian / Siemens Industrial OS):

Feature IOT2050 Basic IOT2050 Advanced / SM
CPU TI AM6528 (ARM Cortex-A53, quad-core) Intel Atom x6000E (Elkhart Lake, quad-core)
RAM 1 GB DDR4 2 GB / 4 GB DDR4
Display output 1x DisplayPort 1.2 SM: none; Advanced: 1x DisplayPort 1.2
USB 2x USB 2.0 2x USB 3.0
Ethernet 2x RJ45 10/100/1000 Mbps 2x RJ45 10/100/1000 Mbps
Typical use case Edge collection, protocol gateway Edge computing, local visualization, OPC UA server

For the SM variant, Siemens does not provide a direct graphical video output. Practical workarounds in field deployments are limited to:

  1. Software remote desktop (xrdp, VNC) over the management Ethernet port (X1 P1 or X2 P1).
  2. Active DisplayPort adapter over USB — a USB-to-DisplayPort adapter does not function on the IOT2050 SM because the SoC does not expose a USB DisplayLink driver pathway in the Siemens stock image. This is not a recommended path.
If a local HMI is required and the SM variant is fixed, the standard approach is to install the WinCC OA console on a separate engineering station and connect it to the IOT2050 SM as a Manager (event) or Sub (redundant) peer over TCP. The remote desktop path described below is for the case where the WinCC OA UI must run locally on the same device.

2. Prerequisites

Before configuring the remote desktop, verify the following prerequisites.

2.1 Hardware Prerequisites

  • SIMATIC IOT2050 SM with stable 24 V DC supply (terminal torque 0.56 Nm / 5 lb-in per the Operating Instructions).
  • Ethernet cable to connect the engineering station to the IOT2050 (port X1 P1 LAN).
  • Engineering PC running Windows 10/11 with Remote Desktop Client (mstsc.exe) or VNC Viewer (TigerVNC, RealVNC, or TightVNC).

2.2 Software Prerequisites

  • Siemens Industrial OS (Debian-based) or Example OS image flashed to the IOT2050 (microSD or eMMC).
  • SSH access already configured (default port 22).
  • Root or sudo permissions for package installation.
  • SIMATIC WinCC OA installation package (IPC Package 128 for IOT2050 from SiePortal).

2.3 Network Prerequisites

  • IOT2050 management interface configured with a static IP (e.g., 192.168.200.10/24) or DHCP reservation.
  • Engineering station in the same subnet with bidirectional reachability (verify with ping 192.168.200.10).
  • Firewall rules permitting TCP 3389 (xrdp) or TCP 5900 (VNC display 0) inbound to the IOT2050.

3. Installing a Graphical Desktop Environment

The stock Siemens IOT2050 image ships as a headless Debian / Industrial OS installation without an X server or desktop manager. To run the WinCC OA Desktop UI (GEDI) locally, a graphical environment must be installed first.

3.1 Recommended: XFCE for Low Resource Footprint

XFCE consumes approximately 150–250 MB RAM, leaving sufficient headroom for WinCC OA's typical 1–2 GB working set on the 2 GB SM configuration.

# Update package metadata
sudo apt-get update
sudo apt-get upgrade -y

# Install X server and XFCE desktop
sudo apt-get install -y xorg xfce4 xfce4-goodies dbus-x11

# Set XFCE as the default session for any remote user
echo "xfce4-session" | sudo tee /etc/xrdp/startwm.sh.lastline

3.2 Alternative: MATE / GNOME (Higher Resource Use)

GNOME requires approximately 600 MB RAM and is generally not recommended for the 2 GB IOT2050 SM when running WinCC OA concurrently. MATE is a viable compromise at ~300 MB.

sudo apt-get install -y task-mate-desktop
Disk space warning: A full XFCE installation with goodie pack requires approximately 1.2 GB on the root partition. The IOT2050 SM eMMC variant typically provides 16 GB; ensure the eMMC is not over-provisioned with data archives before installing the desktop stack.

4. Configuring xrdp for Remote Desktop Sessions

xrdp is the most direct path to a Microsoft Remote Desktop Protocol (RDP) session from a Windows engineering station. It integrates with the existing X server and PAM authentication.

4.1 Installation

sudo apt-get install -y xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp

# Add xrdp user to the ssl-cert group to read the TLS certificate
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

4.2 Start-up Script Configuration

xrdp starts the X session by executing /etc/xrdp/startwm.sh. The default script sources the user profile and launches the desktop session specified in ~/.xsession or /etc/xrdp/startwm.sh.lastline.

sudo nano /etc/xrdp/startwm.sh

Replace the existing content with:

#!/bin/sh
if [ -r /etc/profile ]; then
  . /etc/profile
fi

export LANG=en_US.UTF-8
export DBUS_SESSION_BUS_ADDRESS=unix:path=/var/run/dbus/system_bus_socket

startxfce4
sudo chmod +x /etc/xrdp/startwm.sh
sudo systemctl restart xrdp

4.3 Connecting from Windows

  1. Open Remote Desktop Connection (mstsc.exe).
  2. Enter the IOT2050 IP (e.g., 192.168.200.10).
  3. Set display to 24-bit color and resolution to 1280x800 for the IOT2050 SM's typical 16:9 panel association.
  4. Click Connect and authenticate with a local Linux user (not root).

5. Configuring VNC as an Alternative Remote Desktop

VNC is useful in environments where RDP is firewalled or where cross-platform clients (macOS, Linux) need simultaneous access. TigerVNC is the recommended server for headless Debian systems.

5.1 Installation

sudo apt-get install -y tigervnc-standalone-server tigervnc-common

5.2 Set VNC Password

vncpasswd
# Enter a read-only and a full-control password when prompted

5.3 Create a VNC Startup Script

cat <<EOF | sudo tee /etc/systemd/system/[email protected]
[Unit]
Description=Start TigerVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=<USERNAME>
PAMName=login
PIDFile=/home/<USERNAME>/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost no :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
sudo systemctl start [email protected]

5.4 Connecting from a VNC Client

Open a VNC viewer (e.g., TigerVNC Viewer) and connect to 192.168.200.10:5901. The display number 1 maps to TCP port 5901.

Display # TCP Port Use Case
:0 5900 Default VNC display
:1 5901 Concurrent session, recommended for engineering
:2 5902 Additional concurrent session

6. Network and Firewall Configuration

By default, the Siemens Industrial OS enables nftables or iptables with a restrictive INPUT chain. Remote desktop ports must be explicitly allowed.

6.1 iptables (Debian default)

sudo iptables -A INPUT -p tcp --dport 3389 -j ACCEPT   # xrdp
sudo iptables -A INPUT -p tcp --dport 5901 -j ACCEPT   # VNC display 1

# Persist across reboot
sudo apt-get install -y iptables-persistent
sudo netfilter-persistent save

6.2 nftables (Industrial OS / newer Debian)

sudo nft add rule inet filter input tcp dport { 3389, 5901 } accept
sudo nft list ruleset > /etc/nftables.conf

6.3 Port Reference Table

Service Port Protocol Direction
xrdp 3389 TCP Engineering → IOT2050
TigerVNC 5900–5903 TCP Engineering → IOT2050
SSH (existing) 22 TCP Engineering → IOT2050
WinCC OA Manager 4999 TCP/UDP Bidirectional, redundant peer
WinCC OA Event 4998 TCP/UDP Bidirectional, redundant peer
WinCC OA Console 4997 TCP Console → Manager

7. WinCC OA IPC Package 128 Installation on the IOT2050 SM

The IPC Package 128 referenced in the SiePortal is the SIMATIC WinCC OA pre-bundled installation for the IOT2050 platform. The package includes the WinCC OA Manager, Event, Console, and a pre-configured project skeleton.

7.1 Installation Sequence

  1. Transfer the IPC package to the IOT2050 over SCP:
    scp IPC_Package_128_IOT2050.deb [email protected]:/tmp/
  2. Install via dpkg:
    sudo dpkg -i /tmp/IPC_Package_128_IOT2050.deb
    sudo apt-get install -f -y   # resolve any missing dependencies
    
  3. Verify the WinCC OA binaries are on PATH:
    which WCCOAui
    which WCCOActrl
    which WCCOAmanager

7.2 Launching the Desktop UI (GEDI) Over Remote Desktop

  1. Connect to the IOT2050 SM via xrdp or VNC.
  2. Open a terminal inside the remote session (xfce4-terminal).
  3. Start the WinCC OA console:
    WCCOAui -proj <ProjectName>
  4. For multi-process operation on a single device (manager + event + console), use the WinCC OA control panel:
    WCCOActrl -start <ProjectName> -num 1   # starts Manager 1
    WCCOActrl -start <ProjectName> -num 2   # starts Event 2
    WCCOAui -proj <ProjectName>            # starts Desktop UI as console
License note: WinCC OA requires a license dongle (CodeMeter) or soft license. The IOT2050 SM does not include an integrated USB CodeMeter; if a soft license is bound to a USB stick, it must be inserted into one of the front USB ports before the Manager starts. Otherwise, configure the soft license server on a separate engineering station and have the IOT2050 pull from it.

8. Verification Procedures

After installation, run the following verification sequence to confirm that the remote desktop path is operational and the WinCC OA stack is functional.

8.1 xrdp / VNC Service Health

sudo systemctl status xrdp            # should show "active (running)"
ss -tlnp | grep -E '3389|5901'        # confirm listening sockets

8.2 WinCC OA Manager Health

WCCOActrl -status -proj <ProjectName>
# Expected output includes lines for each started process and their state (Started/Stopped)

8.3 Console GEDI Connectivity

  1. Launch WCCOAui in the remote desktop session.
  2. Confirm the panel tree loads (panel.tree visible in the left pane).
  3. Open System Management → Drivers and confirm at least one driver is OK (typically the sim or OPC UA driver).
  4. Insert a test datapoint value through the para module and confirm it propagates to a panel widget.

8.4 Remote Session Performance Check

Check Expected Value Command / Method
CPU usage (idle) < 15% top in remote terminal
RAM usage (XFCE + WinCC OA) < 1.5 GB on 2 GB system free -h
Round-trip latency < 50 ms local subnet ping from engineering station
Frame rate (GEDI panel refresh) > 10 fps Visual check on engineering station

9. Troubleshooting Matrix

Symptom Likely Root Cause Remediation
RDP client cannot connect, connection refused xrdp not running or firewall blocked systemctl status xrdp, open TCP 3389 in firewall
RDP connects, screen is blank or shows only background startwm.sh does not launch a window manager Edit /etc/xrdp/startwm.sh to call startxfce4
RDP session logs out immediately Polkit/pam misconfiguration with XFCE Install xfce4-session and polkit-1; set PAMName=login
VNC shows black screen xstartup launches a session that exits Ensure ~/.vnc/xstartup ends with startxfce4 &
WinCC OA Manager reports "License not found" CodeMeter not running or USB dongle missing Start cmu daemon; insert USB dongle; verify with cmu -l
WinCC OA console opens but panels are empty Manager not started, or no driver subscribed Start manager with WCCOActrl -start; check driver status in para
Display artifacts / tearing over RDP Color depth mismatch Set RDP client to 24-bit; disable visual effects in XFCE
High CPU after connecting via VNC Polling rate too aggressive for slow link Set VNC encoding to Tight and reduce color depth to 16-bit
USB-to-DisplayPort adapter does not function Siemens image lacks DisplayLink driver Abandon this path; use RDP/VNC as documented

10. Operational Notes and Field-Proven Caveats

  • Do not run WinCC OA as root. The xrdp session should be a non-root user; the WinCC OA Manager can be configured to drop privileges after startup.
  • Persist the desktop install across image updates. When re-flashing the Siemens Industrial OS image, the XFCE/xrdp install must be reapplied. Consider scripting the post-install with a .deb overlay or a systemd firstboot.service.
  • Watch eMMC wear. The IOT2050 SM's eMMC has a finite write endurance. The WinCC OA datapoint archive writes continuously; configure ring-buffered historic databases with write-interval no less than 10 seconds to extend eMMC life.
  • For new deployments, prefer the standard IOT2050 (non-SM) variant if a DisplayPort-attached local panel is required at the cabinet door. The SM variant is optimized for headless operation.
  • Validate the chassis grounding before commissioning per the Operating Instructions. Improper grounding can introduce display artifacts even over RDP because of Ethernet link noise on the management port.
  • Use a managed switch with port security on the management VLAN. The IOT2050 exposes its console session over the same network that carries WinCC OA event traffic; isolation prevents accidental GEDI session hijacks from operational networks.

11. Frequently Asked Questions

Does the SIMATIC IOT2050 SM have a DisplayPort?

No. The IOT2050 SM variant ships without a DisplayPort connector. Only the standard IOT2050 (Basic and Advanced) provides a DisplayPort 1.2 on the front faceplate. For the SM, all graphical access must be through xrdp, VNC, or a remote WinCC OA console on a separate engineering station.

Can I use a USB-to-DisplayPort adapter on the IOT2050 SM?

No. The Siemens Industrial OS image does not include a DisplayLink or similar USB video driver, and there is no official support for USB-attached video adapters. Use xrdp (TCP 3389) or TigerVNC (TCP 5901) over the Ethernet management port instead.

Which desktop environment is recommended for WinCC OA on the IOT2050 SM?

XFCE4 is recommended for the 2 GB RAM IOT2050 SM because it uses approximately 150–250 MB of RAM, leaving sufficient headroom for WinCC OA Manager and Console. GNOME is not recommended because it consumes 600 MB or more of RAM.

How is the WinCC OA IPC Package 128 installed on the IOT2050?

Transfer the .deb package via SCP to the IOT2050, then install with sudo dpkg -i IPC_Package_128_IOT2050.deb followed by sudo apt-get install -f -y to resolve any missing dependencies. The package places WinCC OA binaries in /opt/WinCC_OA/... by default and creates a systemd service for the Manager.

What TCP ports must be opened for WinCC OA and remote desktop on the IOT2050 SM?

Open TCP 3389 for xrdp, TCP 5900–5903 for VNC displays, TCP 22 for SSH (existing), TCP 4999 for the WinCC OA Manager peer connection, TCP 4998 for the Event redundant link, and TCP 4997 for Console-to-Manager traffic. Persist the firewall rules with iptables-persistent or nftables configuration save.

Back to blog