Robots Atlas>ROBOTS ATLAS
IgH EtherCAT Master

Other · Drivers & Firmware

IgH EtherCAT Master

1.6.3·IgH GmbH

Active Open source Real-time capable API available
CATEGORYOther · Drivers & Firmware
READINESSTRL 8
ADOPTION SCALEProduction – Broad Deployment
LICENSESGPL-2.0-only
FIRST RELEASE2007

IgH EtherCAT Master is a mature, open-source EtherCAT bus driver running as a Linux kernel module. Developed by Ingenieurgemeinschaft IgH GmbH in Essen, Germany, it is the de facto open-source EtherCAT standard on Linux.

The software architecture is based on a master-device model: the `ec_master` kernel module manages the communication cycle, while `ec_generic` or dedicated NIC drivers (e.g. `ec_e1000e`) provide physical layer access bypassing the network stack – enabling deterministic cycle times below 1 ms.

The master runs in synchronous (cyclic) mode with timing driven by a PREEMPT_RT timer or a Xenomai/Cobalt real-time task. It supports DC (Distributed Clocks) per ETG spec, ESC, EoE (EtherCAT over Ethernet), CoE mailbox (CANopen over EtherCAT), and SoE (Servo over EtherCAT).

The user-space interface is the `libethercat` library exposing a C API for real-time application development. Integration with ros2_control is available via the `ethercat_driver_ros2` package, which maps EtherCAT slaves as `HardwareInterface` in ROS 2.

The project is actively maintained in the `stable-1.6` branch and available via Open Build Service (OBS) as pre-built .deb and .rpm packages.

Type & Roles
Software types
Driver

A Driver is a software layer responsible for communication with a specific hardware device or component. In robotics, drivers enable support for sensors (LiDARs, cameras, IMUs), actuators, motor controllers, grippers, and other modules at the hardware or low-level OS layer. They abstract device-specific protocols (USB, CAN, UART, EtherCAT) and expose a standardised interface to the middleware or application layer above.

Transport Layer

A Transport Layer is the software layer responsible for data transmission between elements of a robotic or software system — such as processes, nodes, devices, and services. It handles serialisation, routing, reliability, and latency guarantees for messages. In robotics examples include DDS (Data Distribution Service) used by ROS 2, LCM (Lightweight Communications and Marshalling), ZeroMQ, and proprietary message buses on embedded platforms.

Select an item to see its description.
Main category
Drivers & FirmwareRuntime & Infrastructure
Roles in robotics ecosystem
Robot Control

Robot Control denotes the role of software responsible for motion control, command execution, coordination of actuating elements and the direct operational logic of the robot.

Real-Time Control

The real-time control role describes software responsible for closed control loops executed at a guaranteed, deterministic frequency — typically 1 to 10 kHz for current/torque loops in actuators. Unlike soft real-time, in a hard real-time regime missing a deadline is treated as a system error. Implemented on deterministic kernels (Linux PREEMPT_RT, QNX Neutrino RTOS) or dedicated microcontrollers. Critical for biped balance stability, force control, impedance control and functional safety.

Device Integration

Device Integration denotes the role of software responsible for communication, configuration, initialization and handling of specific devices, sensors, controllers or hardware components within a robotic system.

Select an item to see its description.
Software family
Family

Family of tools providing hard real-time capabilities in Linux and EtherCAT fieldbus communication – the foundation of industrial and robotic low-level control.

Maturity & Adoption
8 / 9
Prototype / pilot phase
ResearchPrototypeProduction
Adoption scaleProduction – Broad Deployment
Maintenance statusActively Maintained
First release2007
Last update1 November 2024
Deployments

Deployed in thousands of industrial projects worldwide – CNC machines, assembly lines, industrial robots, research systems.

Community

Active mailing list community, GitLab-hosted, ~3k equivalent stars across derivative projects.

Target robotic platforms
Industrial Robot
Robotic Arm
Mobile Robot
Humanoid
Quadruped
Research Robot
ROS supportCompatibility with ROS / ROS 2 ecosystem
Community ROS 2 WrapperWrapper ROS 2 tworzony i utrzymywany przez społeczność, nie przez producenta
ROS 2 Hardware Interface (ros2_control)Hardware Interface dla frameworka ros2_control
System capabilities
Open source
Source code is publicly available under an open-source license — enables security audits, custom modifications, and integration without licensing barriers.
Real-time capable
Designed with timing-determinism guarantees — meets the requirements of control loops, safety systems, and tasks demanding low, predictable latency.
⟨/⟩
API available
The software exposes a programmable interface (REST, gRPC, SDK, or language bindings) that enables automation and integration with other systems.
📦
Pre-built / binary
Distributed as ready-to-use binary packages, container images, or installers — no need to build from source.
Programming languages
CC++
Operating systems
Ubuntu 20.04Ubuntu 22.04Debian
Ubuntu 24.04

Ubuntu 24.04 LTS 'Noble Numbat' — supported until April 2029. The host for ROS 2 Jazzy.

Select an item to see its description.
Minimum hardware requirements
Packaging & distribution
Package managers
apt / debSource – CMake / ament_cmakeGitHub Releases / GitHub Actions Artifacts
CPU architectures
x86_64 (AMD64)ARM64 / AArch64aarch64 / ARM64
Installation difficulty
LevelExpert only
Protocols and interfaces
Communication protocols
EtherCATEthernet / TCP-IPCAN bus (Controller Area Network)
Hardware interfaces
Ethernet 1000BASE-T (Gigabit Ethernet)Ethernet 100BASE-TX (Fast Ethernet)EtherCAT (Slave Interface)CAN 2.0A / 2.0B
Latency classes
Hard Real-Time (< 1 ms)Hard Real-Time (1–5 ms)
Supported simulators
Gazebo Harmonic
Gazebo Classic (Gazebo 11)
Licenses
GPL-2.0-onlyGNU General Public License v2.0v2.0

License family: Strong Copyleft

ModificationDistributionCommercial usePrivate useOSI approvedFSF Free/LibreRequires attributionShare-alikeSource disclosure
Version history
1.6.3Jul 2024

Stability fixes and support for new NICs.

1.5.2Jan 2019

LTS release – long-term support for legacy systems.