skillfed

pysoem

Cython wrapper for the SOEM Library

pysoem v1.1.13 78.8K downloads/30d#14,403 on PyPI159
Permissive license MIT Active released

What it is and what it does

PySOEM wraps the Simple Open EtherCAT Master Library in Python via Cython, allowing developers to build EtherCAT master applications in Python rather than C. It handles the low-level complexity of EtherCAT protocol communication—including process data I/O, SDO (Service Data Object) read/write, EEPROM access, and FoE (Firmware over EtherCAT)—so you can focus on device testing and control logic.

The package is distributed as pre-compiled wheels for modern Python versions (3.10–3.12) on Linux, macOS, and Windows, eliminating the need to compile SOEM yourself. It is actively maintained, with recent updates adding No-GIL support and ARM64 wheel availability. Real-time applications using PySOEM require special consideration, and Linux/macOS execution requires administrator privileges; Windows requires a packet capture driver (Npcap or WinPcap).

Use it for:

  • Test and validate EtherCAT slave devices during development without writing C code.
  • Build Python-based automation scripts for industrial control systems that communicate over EtherCAT networks.
  • Read and write device configuration via SDO registers and EEPROM in a Python environment.
  • Perform firmware updates on EtherCAT devices using FoE (Firmware over EtherCAT) from Python.
  • Monitor and log real-time process data from multiple EtherCAT slaves in a single master application.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

PySOEM is a Cython wrapper for the Simple Open EtherCAT Master Library that enables Python applications to communicate with and test EtherCAT slave devices over industrial networks.

Yes, if you need to control or test EtherCAT devices from Python and can meet the runtime requirements (administrator privileges on Linux/macOS, Npcap/WinPcap on Windows). The package is actively maintained, has no known vulnerabilities, and offers permissive licensing. Medium install friction is typical for industrial protocol libraries with compiled extensions; pre-built wheels mitigate most of that cost. Not suitable if you need Python versions older than 3.10 or cannot run with elevated privileges.

Install

pysoem on PyPI

pip

pip install pysoem

uv

uv add pysoem

poetry

poetry add pysoem

Installing pysoem

Before you install

Medium install friction due to compiled C extensions requiring platform-specific wheels. Wheels are available for Python 3.10–3.12 across Linux (x86_64, aarch64, musl), macOS (Intel and ARM), and Windows (64-bit). Linux and macOS require administrator privileges at runtime; Windows requires Npcap or WinPcap installed.

License in practice

MIT license is permissive, allowing commercial and private use with minimal restrictions. You may use, modify, and distribute this package freely provided you include the original license notice.

Quickstart

import pysoem

master = pysoem.Master()
master.open('eth0')
master.scan_and_group()
master.config_init()
# Read/write process data and SDO registers as needed
master.close()

Linux and macOS require administrator/root privileges to execute scripts using PySOEM. Windows requires Npcap (in WinPcap API-compatible mode) or WinPcap to be installed before use.

Verify before relying

  • Whether Python 3.14 wheels mentioned in v1.1.13 changelog are actually available on PyPI or planned for a future release.
  • Real-time performance guarantees or latency characteristics for industrial control loops.
  • Support status for Python versions older than 3.10 or newer than 3.12.

Package facts

License MIT (permissive)
Python support not specified
Install friction medium — platform-specific wheel
Runtime dependencies none
Maintenance actively maintained — 215 days since the last release
Last repo commit
First released
Downloads 78,834/month — #14,403 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pysoem-1.1.13-cp310-cp310-macosx_10_9_x86_64.whl; pysoem-1.1.13-cp310-cp310-macosx_11_0_arm64.whl; pysoem-1.1.13-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pysoem-1.1.13-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pysoem-1.1.13-cp310-cp310-musllinux_1_2_aarch64.whl; pysoem-1.1.13-cp310-cp310-musllinux_1_2_x86_64.whl; pysoem-1.1.13-cp310-cp310-win_amd64.whl; pysoem-1.1.13-cp311-cp311-macosx_10_9_x86_64.whl; pysoem-1.1.13-cp311-cp311-macosx_11_0_arm64.whl; pysoem-1.1.13-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pysoem-1.1.13-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pysoem-1.1.13-cp311-cp311-musllinux_1_2_aarch64.whl; pysoem-1.1.13-cp311-cp311-musllinux_1_2_x86_64.whl; pysoem-1.1.13-cp311-cp311-win_amd64.whl; pysoem-1.1.13-cp312-cp312-macosx_10_13_x86_64.whl; pysoem-1.1.13-cp312-cp312-macosx_11_0_arm64.whl; pysoem-1.1.13-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pysoem-1.1.13-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pysoem-1.1.13-cp312-cp312-musllinux_1_2_aarch64.whl; pysoem-1.1.13-cp312-cp312-musllinux_1_2_x86_64.whl

Development Status :: 2 - Pre-AlphaLicense :: OSI Approved :: MIT LicenseProgramming Language :: CProgramming Language :: CythonProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: Implementation :: CPythonTopic :: Scientific/Engineering

Tags

ethercat master pythonethercat slave communicationindustrial network controlsdo read writeprocess data ethercateeprom access ethercatfoe firmware over ethernet
industrial-controlethercathardware-interface

More Scientific/Engineering packages