Skip to main content

yadnp3

Yet Another opendnp3 fork -- an experimental fork of opendnp3, the de facto reference implementation of the DNP3 (IEEE-1815) protocol stack.

The upstream project reached end-of-life on September 1, 2022. This fork extends it with new protocol features, Python bindings, and modern CI.

For commercial or production use, consider Step Function I/O's DNP3 library — a modern, commercially supported Rust implementation with C, C++, Java, and .NET bindings.

Features

Protocol — Master operations:

  • Integrity / class / range / all-objects scans (periodic and on-demand)
  • Select-before-operate and direct-operate commands (CROB, analog outputs)
  • File transfer: read, write, delete, get info, directory listing, abort, authenticate
  • Device attributes (Group 0)
  • Analog input dead bands (Group 34)
  • Freeze operations
  • Cold/warm restart
  • Time synchronization (LAN and serial modes)
  • Link status check

Protocol — Outstation:

  • Static and event reporting for all standard data types
  • Unsolicited responses with configurable retries
  • Command handling (select/operate, direct operate)
  • File transfer handler interface
  • Broadcast support
  • Configurable event buffer and class assignment

Transports:

  • TCP client and server
  • Outstation TCP client mode (outstation connects to master)
  • UDP
  • Serial
  • TLS (client and server, requires OpenSSL)

Bindings:

  • Python (pybind11) — pip install yadnp3 (primary focus of this fork)
  • Java (JNI) and .NET (C++/CLI) bindings exist from upstream but are not actively maintained in this fork

Python Quick Start

pip install yadnp3
import opendnp3

# Create a manager with 1 thread
manager = opendnp3.DNP3Manager(1)

# ... create channels, masters, outstations
# See python/tests/ for full examples

manager.Shutdown()

Building from Source

Prerequisites

  • CMake >= 3.11
  • C++14 compiler (GCC, Clang, or MSVC 2015+)
  • OpenSSL >= 1.1.1 (optional, for TLS)
  • Python 3.9+ and pybind11 (optional, for Python bindings)

Quick Build

mkdir build && cd build
cmake .. -DDNP3_TLS=ON -DDNP3_TESTS=ON
cmake --build . --parallel $(nproc)
ctest --output-on-failure

CMake Options

Option Default Description
DNP3_TLS OFF TLS support (requires OpenSSL)
DNP3_TESTS OFF Unit and integration tests
DNP3_EXAMPLES OFF Example applications
DNP3_PYTHON OFF Python bindings (pybind11)
DNP3_JAVA OFF Java JNI bindings (upstream, not maintained)
DNP3_DOTNET OFF .NET bindings (upstream, Windows, not maintained)
DNP3_STATIC_LIBS platform Static libraries
DNP3_EVERYTHING OFF All optional targets

Python Wheel (Docker)

docker build -f Dockerfile --build-arg PYTHON_VERSION=3.12 -t yadnp3-build .
docker create --name whl yadnp3-build
docker cp whl:/wheels/. ./dist/
docker rm whl
pip install dist/*.whl

Project Structure

yadnp3/
├── cpp/lib/              Core C++ library (~79k lines)
│   ├── include/opendnp3/ Public API headers
│   └── src/              Private implementation
├── cpp/tests/            Unit, integration, and interop tests
├── cpp/examples/         Example master/outstation applications
├── python/               Python bindings (pybind11, actively maintained)
├── java/                 Java bindings (JNI + Maven, upstream, not maintained)
├── dotnet/               .NET bindings (C++/CLI, upstream, not maintained)
├── generation/           Code generation (Scala/SBT)
├── Dockerfile            Linux wheel build
└── .github/workflows/    CI (build, test, wheel packaging)

License

Licensed under the Apache License 2.0.

Copyright (c) 2010-2011 Green Energy Corp Copyright (c) 2013-2022 Step Function I/O LLC Copyright (c) 2024-2026 f0rw4rd (yadnp3 fork) Copyright (c) 2010-2022 various contributors

Metadata

Release files for yadnp3 3.2.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yadnp3 3.2.1.4
File Size Uploaded Provenance Actions
yadnp3-3.2.1.4.tar.gz 65.9 kB With provenance Details for yadnp3-3.2.1.4.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for yadnp3 3.2.1.4
File Actions
yadnp3-3.2.1.4-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for yadnp3-3.2.1.4-cp314-cp314-win_amd64.whl
yadnp3-3.2.1.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for yadnp3-3.2.1.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
yadnp3-3.2.1.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for yadnp3-3.2.1.4-cp313-cp313-win_amd64.whl
yadnp3-3.2.1.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for yadnp3-3.2.1.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
yadnp3-3.2.1.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for yadnp3-3.2.1.4-cp312-cp312-win_amd64.whl
yadnp3-3.2.1.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for yadnp3-3.2.1.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
yadnp3-3.2.1.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for yadnp3-3.2.1.4-cp311-cp311-win_amd64.whl
yadnp3-3.2.1.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for yadnp3-3.2.1.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
yadnp3-3.2.1.4-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for yadnp3-3.2.1.4-cp310-cp310-win_amd64.whl
yadnp3-3.2.1.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for yadnp3-3.2.1.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
yadnp3-3.2.1.4-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details for yadnp3-3.2.1.4-cp39-cp39-win_amd64.whl
yadnp3-3.2.1.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for yadnp3-3.2.1.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Total release size: 43.0 MB

Release files / yadnp3-3.2.1.4.tar.gz

Download URL yadnp3-3.2.1.4.tar.gz
Size 65.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d04723721119b52097bbd9410ceadc992f35d2d357ea7bf8a4ea0a2d45a0fedb
BLAKE2b-256 checksum
How to use checksums
bbcf52035ed9d7bc605a12e61470b0f3672491d5c247247648e1d650d12fc1dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp314-cp314-win_amd64.whl

Download URL yadnp3-3.2.1.4-cp314-cp314-win_amd64.whl
Size 3.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
f75e3a0e0077cf51f991989048ef017f77f3e0da746d7cc7cbc5f6533202e0cc
BLAKE2b-256 checksum
How to use checksums
3631b5df3ae20e7378b1e36ebe444840e4e0d503ca46d44905181bf14a1c006d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL yadnp3-3.2.1.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7569459602f795c25ebd194c19e8eee87609eb548aca403ad48c0b2a6edf27c6
BLAKE2b-256 checksum
How to use checksums
a0e1aeca2ed96aaffd04cf822725d588ced62dc46537278c6784ef6e92bb1f47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp313-cp313-win_amd64.whl

Download URL yadnp3-3.2.1.4-cp313-cp313-win_amd64.whl
Size 3.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
081ee153866822ea1a8a4f43873220c32d28b50bbc433078a5a5e71c19408b5d
BLAKE2b-256 checksum
How to use checksums
015363d85ae1d46c394524bb6dfe9e1d13d02c82cf31f0d635fe5eec5e160bc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL yadnp3-3.2.1.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
27486353e58c8473b95cdeeb1cb916461b940a0f9dcc021f1717cd660efb7a4c
BLAKE2b-256 checksum
How to use checksums
ff182a3a4329af049a00097a08a310638d6732a4d0b04adfc3529d3c1135b644
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp312-cp312-win_amd64.whl

Download URL yadnp3-3.2.1.4-cp312-cp312-win_amd64.whl
Size 3.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
edab8e1a160e3eddd36a4b7aff1999d53c8f46895343cb8a6a60f8c0b96f9538
BLAKE2b-256 checksum
How to use checksums
0ef6407da7c549171aca963504a83be760a1658fde55e0fca2595866fb63b322
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL yadnp3-3.2.1.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b384a7d02ae65cca84e1a093f6006e17fe557aeaf75cab063a306e4eaf4999a3
BLAKE2b-256 checksum
How to use checksums
cbca4bc79da918c018814345f337610d0d599c93620695c637980847a47cc107
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp311-cp311-win_amd64.whl

Download URL yadnp3-3.2.1.4-cp311-cp311-win_amd64.whl
Size 3.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
3476433ca27966fb32346b2c5dbea365bd950383e0de919f58d9ee048bec22e0
BLAKE2b-256 checksum
How to use checksums
20afdc37b431df2be113391e952dfdb24f2472d000a3b18f9ff1d9a4898d3034
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL yadnp3-3.2.1.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a8642cce66277b01368335915b41e8c7053cccf2932e124c5742431c91f0e764
BLAKE2b-256 checksum
How to use checksums
62d3f4dc7fbb28af03dec49fc65e15185266006882d132391f514a31c4ef37b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp310-cp310-win_amd64.whl

Download URL yadnp3-3.2.1.4-cp310-cp310-win_amd64.whl
Size 3.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
e9a2c4ef0688ffa48071cbfbc5729ba2cb1e1adadd260b6bb78d6a7282b72ce1
BLAKE2b-256 checksum
How to use checksums
2ac4f09e631fc70fdc0a6b0f6c93955cee450586cd532d958326b1643578ba55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL yadnp3-3.2.1.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c8f7a900c7721ef2b60ecd5917d131d0ab353b46f0f430f8875a4749bc9d60a3
BLAKE2b-256 checksum
How to use checksums
e79c4b8cf0492d7b2c1322b6074f8a4a6bb8aa2f001d7a893b00a4999fc05622
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp39-cp39-win_amd64.whl

Download URL yadnp3-3.2.1.4-cp39-cp39-win_amd64.whl
Size 3.8 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
354375ee0cb56326a635776b98072246cbdbff4fbd59f06ab32a6868098d7857
BLAKE2b-256 checksum
How to use checksums
3f8c676f10850ce89fe2dc124f5a1aa59c45b8c59768a8281d76f8296fd492df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / yadnp3-3.2.1.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL yadnp3-3.2.1.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.3 MB
Tags CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1b7f5752bff415f4fa83a46511fb7809978918f6a14f6219fb538f4fb9df523d
BLAKE2b-256 checksum
How to use checksums
7e1ca07aab169267d7586c24942492aed31b07dcd72cfb1c8fef5bcff402b43c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Security for yadnp3 3.2.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 13 files in this release have been uploaded with provenance metadata.

Select from 13 files

Attestation for yadnp3-3.2.1.4.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page