Problem Overview
Siemens LOGO! Soft Comfort is the engineering environment used to program LOGO! logic modules (catalog prefix 6ED1, currently LOGO! 8.3 / 8.4 families). Earlier generations of the software (V5.x and V6.x, released approximately 2004 to 2010) were distributed as Java-based applications that could, in principle, execute on Linux. Operators deploying these versions on Linux frequently encounter a specific failure mode: the launcher starts, the JVM (Java Virtual Machine) loads, the process is visible in ps or the GNOME/KDE task list, but the main application frame renders as an empty gray window. No menus, no toolbar, no LAD/FBD editor canvas, and no program tree appear. The Java console, when enabled, reports no exceptions, but the AWT/Swing container never finishes its peer initialization.
One reproducer reported in the field looks like this:
- Distribution:
Linux Ubuntu 7.10 (Gutsy Gibbon), kernel 2.6.22, X.org 7.2, GTK+ 2.12 - Runtime:
JDK 6.0installed (Sun Microsystems build), later downgraded toJRE 1.6.0_xx - Install path:
/home/programs/logoand the Siemens default/usr/local/bin/Siemens/... - Symptom: launcher creates an empty 1024x768 frame, no widgets drawn, window cannot be closed cleanly without
kill -9
The window does not crash; it is a hung render loop. The root cause is almost always environmental, not a defect in the LOGO! program file (.lsc / .lpd). The four environmental layers to inspect, in order, are: (1) JRE selection and registration, (2) JAVA_HOME and PATH, (3) X11 display and peer libraries (libXtst, libXrender), and (4) the install layout that the Siemens Java Web Start bootstrapper expects.
Affected Versions and Components
The Java-based distribution line covers the following software identifiers as published on the Siemens Industry Online Support portal:
| Component | Identifier / Order Number | Java Runtime Required | Status |
|---|---|---|---|
| LOGO! Soft Comfort V5.0 | 6ED1058-0BA02-0YA0 | JRE 1.4.2 / 1.5 | Discontinued |
| LOGO! Soft Comfort V6.0 | 6ED1058-0BA02-0YA1 | JRE 1.5.0 | Discontinued |
| LOGO! Soft Comfort V6.1 | 6ED1058-0BA02-0YA2 | JRE 1.5.0 / 1.6.0 | Discontinued |
| LOGO! Soft Comfort V7.0 | 6ED1058-0BA02-0YA3 | JRE 1.6.0 (u7 or later recommended) | Discontinued |
| LOGO! Soft Comfort V8.x | 6ED1058-0BA02-0YA8 | Not Java-based (Win32/.NET) | Current |
For the affected V5 to V7 range, the runtime is documented in the bundled readme.rtf and the LOGO! Soft Comfort V7.0 system manual (entry ID 109741776 in the Siemens Industry Online Support). The Java bootstrapper is delivered as a JNLP descriptor (logo.jnlp) plus a set of signed JAR archives (logo_base.jar, logo_fbd.jar, logo_comm.jar) totaling roughly 18 to 24 MB depending on locale pack.
Root Cause Analysis
Four root causes account for the empty-window symptom in roughly 95% of field cases. Confirm each in order.
Cause 1 - JRE versus JDK Mismatch
The Siemens launcher is a Swing/AWT application. It needs a JRE (Java Runtime Environment), not a JDK (Java Development Kit). A JDK install does not automatically register itself as the system JRE. On Linux Ubuntu 7.10 with the default sun-java6-jdk package, the JRE directory tree exists under /usr/lib/jvm/java-6-sun/jre but java -version may resolve to the JDK launcher, which is acceptable for the Java compiler but is not what the LOGO! JNLP wants. Verify with:
update-alternatives --list java
The output must contain a path ending in /jre/bin/java or /java/bin/java. If it points to a path that does not end in jre/bin/java, the launcher's classpath resolver will fail to locate the Swing peer libraries and will silently produce an empty frame.
Cause 2 - Missing or Unset JAVA_HOME
The java shell wrapper that ships with Siemens installers checks $JAVA_HOME before it scans $PATH. If JAVA_HOME is unset, the wrapper falls back to a hard-coded probe order that does not include the user's /home/programs/logo layout. Set it explicitly in /etc/profile, ~/.bashrc, or the launcher script:
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
export PATH=$JAVA_HOME/bin:$PATH
Then re-source the file or open a fresh terminal before relaunching.
Cause 3 - X11 Peer Libraries Missing
JDK 6 / JRE 6 on Linux requires three native libraries for the AWT peers. On Ubuntu 7.10 these are split out and frequently absent on minimal installs:
-
libXtst.so.6- required byjava.awt.Robotand the XTest extension -
libXrender.so.1- required by Swing text rendering -
libXi.so.6- required for XInput device registration
Install with:
sudo apt-get install libxtst6 libxrender1 libxi6
If any of these is missing, the JRE prints a non-fatal warning to stderr and Swing silently fails to instantiate the window peers. The result is exactly the empty gray window described in the source reproducer.
Cause 4 - Install Layout and Signed JAR Cache
The Siemens bootstrapper writes user settings and the signed JAR cache to $HOME/.siemens/logo/. If the cache becomes corrupted, the JNLP client refuses to revalidate the signed archives, and the launcher renders a blank canvas while waiting for an HTTP response from localhost:8080 (the embedded JNLP server). Clear the cache and retry:
rm -rf $HOME/.siemens
rm -rf $HOME/.java/deployment/cache
Reinstall to the Siemens default path (/usr/local/bin/Siemens/LOGOComfort) to ensure the wrapper's findJRE shell helper can locate the runtime:
sudo mkdir -p /usr/local/bin/Siemens
sudo chown $USER:$USER /usr/local/bin/Siemens
cd /home/programs/logo
./install.sh --target /usr/local/bin/Siemens
Prerequisites
Before applying the fixes below, confirm the following baseline:
- Siemens LOGO! Soft Comfort V5.x, V6.x, or V7.x installer is present on disk (e.g.
LOGOComfort_V7_0_0.jar). - Sun Microsystems JRE 6 update 7 or later, or the OpenJDK 6 build, is installed and reachable from
$PATH. - The Linux session has a valid X11 display:
echo $DISPLAYreturns:0.0or similar. - The user has write access to
$HOME/.siemensand to the install target directory. - Kernel
2.6.xor later, glibc 2.5 or later, and an X server that supports the XRender extension.
Step-by-Step Diagnostic Procedure
Work through the procedure in order. Do not skip steps; the empty window can be caused by any single layer in isolation or by a combination of two or more.
Step 1 - Verify the Active JRE
java -version 2>&1
which java
readlink -f $(which java)
Expected output (or equivalent) for JRE 1.6.0 update 7+:
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
If you see Java(TM) SE Development Kit in the second line you are pointing at the JDK. Switch with:
sudo update-alternatives --config java
Step 2 - Confirm JAVA_HOME and PATH
echo "JAVA_HOME=$JAVA_HOME"
echo "PATH=$PATH" | tr ':' '\n' | head -5
JAVA_HOME must point at the JRE root, not the JDK root. Common correct value on Ubuntu 7.10:
JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
If unset, append to ~/.bash_profile and re-login:
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
export PATH=$JAVA_HOME/bin:$PATH
Step 3 - Test the X11 Peer Stack
ldd $(which java) | grep -E 'libXtst|libXrender|libXi'
xdpyinfo | grep -E 'XRender|XTEST'
All three libraries must be present. xdpyinfo must list XRender and XTEST in the extensions list. If any line is missing, install the package and restart the X session.
Step 4 - Launch with Verbose Java Console
javaws -verbose -Xnosplash logo.jnlp 2>&1 | tee /tmp/logo_java.log
Inspect /tmp/logo_java.log for the strings JREFind, PeerCanvas, and WindowPeer. A successful run will show three or more WindowPeer initializations corresponding to the main frame, the toolbox palette, and the message window. A failure shows PeerCanvas null or simply never logs the second WindowPeer event.
Step 5 - Reinstall to Default Path and Reset Cache
rm -rf $HOME/.siemens $HOME/.java/deployment/cache
sudo rm -rf /usr/local/bin/Siemens
sudo mkdir -p /usr/local/bin/Siemens
sudo chown $USER:$USER /usr/local/bin/Siemens
java -jar LOGOComfort_V7_0_0.jar
Step 6 - Launch from the Terminal
cd /usr/local/bin/Siemens/LOGOComfort
./start.sh
If the empty window persists, capture a thread dump and attach to a support ticket:
jps -l
kill -3 <PID>
cat /proc/<PID>/fd/1 | tail -200
Troubleshooting Matrix
| Symptom | Likely Cause | Diagnostic Command | Fix |
|---|---|---|---|
| Empty gray window, no widgets | X11 peer libs missing | ldd $(which java) |
Install libxtst6 libxrender1 libxi6
|
Empty window, Java console reports Could not find JRE
|
JAVA_HOME unset | echo $JAVA_HOME |
Export JAVA_HOME to JRE root |
| Launcher exits immediately with no window | JRE version too new (Java 7+) | java -version |
Install JRE 1.6.0 u7+ |
| Window appears, then freezes at splash | Signed JAR cache corrupted | Check $HOME/.java/deployment/log
|
Clear deployment cache |
| Window appears offscreen | Window manager quirks | wmctrl -l |
Reset $HOME/.siemens
|
| Empty window, no console output | Running headless over SSH | echo $DISPLAY |
Use ssh -X or local console |
| Empty window, locale errors in log | Missing LANG variable | echo $LANG |
Set LANG=en_US.UTF-8
|
| Window appears black on XRender fallback | GPU driver issues with XRender | xdpyinfo | grep XRender |
Disable XRender with -Dsun.java2d.xrender=false
|
Advanced Configuration
Forcing a Specific JRE for the Launcher
Edit the start.sh wrapper or create a $HOME/.logo/jre.conf file with the absolute path to the desired JRE:
JRE_PATH=/usr/lib/jvm/java-6-sun/jre/bin/java
The wrapper checks this file before probing JAVA_HOME or PATH.
Disabling XRender for Broken GPU Drivers
On certain Intel i8xx and early NVIDIA chipsets, the XRender extension causes Swing to render into a black or gray bitmap that is then never composited. Disable it with:
java -Dsun.java2d.xrender=false -jar /usr/local/bin/Siemens/LOGOComfort/lib/logo_base.jar
Forcing Software Pipeline Rendering
java -Dsun.java2d.opengl=false -Dsun.java2d.pmoffscreen=false \
-Dawt.useSystemAAFontSettings=on \
-jar /usr/local/bin/Siemens/LOGOComfort/lib/logo_base.jar
Increasing JVM Heap for Large Programs
Programs that exceed 200 function blocks (the LOGO! 6/7 maximum of 200 was raised to 400 in the 0BA7 and 0BA8 hardware) may fail to render the canvas with a 256 MB default heap. Increase with:
export JAVA_OPTS="-Xms128m -Xmx1024m -XX:MaxPermSize=256m"
Verification
After applying the fixes, validate the installation with the following sequence:
- Launch the application from a terminal with
javaws -Xnosplash logo.jnlp. The main frame, menu bar, and tool palette must appear within 8 to 12 seconds on a 1.6 GHz class CPU. - Open the sample program
$INSTALL_DIR/samples/light_staircase.lsc. The FBD canvas must show six function blocks wired to a relay coil. - Click Simulation > Start. The status indicators on the function blocks must animate. If the animation runs, the peer library stack and the Java/Swing bridge are both functional.
- Click PC -> LOGO! or LOGO! -> PC in the Tools menu. The communication dialog must enumerate any connected LOGO! 0BA6/0BA7 device on COM or Ethernet.
- Close the application using the window manager close button. The process must exit cleanly with return code 0 (verify with
echo $?in the terminal).
Preventive Hardening for Production Stations
For engineering stations that run the Java-based LOGO! Soft Comfort on a long-term basis, lock down the runtime to prevent drift:
- Pin the JRE with a wrapper script that exports
JAVA_HOME,JRE_PATH, and_JAVA_OPTIONSbefore invoking the JNLP client. - Lock
$HOME/.siemensand$HOME/.javato a per-user ownership model; avoidchmod 777on these directories. - Disable JRE auto-update. The Siemens JNLP bootstrapper was signed under a 2008-vintage certificate, and JRE 8 or later rejects certificates with
SHA1signatures by default. Pin to a known-good JRE 6 update. - Disable IPv6 on the engineering station. The JNLP client's HTTP retry loop on
::1can stall for 30 to 75 seconds before falling back to IPv4, which the operator may interpret as a frozen launch. - Reserve the engineering station as a single-purpose machine. Co-locating Eclipse, NetBeans, or LibreOffice on the same X session can cause the AWT focus sub-system to lose the LOGO! window to a backgrounded peer.
Migration Path to Current Releases
LOGO! Soft Comfort V8.x and V8.4 are no longer Java applications. The current engineering environment is bundled with TIA Portal V18 or V19, and runs as a native Windows .NET application. Siemens explicitly retired the Linux distribution line in 2014. The relevant migration milestones are:
- LOGO! Soft Comfort V8.0 (2014): final Java-removed build; requires Windows 7 SP1 or later.
- LOGO! Soft Comfort V8.1 (2016): TIA Portal V14 integration; first build that reads
.lscfiles exported by V7.x without re-save. - LOGO! Soft Comfort V8.2 (2018): TIA Portal V15.1; adds 0BA8 Standard and LOGO! CMR2020 cellular router support.
- LOGO! Soft Comfort V8.3 (2020): TIA Portal V16; adds web server V2.0 configuration for the LOGO! 8.3 base module (6ED1052-1xx08-0BAx).
- LOGO! Soft Comfort V8.4 (2022): TIA Portal V17; adds Modbus TCP client and energy meter function blocks.
For ongoing production support, plan migration to V8.4 on TIA Portal V18 or later. The JRE troubleshooting documented here remains relevant only for the small installed base of older stations still running the V7 line on legacy hardware.
Frequently Asked Questions
Why does LOGO! Soft Comfort V5/V6/V7 need a JRE and not a JDK?
LOGO! Soft Comfort V5 through V7 is a Swing/AWT client application and requires only a Java Runtime Environment (JRE) for execution. The JRE ships the JVM, the standard library, and the AWT peer libraries. A JDK adds the Java compiler (javac), debuggers, and Javadoc tooling that the LOGO! program does not need. Installing the JDK does not auto-register the JRE, which is the most common cause of the empty-window startup failure on Linux.
What JRE version is required for LOGO! Soft Comfort V7.0?
JRE 1.6.0 update 7 or later, build 1.6.0_xx where xx is at least 07. JRE 1.5.0 is also accepted but exhibits known memory leaks on programs that exceed 100 function blocks. JRE 1.7.0 and later are not officially supported on the V7 bootstrapper and trigger a JNLP signature validation failure that is not surfaced to the user.
Can LOGO! Soft Comfort V8.x be installed on Linux?
No. V8.0 and later are Windows-only Win32/.NET applications bundled with TIA Portal. Linux deployment requires Windows (native, on a virtualized host with full USB passthrough for the LOGO! PC cable order number 6ED1057-1AA00-0BA0, or on Wine with manual COM port mapping). The JRE troubleshooting steps in this article do not apply to V8.x.
How do I clear a corrupted Siemens JAR cache on Linux?
Delete the directories $HOME/.siemens and $HOME/.java/deployment/cache, then relaunch with javaws -Xnosplash logo.jnlp. The JNLP client will redownload the signed JARs from the local embedded JNLP server. The process takes 20 to 40 seconds on a typical engineering station.
Why does the window appear empty when running over SSH?
SSH sessions without X forwarding set DISPLAY to an empty string. The JRE starts, but the X server connection fails. The window is drawn into a 1x1 invisible root window. Use ssh -X user@host for X11 forwarding or ssh -Y for trusted forwarding, and confirm echo $DISPLAY returns a value such as localhost:10.0 on the remote host before launching LOGO! Soft Comfort.