# Troubleshoot EtherCAT

> Fix EtherCAT setup errors, networks that do not start, and sync mode and clock errors.

The Console and the Driver call an EtherCAT module a slave, so error messages say “slave” where these pages say “module”. For errors about one channel of a task, see the [read task](https://docs.synnaxlabs.com/reference/hardware/ethercat/read-task#troubleshooting) and the [write task](https://docs.synnaxlabs.com/reference/hardware/ethercat/write-task#troubleshooting).

## Setup

### No modules show in the devices toolbar

* Fix

  1. Check the cable from the port to the first module, and the power to the modules.
  2. Make sure that no other program uses the port. On Windows, DewesoftX can block the port also when DewesoftX is closed. See [No modules show on a computer with DewesoftX](https://docs.synnaxlabs.com/reference/hardware/ethercat/troubleshooting#no-modules-show-on-a-computer-with-dewesoftx).
  3. Check the [prerequisites](https://docs.synnaxlabs.com/reference/hardware/ethercat/configure-device#prerequisites) and the [network interface access](https://docs.synnaxlabs.com/reference/hardware/ethercat/configure-device#network-interface-access), then [restart the Driver](https://docs.synnaxlabs.com/reference/hardware/troubleshooting#restart-the-driver).

### No modules show on a computer with DewesoftX

* Cause

  DewesoftX adds a network filter, **EthercatDAQ Filter**, to each Ethernet port. After DewesoftX starts, the filter stops the replies of the modules before they get to the Driver. This continues after you close DewesoftX, and a restart of the port does not stop it. The scan finds no modules and shows `The DewesoftX "EthercatDAQ Filter" on this adapter blocks EtherCAT replies`, with the name of the adapter.

* Fix

  1. In Windows Settings, go to **Network & internet** > **Advanced network settings** > **More network adapter options**. You can also press Windows + R and enter `ncpa.cpl`.
  2. Right-click the port that connects to the first module, then select **Properties**. Windows asks for administrator access.
  3. Clear **EthercatDAQ Filter**, then select **OK**.

  The modules show in the devices toolbar in 30 seconds or less. You do not need to restart the Driver. From an administrator PowerShell, this command does the same, with the name of the port from step 2:

  ```powershell
  Disable-NetAdapterBinding -Name "Ethernet 2" -ComponentID DW_EthcatDAQ
  ```

  DewesoftX cannot use a port while its filter is off. To use DewesoftX and Synnax at the same time, connect each one to a different port. To give a port back to DewesoftX, select **EthercatDAQ Filter** again.

### `No EtherCAT slaves found on ...`

* Cause

  The Driver got no reply from the modules on the port.

* Fix

  Check the cable to the first module and the power to the modules. If the message names the DewesoftX filter, see [No modules show on a computer with DewesoftX](https://docs.synnaxlabs.com/reference/hardware/ethercat/troubleshooting#no-modules-show-on-a-computer-with-dewesoftx).

### `Npcap (packet capture for EtherCAT) library is not installed`

* Cause

  On Windows, the Driver cannot load Npcap, which EtherCAT needs. The full message is “Npcap (packet capture for EtherCAT) library is not installed. Download here: <https://npcap.com/#download>. Restart Driver after installation.”

* Fix

  1. Install [Npcap](https://npcap.com/#download) with the default options.
  2. [Restart the Driver](https://docs.synnaxlabs.com/reference/hardware/troubleshooting#restart-the-driver).

### `The Driver does not have permission to open /dev/bpf...`

* Cause

  On macOS, EtherCAT uses the packet capture devices `/dev/bpf*`, and the user that runs the Driver cannot open them. Synnax Desktop runs the Driver as your user.

* Fix

  1. Install the ChmodBPF package that comes with [Wireshark](https://www.wireshark.org/), or give your user read and write access to `/dev/bpf*`.
  2. Log out of macOS, then log in again.
  3. [Restart the Driver](https://docs.synnaxlabs.com/reference/hardware/troubleshooting#restart-the-driver).

### `Every BPF device is in use`

* Cause

  On macOS, other programs hold every packet capture device, so the Driver cannot open one for the port.

* Fix

  Close other packet capture programs, such as Wireshark, then start the task again.

### `Permission denied opening ...: the Driver needs CAP_NET_RAW`

* Cause

  On Linux, the Driver cannot open a raw socket on the port.

* Fix

  Reinstall the Driver service with `sudo synnax-driver install`, or run the Core or the Driver as root. See [network interface access](https://docs.synnaxlabs.com/reference/hardware/ethercat/configure-device#network-interface-access).

### `Failed to scan for devices`

* Cause

  The Driver cannot scan a port. The description gives the reason, such as no raw Ethernet access.

* Fix

  See [network interface access](https://docs.synnaxlabs.com/reference/hardware/ethercat/configure-device#network-interface-access).

## Network start

### `Failed to reach SAFE-OP` or `Failed to reach OP`

* Cause

  A module did not move to SAFE-OP or OP in time when the network started, or every module refused the change, so no task on the port starts. The built-in master waits 10 seconds for SAFE-OP and 10 seconds for OP, and IgH waits 10 seconds for OP. The error names each module and its state. When a module refuses the change, the error also gives the error text of the module, such as “Invalid output configuration”.

* Fix

  Check the error text in the documentation of the module. To run the other modules now, [disable](https://docs.synnaxlabs.com/reference/hardware/ethercat/configure-device#disable-a-device) the module, then start the tasks again. If the error contains “Invalid DC SYNC configuration”, see [`Failed to reach SAFE-OP: ... Invalid DC SYNC configuration`](https://docs.synnaxlabs.com/reference/hardware/ethercat/troubleshooting#failed-to-reach-safe-op--invalid-dc-sync-configuration).

### `Slave ... is not on the network`

* Cause

  A task uses a module that refused SAFE-OP or OP. The network started without the module, and the error gives the error text of the module. The status of the module shows **Failed to start**.

* Fix

  Fix the module, then stop every task on the port and start them again.

### `All slaves must be on the same network`

* Cause

  A task uses modules on two ports.

* Fix

  Create one task for each port.

### `Slave ... is not on the bus` or `Slave ...: expected ..., found ...`

* Cause

  The network changed after you created the task. A module moved, or the Driver does not find it.

* Fix

  Check the cables, then edit the channels of the task to use the modules that are on the network now.

### `Slave ... maps ... input and ... output bits, but its discovered PDO entries hold ... and ...`

* Cause

  The PDOs that the Driver found have a different size than the data that the module exchanges. The Driver does not read or write that module, so it does not give wrong values.

* Fix

  [Restart the Driver](https://docs.synnaxlabs.com/reference/hardware/troubleshooting#restart-the-driver) to scan again. If the error stays, the module is not supported yet.

## Sync mode and clocks

### `Failed to reach SAFE-OP: ... Invalid DC SYNC configuration`

* Cause

  The module is set to a sync mode that the Driver did not set up, so it stays in PRE-OP. By default, the Driver runs SM sync when the module lists an SM sync mode, so a module that is set to DC sync and also lists an SM sync mode does not start.

* Fix

  * **Select the mode of the module** -> in the Configure dialog, set the [sync mode](https://docs.synnaxlabs.com/reference/hardware/ethercat/configure-device#set-the-sync-mode) to the mode that the module is set to.
  * **Set the module to SM sync** -> Dewesoft modules keep the mode in the module, and use a new mode after a power cycle. The [Dewesoft manual for third-party EtherCAT masters](https://downloads.dewesoft.com/manuals/dewesoft-3rd-party-ethercat-masters-manual.pdf) lists the modes of each model and how to set them.
  * **Disable the module** -> [disable](https://docs.synnaxlabs.com/reference/hardware/ethercat/configure-device#disable-a-device) it, so that the Driver stops trying to start it.

### `Slave ... cannot run its DC mode at a bus cycle of ...`

* Cause

  The DC sync mode of the module gives a SYNC0 or SYNC1 cycle that its registers cannot hold at the cycle rate of the network. The error gives the value and its limit. For example, the Dewesoft IOLITE 16xAO and 16xLV set SYNC1 to 1000 cycles, which is more than the 4.29 s limit when the network cycles slower than 233 Hz.

* Fix

  Under [**Sync mode**](https://docs.synnaxlabs.com/reference/hardware/ethercat/configure-device#set-the-sync-mode), enter a cycle that fits, such as a **SYNC1 cycle** of 1 s. You can also make the network cycle faster, for example with a write task at an execution rate of 250 Hz or more.

### `Slave ... cannot use its chosen mode`

* Cause

  The [sync mode](https://docs.synnaxlabs.com/reference/hardware/ethercat/configure-device#set-the-sync-mode) of the module cannot start, so no task on the port starts. The error gives the reason:

  * **The module does not list the mode** -> such as after a firmware update. The error lists the modes of the module.
  * **A cycle is set on a mode that cannot take it** -> a mode that does not run SYNC0, or a mode in which the module sets its own clock ticks.

* Fix

  * **The module does not list the mode** -> in the Configure dialog, which marks the mode, select a mode again.
  * **A cycle is set on a mode that cannot take it** -> clear the cycles, or select a mode that takes them.

### `The clock of slave ... is ... off the reference clock`

* Cause

  The clock of a module in DC sync stayed more than 10 µs off the reference clock for two seconds, so the Driver did not start SYNC0.

* Fix

  Check the cables and the power of the modules, then start the task again.

### `The bus on ... cycles at ... Hz while a slave runs DC sync`

* Cause

  The Driver sets the SYNC0 and SYNC1 cycles of a module in DC sync from the cycle rate when the network starts, so the rate stays the same while the network runs. A task that needs another rate does not start.

* Fix

  Use a sample rate that the network rate is a multiple of, or an execution rate at or below the network rate.

  To change the rate, stop every task on the port. The first task that starts again sets the rate, so start a task at a rate that every task fits first. For example, read tasks at 300 Hz and 200 Hz need 600 Hz, so first start a write task at an execution rate of 600 Hz.

### `Failed to restore the distributed clock`

* Cause

  The status of a module shows this message when the module lost its clock settings, for example after a power loss, and the Driver could not set them again. The Driver keeps the module out of OP and tries again.

* Fix

  If the status stays, check the power and the cabling of the module.

For other problems, see [Troubleshoot hardware](https://docs.synnaxlabs.com/reference/hardware/troubleshooting).
