Resolving Siemens LOGO! Soft Comfort rxtxSerial.dll 64-bit Error

David Krause13 min read
Other TopicSiemensTroubleshooting
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

Problem Overview

Siemens LOGO! Soft Comfort V7 (LSC V7) is a 32-bit Java application used to program, simulate, and document LOGO! 0BA5 / 0BA6 / 0BA7 / 0BA8 logic modules. On Windows 7 64-bit (Home Premium, Professional, Ultimate, or Enterprise), the application installs and launches without complaint, but any attempt to download a circuit diagram to a connected LOGO! base module—or upload a program from the module—fails with the following Java runtime exception in the LSC dialog window:

Error while loading panel data.
java.lang.UnsatisfiedLinkError: C:\Program Files (x86)\Siemens\LOGO Comfort_V7\bin\rxtxSerial.dll:
Can't load AMD 64-bit .dll on a IA 32-bit platform

The transfer is aborted before any byte is sent over the PC-to-LOGO! cable. The same dialog can also appear when LSC V7 attempts to enumerate the COM port to which the LOGO! PC cable (6ED1057-1AA00-0BA0) or the LOGO! USB cable (6ED1057-1AA01-0BA0) is attached.

Note: The phrase "AMD 64-bit" in the error text is a generic Java term for the x86-64 (x64) instruction set. It does not imply an AMD processor. Intel 64 (EM64T) and AMD64 are binary compatible, and the Java VM uses the same loader for both. The platform reported as "IA 32-bit" is the 32-bit x86 instruction set used by the bundled Sun/Oracle 32-bit JRE.

Affected Configurations

Component Affected Version Notes
LOGO! Soft Comfort V7.0, V7.1, V7.2, V7.3, V7.4 (32-bit installer) Installs under Program Files (x86)
Windows OS Windows 7 Home Premium / Professional / Ultimate / Enterprise, 64-bit (x64) OS Build 6.1.7600 to 6.1.7601 SP1
JAVA_HOME Bundled JRE 6 (IA-32) LSC V7 ships its own 32-bit JRE; standalone JRE is not used
Native library rxtxSerial.dll inside bin\ JNI wrapper for the Win32 COMM API
LOGO! base modules 0BA5, 0BA6, 0BA7, 0BA8 standard and pure variants Communicates over the LOGO! PC cable or USB cable
PC cable (RS-232) 6ED1057-1AA00-0BA0 RS-232 to LOGO! service port
PC cable (USB) 6ED1057-1AA01-0BA0 USB to LOGO! service port, FTDI-based VCP

The error does not occur on Windows XP 32-bit, on Windows Vista 32-bit, or on 64-bit Windows when running LOGO! Soft Comfort V8 (6ED1058-0BA08-0YA1) and later, which ship a fully signed and architecture-correct rxtx bundle.

Root Cause

The error is a Java Native Interface (JNI) loading failure. LSC V7 is a 32-bit Java application and the bundled JRE is the 32-bit edition of Sun Java 6. When the JRE calls System.loadLibrary("rxtxSerial"), it expects a DLL that matches its own bitness (x86 / IA-32). The file present in the installation directory, however, has been compiled for the x86-64 (AMD64) instruction set. Mixing a 64-bit native library with a 32-bit JVM raises an UnsatisfiedLinkError before any method from the library is even invoked.

The four most common ways a 64-bit DLL ends up in a 32-bit LSC V7 folder are:

  1. A 64-bit build of rxtxSerial.dll is copied into the bin folder by a partial upgrade attempt, by a third-party installer, or by extracting a 64-bit LSC V8 distribution into the same directory.
  2. The LSC V7 support DVD has both 32-bit and 64-bit DLLs in different subfolders and the user points the install or copy operation at the wrong source.
  3. An operating system component (e.g., a Windows compatibility shim) or an anti-virus "repair" replaces the original 32-bit DLL with a 64-bit build.
  4. Windows on Windows (WoW64) redirection does not apply because the DLL is referenced by an explicit absolute path, not by the standard search order.

The "panel data" wording in the dialog comes from LSC's wrapper around the RXTX CommPortIdentifier API. RXTX is the de-facto open-source Java library for serial port access and is bundled with LSC V7 to support COM-port communication with the LOGO! cable.

Technical Background: Java JNI, RXTX, and WOW64

Java applications cannot access the Win32 Communications API (kernel32.dll functions CreateFile, SetCommState, WriteFile, ReadFile, SetCommTimeouts, SetCommMask, WaitCommEvent, etc.) directly. They require a JNI bridge—a native DLL that exports C functions matching the Java method signatures declared in the corresponding Java class file. For serial I/O, LSC V7 uses the RXTX project, which provides:

  • rxtxSerial.dll – native Windows serial port driver (x86 and x86_64 builds)
  • rxtxParallel.dll – parallel port driver (not used by LOGO!)
  • RXTXcomm.jar – Java classes (architecture-independent)

The RXTXcomm.jar class loader calls System.loadLibrary("rxtxSerial"). The Windows DLL search order is:

  1. The directory from which the Java executable was loaded
  2. The current working directory of the process
  3. The %WINDIR%\System32 directory (for 64-bit processes) or %WINDIR%\SysWOW64 (for 32-bit processes on WOW64)
  4. Each directory listed in the PATH environment variable

On Windows 7 64-bit, a 32-bit JVM is executed under the WOW64 subsystem. System32 is transparently redirected to SysWOW64 for 32-bit processes, but LSC V7 references the DLL through an absolute path: C:\Program Files (x86)\Siemens\LOGO Comfort_V7\bin\. That path is WOW64-aware (the literal (x86) is the convention) and is therefore resolved directly without redirection. The DLL at that exact path must be a 32-bit build; otherwise the loader aborts with the message "Can't load AMD 64-bit .dll on a IA 32-bit platform".

The Java HotSpot VM's own internal type RuntimeException wraps the underlying Win32 LoadLibrary error code, which on a 32-bit process attempting to load a 64-bit DLL is ERROR_BAD_EXE_FORMAT (Win32 error 193, 0xC1). Confirm this by inspecting the LSC log under %USERPROFILE%\.lsc\logs\ if the application is launched with -Djava.util.logging.config.file=... set.

Prerequisites Before the Fix

  • Administrator account on the Windows 7 64-bit machine (you cannot replace files under Program Files (x86) without elevation).
  • Local backup of the existing bin directory (the 64-bit DLL may still be useful for diagnostics).
  • One of the following sources for a verified 32-bit rxtxSerial.dll:
    • Original LSC V7 installation DVD (subfolder typically named Support\RXTX\Win32 or install\Win32)
    • Siemens Industry Online Support entry for LOGO! Soft Comfort V7 (entry ID 109741041 and its linked FAQs)
    • A clean 32-bit installation of LSC V7 on another Windows 7 32-bit or Windows XP SP3 32-bit machine
  • The Microsoft Sysinternals Sigcheck utility (or Visual Studio dumpbin) to confirm the architecture of the replacement DLL.

Solution: Replace the Native Library

  1. Close LOGO! Soft Comfort V7 if it is running. Confirm via Task Manager that no java.exe, javaw.exe, or LSCE.exe process is active. The LSC launcher spawns the JVM and may keep it resident in the background for fast re-launch.
  2. Open an elevated command prompt: Start → All Programs → Accessories → right-click Command Prompt → Run as administrator.
  3. Back up the existing file. From the elevated prompt run:
    takeown /f "C:\Program Files (x86)\Siemens\LOGO Comfort_V7\bin\rxtxSerial.dll"
    icacls  "C:\Program Files (x86)\Siemens\LOGO Comfort_V7\bin\rxtxSerial.dll" /grant Administrators:F
    copy   "C:\Program Files (x86)\Siemens\LOGO Comfort_V7\bin\rxtxSerial.dll" "%USERPROFILE%\rxtxSerial.dll.bak"
  4. Open C:\Program Files (x86)\Siemens\LOGO Comfort_V7\bin\ in Windows Explorer. Inspect the file size of rxtxSerial.dll: a 32-bit RXTX 2.2 build is typically 102,400 bytes (100 KB) and a 64-bit build is 110,592 bytes or 121,344 bytes depending on compiler version. If the file is larger than 100 KB it is almost certainly the wrong architecture.
  5. Copy the 32-bit rxtxSerial.dll from the verified source (DVD, support download, or a known-good 32-bit install) into the bin folder. Right-click the new file, choose Properties → Unblock if the file originated from a download, otherwise Windows may refuse to load it as a SmartScreen-blocked file.
  6. Confirm the file architecture with the Sysinternals Sigcheck tool (or dumpbin from Visual Studio):
    cd "C:\Program Files (x86)\Siemens\LOGO Comfort_V7\bin"
    sigcheck -m rxtxSerial.dll | findstr /i "MachineType"
    # or with dumpbin:
    dumpbin /headers rxtxSerial.dll | findstr "machine"
    A 32-bit DLL reports MachineType: 0x14c (IMAGE_FILE_MACHINE_I386); a 64-bit DLL reports 0x8664 (IMAGE_FILE_MACHINE_AMD64). If the output is anything other than 0x14c, repeat step 5 with a different source DLL.
  7. Restart LOGO! Soft Comfort V7 and retry the download or upload operation.
Important: If the first replacement DLL does not resolve the error, more than one copy of rxtxSerial.dll is on the system path. Search for it and inspect every copy:
where /R C:\ rxtxSerial.dll
Each copy must be x86 if the 32-bit LSC V7 is to load successfully. The first match found in the search order wins; a 64-bit copy earlier in the path can shadow the 32-bit copy in the LSC V7 bin folder. Common shadow locations include C:\Windows\System32 and C:\Program Files\Java\jre6\bin if a 64-bit JRE was ever installed system-wide.

Verification Procedure

  1. In LSC V7, open any program (or use File → Open Sample Project → Examples → Lighting staircase).
  2. Connect the LOGO! PC cable or LOGO! USB cable to the PC and to the LOGO! base module service port.
  3. Power the LOGO! module from 24 V DC and navigate the front-panel display to PC ↔ LOGO! using the cursor keys.
  4. In LSC V7, choose Tools → Transfer → PC → LOGO! (keyboard shortcut F11).
  5. The transfer dialog must show the COM port number, the baud rate (default 19 200 for 0BA5/0BA6/0BA7), and the firmware version of the LOGO! module. The "Error while loading panel data" dialog must NOT appear.
  6. After the download completes, the LOGO! module must run the program and its display must show RUN or the configured start text.
  7. For upload, choose Tools → Transfer → LOGO! → PC (keyboard shortcut F12). The circuit diagram must open in the LSC editor with all function blocks, references, and parameters intact.

Alternative Solutions

Approach Steps Pros Cons
Replace rxtxSerial.dll with 32-bit build As detailed above No upgrade required; keeps LSC V7 program data Source of 32-bit DLL must be trusted
Install full LSC V8 or later Download LSC V8.x from Siemens Industry Online Support and run its 64-bit installer Vendor-signed native libraries; full Windows 7/8/10/11 x64 compatibility LSC V8 reads V7 projects, but V7 cannot read V8 projects
Use a 32-bit Windows XP SP3 virtual machine Run the existing LSC V7 32-bit installation on a Windows XP SP3 32-bit host in VirtualBox or VMware No DLL manipulation required; preserves LSC V7 feature set Requires VM, OS license, and USB or serial pass-through
Use the LOGO! Web Editor (LOGO! 8.FS4 and later) Connect the LOGO! 8.FS4 module to the LAN and edit the program in the on-board Web server No PC-side software required; cross-platform browser access Not supported on 0BA5/0BA6/0BA7 modules
Switch to TIA Portal LOGO! configuration Use TIA Portal V15.1 or later with the LOGO! Configuration add-on Vendor-supported on 64-bit Windows 7 SP1 and later Requires TIA Portal license

Why a 32-bit DLL Works on 64-bit Windows

Windows 7 64-bit includes the WOW64 (Windows on Windows 64-bit) compatibility layer. 32-bit processes load 32-bit DLLs from the SysWOW64 and \Program Files (x86)\ trees without any explicit configuration. The LSC V7 installer already takes advantage of WOW64: it places the entire application under Program Files (x86) and registers the COM-port enumerator with the 32-bit registry hive (HKLM\SOFTWARE\Wow6432Node). Because the bundled JRE is 32-bit, only 32-bit native libraries can be loaded successfully. Replacing the 64-bit rxtxSerial.dll with a 32-bit build restores the bitness match and the JNI bridge loads normally. The substitution is safe; the file is not code-signed and Windows does not enforce signing for non-driver DLLs.

LOGO! Communication Stack Architecture

LOGO! Soft Comfort V7 (LSC.exe / LSCE.exe) — 32-bit Java UI Bundled JRE 6 (IA-32) — System.loadLibrary("rxtxSerial") RXTXcomm.jar (Java classes) rxtxSerial.dll (JNI, 32-bit) Win32 Communications API — kernel32.dll (CreateFile, SetCommState, ReadFile, WriteFile) COM port driver (serial.sys / usbser.sys) FTDI VCP driver for LOGO! USB cable LOGO! 0BA5 / 0BA6 / 0BA7 / 0BA8 base module — service port

Error Code Reference

Symptom Underlying Cause Remediation
"Can't load AMD 64-bit .dll on a IA 32-bit platform" 64-bit rxtxSerial.dll present, 32-bit JVM Replace with 32-bit rxtxSerial.dll
"no rxtxSerial in java.library.path" DLL missing or in the wrong folder Place DLL in LSC bin\ or pass -Djava.library.path=... on the JVM command line
"Access is denied" while loading DLL File blocked by Windows after download Right-click → Properties → Unblock
"COM port not found" or "Port busy" Another process holds the COM port Close any other terminal program; check Device Manager
"No response from LOGO!" Cable not in PC ↔ LOGO mode or wrong COM port Set LOGO! display to PC ↔ LOGO; verify port in Device Manager
Transfer starts but aborts with CRC error Cable or driver issue, not JNI Replace cable; reinstall FTDI VCP driver 2.12.x or later
Native Library error 193 (ERROR_BAD_EXE_FORMAT) Bitness mismatch between process and DLL Match DLL architecture to the 32-bit JVM

Troubleshooting Matrix

Step Check Command / Location Expected Value
1 JVM bitness Open LSC V7 → Help → About "JRE 1.6.0_xx (IA-32)"
2 DLL bitness sigcheck -m rxtxSerial.dll MachineType = 0x14c (IMAGE_FILE_MACHINE_I386)
3 Duplicate DLLs on path where /R C:\ rxtxSerial.dll Only one match, x86
4 COM port enumeration Device Manager → Ports (COM & LPT) "USB Serial Port (COMx)" appears with cable plugged in
5 LOGO! display mode LOGO! front panel "PC ↔ LOGO!"
6 Java version from CLI "C:\Program Files (x86)\Siemens\LOGO Comfort_V7\jre\bin\java.exe" -version "Java HotSpot(TM) Client VM 1.6.0_xx"
7 Windows 7 build winver "Windows 7 SP1, 64-bit" minimum
8 Win32 LoadLibrary code LSC log file under %USERPROFILE%\.lsc\logs\ No 0xC1 (ERROR_BAD_EXE_FORMAT) entries

Permanent Fix: Upgrade to LOGO! Soft Comfort V8

The cleanest permanent solution is to upgrade to LOGO! Soft Comfort V8.x, which Siemens distributes as a fully signed 64-bit installer that matches the Windows 7/8/10/11 x64 runtime. The upgrade preserves all program logic because LSC V8 reads V7 project files (.lsc) directly. The Siemens LOGO! product page lists the current version, and Siemens Industry Online Support provides the download under your Service & Support entitlement. Validate the new version's release notes against your module's firmware before deploying in production.

If you must continue to run LSC V7 (for example, to support a fleet of installed 0BA5–0BA7 modules where the program is locked to LSC V7's password-protected format), the DLL-replacement procedure above is the supported workaround. Keep a clean copy of the 32-bit rxtxSerial.dll in your project documentation so that any future re-imaging of the engineering workstation can be completed in minutes.

Notes on Windows 7 Maintenance

Windows 7 SP1 has been in extended support and no longer receives new security fixes. A machine still running Windows 7 64-bit should at minimum be patched with the 2016 rollup and its successors as documented on Microsoft Learn — Windows 7 Home Premium update issues to keep the Win32 subsystem, Device Manager, and the WOW64 layer functional. Without these updates the COM-port enumeration that the LOGO! PC cable relies on can become unreliable, which can mask or amplify the native-library error described in this article. For new deployments, migrate to Windows 10 IoT LTSC 2019 or Windows 11 IoT on the engineering workstation.

Safety Notice: Always disconnect the LOGO! base module from its 24 V DC supply—or place it in STOP mode—before plugging or unplugging the PC cable. The LOGO! service port shares a connector with the Ethernet port on LOGO! 8 modules; using the wrong socket can damage the cable or the module.

FAQ

What does "Can't load AMD 64-bit .dll on a IA 32-bit platform" mean exactly?

The 32-bit Java Runtime that ships with LOGO! Soft Comfort V7 is trying to load a 64-bit (x86-64) build of the RXTX native library. JNI requires the bitness of the Java VM and the native DLL to match. Replace rxtxSerial.dll in C:\Program Files (x86)\Siemens\LOGO Comfort_V7\bin\ with a 32-bit (x86 / IA-32) build from the original LSC V7 DVD or a known-good 32-bit installation, then verify with sigcheck -m rxtxSerial.dll that MachineType equals 0x14c.

Can I just install LOGO! Soft Comfort V8 to fix the problem?

Yes. On Windows 7 64-bit, LOGO! Soft Comfort V8.x installs a fully signed 64-bit build with the correct RXTX libraries. LSC V8 opens V7 project files (.lsc), so your existing circuit diagrams are preserved. Download V8 from Siemens Industry Online Support and confirm the bundled RXTX matches the JRE bitness before commissioning.

Why is the 64-bit DLL present if I never installed a 64-bit version?

Common causes: (1) copying a DLL from a 64-bit LSC V8 or TIA Portal install into the LSC V7 folder, (2) extracting a 64-bit LSC V8 distribution into the same directory, (3) Windows Search indexing or anti-virus software replacing the file with a build of the wrong architecture. Search for all copies on disk with where /R C:\ rxtxSerial.dll and verify each is x86 before restarting LSC.

Which Siemens cable do I need for download and upload?

For LOGO! 0BA5/0BA6/0BA7 use the LOGO! PC cable 6ED1057-1AA00-0BA0 (RS-232) or the LOGO! USB cable 6ED1057-1AA01-0BA0 (USB, FTDI VCP). For LOGO! 0BA8 (LOGO! 8) and later, Ethernet is supported natively and the cables above are not required. The cable is plugged into the service port and the LOGO! display must be set to PC ↔ LOGO! for any transfer to begin.

Does this issue affect LOGO! Soft Comfort V8 or V8.1?

No. LSC V8 (6ED1058-0BA08-0YA1) and later ship with a 64-bit installer for 64-bit Windows and a 32-bit installer for 32-bit Windows. The bundled RXTX library is correctly paired with the JRE bitness. The "Can't load AMD 64-bit" message is specific to LSC V7 installations on Windows x64 where a foreign DLL has been substituted for the original 32-bit file.

Back to blog