// the find
OpenEtherCATsociety/SOEM
Simple Open Source EtherCAT Master
SOEM is a C library for implementing EtherCAT master devices, targeting industrial automation and real-time embedded systems. It has been around since 2005 and is the de facto open-source choice if you need to talk to EtherCAT slaves from Linux, Windows, or a handful of RTOSes. Not for hobbyists — this is for motor drives, PLCs, and robotics controllers.
Clean OSAL/OSHW abstraction layer means the core protocol code is genuinely portable — porting to a new RTOS is a matter of implementing a handful of functions in osal.c and nicdrv.c. Covers the full EtherCAT feature set: CoE, FoE, EoE, SoE, distributed clocks (ec_dc.c) — you are not getting a toy subset. Active maintenance with a commit as recent as June 2026 and a 20-year track record means the edge cases in the protocol spec have actually been hit and fixed. Multiple working samples (slaveinfo, firm_update, eoe_test) that are short enough to actually read and learn from.
The CLA requirement (physical mail still listed as an option) is a real friction point for contributors and a yellow flag for companies with legal review processes. Global state throughout ec_main — the context structs are not designed for running multiple masters in the same process without careful isolation. Windows support depends on bundled WinPcap libs checked into the repo, which is messy and will age badly as WinPcap/Npcap evolves. No automated test suite visible in the tree; industrial protocol correctness is exactly the domain where regression tests matter most.