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)
| 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)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA 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.