Attending Pack EXPO 2026 CHICAGO? See our delta robot in action! Visit us at North Hall N-5584
Adeeb Robotics
Training Series 3 / 8
Adeeb EtherCAT Master · macOS

Getting Started with the Adeeb EtherCAT Master on macOS

Download, configure, and run the Adeeb EtherCAT Master on macOS, then scan the network and command a servo over EtherCAT.

May 12, 2026 · 5:26

Watch on YouTube . The written walkthrough below covers the same material in detail.

This walkthrough shows how to drive a Yaskawa EtherCAT servo drive and motor from a MacBook Air using the Adeeb EtherCAT Master. You will deploy the trial release, identify and configure the network interface, build the example application, and command the servo while tuning the cycle time.

Prerequisites

  • A Mac running macOS with a free USB-C port.
  • A wired Ethernet path to the EtherCAT slave. This demo uses a Belkin Ethernet-to-USB-C adapter connected to the Mac.
  • A Yaskawa EtherCAT servo drive and motor on the bus.
  • A C toolchain (GCC) for building the example, plus Visual Studio Code or your editor of choice.

Hardware setup

The hardware path is deliberately minimal. Run an Ethernet cable from the EtherCAT slave into the Belkin Ethernet-to-USB-C adapter, then plug the adapter into the Mac. No additional interface card or real-time hardware is required.

Downloading the release

The Adeeb EtherCAT Master trial releases are published on the Adeeb Robotics downloads page. Each trial runs for two hours at a time.

  1. Open the downloads page and locate the macOS release of the EtherCAT Master.
  2. Download and extract the archive.
  3. Open the extracted folder in Visual Studio Code.

The macOS release ships with the same main.c example application and the same configuration file used on Linux, so anything you have already done on Linux carries straight over.

Identifying the network interface

Before the master can find slaves, you have to tell it which interface the EtherCAT bus is on. Determine the interface name empirically rather than guessing:

  1. Open a terminal and list the interfaces:

    ifconfig
  2. Note the candidate port. In this setup it appears as en7.

  3. Unplug the Ethernet cable carrying the EtherCAT traffic and run ifconfig again. The en7 entry disappears, confirming that en7 is the correct interface.

  4. Reconnect the cable.

Configuration

Edit the configuration file that shipped with the release to pin the master to the interface you just identified.

  • Set the port to en7. If you leave the port unset or wrong, the master will not find any EtherCAT slaves on the bus.
  • The update rate defaults to a cycle time of 4000 microseconds. This is the maximum cycle time the Yaskawa slaves accept and the safest choice for sustained operation on macOS.

You can also rename the configuration file if you prefer; the build-and-run helper accepts the config filename as an argument, so adjust it there to match.

Building and running

The release includes a helper script that builds and runs the application in one step. The script:

  1. Deletes the previously built application binary.
  2. Compiles main.c with GCC, linking in the EtherCAT library along with supporting dependencies such as the math and threads libraries.
  3. Runs the resulting binary, passing the configuration file as an argument.

Run the helper with elevated privileges, because the application opens the raw Ethernet interface:

sudo ./run.sh

With the default 4000 microsecond cycle time, the motor turns, but slowly.

Tuning the cycle time

The cycle time directly governs how fast the servo can be commanded. To speed up motion, stop the application and lower the cycle time in the config file.

Cycle timeRelative rateNotes
4000 µsBaselineSlowest; maximum allowed by the Yaskawa slaves; safe for extended runs on macOS
1000 µs4x baselinePractical lower bound on macOS; motor visibly spins faster

Set the cycle time to 1000 microseconds and rerun the helper. The servo now turns roughly four times faster.

Pushing below 1000 microseconds on macOS tends to trigger an A.12 alarm on the slave, because macOS is not a deterministic operating system and cannot guarantee that each frame is delivered on time. The 4000 microsecond setting has been tested for extended periods on macOS without issue.

Reading the diagnostics

Because macOS does not provide deterministic scheduling, expect timing warnings in the output, for example late frames and a “receive time took much greater than 100 microseconds” warning. The firmware tracks all timing in the cyclic loop and reports running statistics on latency, runtime, and drift, so you can see exactly how the bus is behaving under load.

Next steps

The example application uses the same APIs across Linux and macOS. For a deeper explanation of what each API in main.c does, see the Linux walkthrough, then continue with the companion article on running the controller on macOS.

Next in the Training Series

Part 4 of 8

Running the Adeeb Robot Controller on macOS