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
Release files for yadnp3 3.2.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| yadnp3-3.2.1.2.tar.gz | 63.7 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| yadnp3-3.2.1.2-cp314-cp314-win_amd64.whl | CPython 3.14 | CPython 3.14 | Windows x86-64 | Details |
| yadnp3-3.2.1.2-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 |
| yadnp3-3.2.1.2-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| yadnp3-3.2.1.2-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 |
| yadnp3-3.2.1.2-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| yadnp3-3.2.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| yadnp3-3.2.1.2-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| yadnp3-3.2.1.2-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 |
| yadnp3-3.2.1.2-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| yadnp3-3.2.1.2-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 |
| yadnp3-3.2.1.2-cp39-cp39-win_amd64.whl | CPython 3.9 | CPython 3.9 | Windows x86-64 | Details |
| yadnp3-3.2.1.2-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 |
Total release size: 43.0 MB
Release files / yadnp3-3.2.1.2.tar.gz
| Download URL | yadnp3-3.2.1.2.tar.gz |
|---|---|
| Size | 63.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36eb2a765f3f4048bb0e05c2d3cb8a049c93fb211f68816a77293410d9b73ecd
|
|
BLAKE2b-256 checksum How to use checksums |
d3b30abe70cfe70845efe6e484fdfb4d0f8984145f1c8154ccb29aebc9ff1245
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp314-cp314-win_amd64.whl
| Download URL | yadnp3-3.2.1.2-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e6691c8f27ded89424f0a62f71808453951cacb0668d053d3c4d0acdce3d9c9a
|
|
BLAKE2b-256 checksum How to use checksums |
e8643c71de26e9a84c8bf089db08b3a01aaebc73b17d2748e069a49ca1519bdd
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | yadnp3-3.2.1.2-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 |
0237cb202d2183f30efdb4def691c0ccc4f0a653d6801946057be4e42d117930
|
|
BLAKE2b-256 checksum How to use checksums |
13680bd8ee044fc015c1e753c1df69dc5ad4d05ad42fce7859ef9c60fbb8902e
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp313-cp313-win_amd64.whl
| Download URL | yadnp3-3.2.1.2-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
40776276e0a0333606dd9f870fabb2d56ecac380a2234a42df460c9e2448b853
|
|
BLAKE2b-256 checksum How to use checksums |
e07490dedb187740b85ef1900c44b1b674b98a120544a58aa26b3e75185d4834
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | yadnp3-3.2.1.2-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 |
87304bbabf00a60c1b025c74f0be1f5d57e8dbe0f88597a6215c367180d5e5ff
|
|
BLAKE2b-256 checksum How to use checksums |
cca7757325bb696ae00d926557f48411bb75a221095976184a112bf5084bc2c9
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp312-cp312-win_amd64.whl
| Download URL | yadnp3-3.2.1.2-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f0edd87552a934def651aabd1ce280c84fe858a86758e3bd68948796d501c91b
|
|
BLAKE2b-256 checksum How to use checksums |
130a57ccef3a967b7766a4fd59fa024192cdc9565a4b88430999149bc77dd631
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | yadnp3-3.2.1.2-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 |
9af188de112e7bf1f0c74663255b74770f7de4b6e9114022b74a4f4c719e4985
|
|
BLAKE2b-256 checksum How to use checksums |
6766ab923d8ce75c42146f1f7993b62c4ceb5cbf54104704e80fd65a59cb0972
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp311-cp311-win_amd64.whl
| Download URL | yadnp3-3.2.1.2-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
daa254ef9aaec411ee6c860a6caa28deb46cddf08b87bc9dcd87fcbaf11877cd
|
|
BLAKE2b-256 checksum How to use checksums |
d16e9cfbad4c378271ab1fdb2839065cba9eebfa14b423974315bb3231f3e9cb
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | yadnp3-3.2.1.2-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 |
7fa6d9377d4c8b9227dcaa66b253d6b62e457959710dd536f6c606646ef6e564
|
|
BLAKE2b-256 checksum How to use checksums |
487f9ccbb16d6bea3a52b795aa21ac1f9efcf1d5d74bff174c6e097ee5ffafc2
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp310-cp310-win_amd64.whl
| Download URL | yadnp3-3.2.1.2-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
43169be3721ef070e386ff48d1f2a2bc45fbd771e6af71084d0d209fdd40343e
|
|
BLAKE2b-256 checksum How to use checksums |
847dff57711075e80ce4d1e42c35b400281348a66d8bebd89c0ac66fee9a7cac
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | yadnp3-3.2.1.2-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 |
55b39588b882deb43be4722c40aebcd56db8b6001394da8a4e01946957da15ee
|
|
BLAKE2b-256 checksum How to use checksums |
1b3b392d5521068f027bf09c9627aa93245cd6ceb1f893e20991db6842d57d72
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp39-cp39-win_amd64.whl
| Download URL | yadnp3-3.2.1.2-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2df5ab2f5bf0f209579b0f49f9f1c3cbc3dce5d7115d64151119a481f0eb9ca1
|
|
BLAKE2b-256 checksum How to use checksums |
e9cfae2c516f359a84a5d3b824bf066cd33594b8cbd17af49f281bee35254b51
|
| 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 Sep 25, 2026.
Transparency logRelease files / yadnp3-3.2.1.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | yadnp3-3.2.1.2-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 |
37fc6937d524dd1b575df01de2a83a58043e98fb9a455e07395781110ae00f29
|
|
BLAKE2b-256 checksum How to use checksums |
969bb978b07dd0e70cf5f7d99513c097e2dd07165157270a39d03d2ed21cc567
|
| 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 Sep 25, 2026.
Transparency log