SOEM v2.0
SOEM (Simple Open EtherCAT Master) is a widely used open source EtherCAT implementation. With version 2.0, the project reaches a major milestone, introducing significant new features, modernized architecture, and more than forty important fixes that strengthen stability and reliability.
In this post we use the term MainDevice in place of the traditional “Master” role to describe the central EtherCAT controller. Similarly, “Slave” devices are referred to as SubDevices.
Licensing and API changes
One of the most important changes is that SOEM is now dual licensed under GPLv3 or a commercial license. This provides greater flexibility for developers and companies who wish to use SOEM in commercial products while ensuring the project remains open source and community driven.
The legacy ec_
API has been removed. Applications using it must update to the newer ecx_
API. For most functions there is a direct counterpart, and migration is expected to be straightforward. Updated sample code is provided to help developers adapt quickly.
Other breaking changes include the removal of overlap and aligned modes from the API. These are now configured in the SOEM context, allowing the correct mode to be selected automatically. Header files have also been reorganized, and SOEM should now be included via soem/soem.h
.

New features
SubDevice mailbox cyclic handling
SOEM 2.0 introduces a new API for mailbox cyclic handling. This enables efficient use of XoE (CoE, FoE, EoE, SoE) commands across multiple threads without disturbing the main process data loop.
Benefits include:
Higher throughput for communication heavy XoE traffic (for example EoE or FoE)
Improved scalability for networks with many SubDevices
Reduced jitter in the process data thread even when executing XoE commands from other threads
ENI parser
A major addition is the ENI (EtherCAT Network Information) parser.
ENI files, typically generated by EtherCAT configuration tools, describe the entire network topology and configuration including PDO assignments, synchronization settings, and initialization commands. With SOEM 2.0, the parser extracts CoE initialization commands from the ENI and generates a C file that can be compiled directly into the SOEM application.
This means:
PDO mapping and assignment can be configured directly from the ENI file
Developers can avoid modifying SOEM source code to adapt configurations
Applications can better align with the configurations defined by system integrators and engineering tools
For many developers, this closes an important gap between the design time configuration process and runtime integration, simplifying development and reducing errors.
Build time configuration via CMake
All major SOEM settings such as maximum sizes, timeouts, and other parameters can now be adjusted at build time using CMake options. This gives developers a flexible way to fine tune SOEM without patching the source.
Modernization and restructuring
The repository has been refactored and modernized. Source and header files are now cleanly separated, and a dedicated sample
folder provides portable examples for all supported platforms.
SOEM now builds with modern CMake, replacing older build approaches and making the project easier to maintain and extend.
New OSAL (Operating System Abstraction Layer) functions have been added for monotonic time, including functions for obtaining and sleeping on monotonic clocks. This improves portability of DC synchronization samples across platforms.
Finally, unmaintained ports that cannot be built and tested have been moved to the contrib
folder. These are still available but not actively maintained, and community contributions are welcome.
Summary
SOEM 2.0 is more than just an incremental update. With over forty important fixes, it represents a modernized EtherCAT MainDevice library with improved configurability, scalability, and performance. By aligning more closely with ENI based workflows, supporting multiprocessing environments, and offering a dual licensing model, SOEM 2.0 is positioned to support both the open source community and industrial users for years to come.
Complete release notes for SOEM v2.0 can be found here (requires login with RT-Labs account)