Description
This is a python program for controlling Dante network audio devices (and possibly others in the future). It's early, so expect things to break or switches to change. Use this at your own risk; it's not ready for anything other than a test environment and could make the devices behave unexpectedly. The first goal is to do everything that Dante Controller can do that would be useful for control of the devices from a command-line interface or within scripts.
For more information, check out the gearspace discussion.
Features
Current
- AVIO input/output gain control
- AES67 readiness in the browser: supported and active modes, pending changes, and DDM-reported RTP flow availability
- Add/remove subscriptions
- CLI and browser interface
- Cross-platform daemon
- DDM-enrolled device settings in the browser, including latency, encoding, analog gain, preferred leader, network configuration, reboot, and sample-rate controls for supported models
- Primary and secondary DHCP/static network configuration on supported Wing devices, through the browser, CLI and API, including DDM-managed control
- Device lock/unlock
- Display active subscriptions, Rx and Tx channels, devices names and addresses, subscription status
- JSON output
- Set device latency, sample rate, encoding
- Set/reset channel names, device names
- mDNS device discovery
Installation
To install from PyPI:
uv tool install netaudio
Or with pip/pipx:
pip install netaudio
To install from a clone (requires Python 3.9+ and a Rust toolchain):
uv sync
uv run netaudio
Arch Linux
To install from AUR, build the package with aur/netaudio.
Usage
Run netaudio if installed globally, or uv run netaudio from a clone.
Use --help to list commands and options.
To open the browser interface:
netaudio daemon start
netaudio daemon web --open
The server reports its installed version at GET /server-info and during
local-network discovery. A Git revision is included when the installation
metadata identifies a Git commit.
Run tests:
uv run pytest -q
cargo test --manifest-path packages/netaudio-core/Cargo.toml
Lint and format:
uv run ruff check .
uv run ruff format .
HTTPS
The daemon serves plain HTTP by default. If you already have a certificate for the machine, the daemon can additionally serve HTTPS on a second port; nothing is generated or managed for you:
[daemon]
tls_certificate = "/etc/netaudio/daemon.crt"
tls_key = "/etc/netaudio/daemon.key"
tls_port = 9443
Relative paths resolve against the config file's directory, tls_port
defaults to 9443, and the HTTP port keeps working for local tools. netaudio daemon tls shows the active configuration and the certificate's SHA-256
fingerprint; netaudio daemon web lists the HTTPS addresses alongside HTTP.
The Bonjour record carries the HTTPS port as tls_port. Clients trust the
certificate through their normal trust store, so a certificate signed by a CA
your devices already trust is the least friction.
Documentation
Release files for netaudio 0.3.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| netaudio-0.3.9.tar.gz | 702.0 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| netaudio-0.3.9-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| netaudio-0.3.9-py3-none-manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64 | Details |
| netaudio-0.3.9-py3-none-manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.28+ ARM64 | Details |
| netaudio-0.3.9-py3-none-macosx_11_0_x86_64.whl | Python 3 | none | macOS 11.0+ x86-64 | Details |
| netaudio-0.3.9-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
Total release size: 7.1 MB
Release files / netaudio-0.3.9.tar.gz
| Download URL | netaudio-0.3.9.tar.gz |
|---|---|
| Size | 702.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c281d9d249eba05429c185a44a8f308fccdb2f200df551c17452764633d2b65d
|
|
BLAKE2b-256 checksum How to use checksums |
20549e614c68de0e1a1f530836842211eec34c838f061d018ccd293c0cc2d3cd
|
| 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 11, 2026.
Transparency logRelease files / netaudio-0.3.9-py3-none-win_amd64.whl
| Download URL | netaudio-0.3.9-py3-none-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
dc98aa48c12f782f27a763b183e86d7b5f1c018846ce23e2faaed754b09a098a
|
|
BLAKE2b-256 checksum How to use checksums |
fe285de1236cdd35814c0c684b8a0892e01e8554d1b7686c10b312ac7b7ebca9
|
| 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 11, 2026.
Transparency logRelease files / netaudio-0.3.9-py3-none-manylinux_2_28_x86_64.whl
| Download URL | netaudio-0.3.9-py3-none-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
5fe4c1bd63d75b69e474dafa46c2fe6885287808cf916964c32bc67403634b0a
|
|
BLAKE2b-256 checksum How to use checksums |
affa4449469a9895236976f3bb651a9c51956e5daee0fdda4e7ff5055db3b804
|
| 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 11, 2026.
Transparency logRelease files / netaudio-0.3.9-py3-none-manylinux_2_28_aarch64.whl
| Download URL | netaudio-0.3.9-py3-none-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
dd8615b73bbe2278642ef8ca610fc837276b2ca56aea41ccf05362496cfc6e95
|
|
BLAKE2b-256 checksum How to use checksums |
ce91d6bbbdecf3fad96eb1154f99e258239e0eec5ea371d5d56690c0e940ae30
|
| 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 11, 2026.
Transparency logRelease files / netaudio-0.3.9-py3-none-macosx_11_0_x86_64.whl
| Download URL | netaudio-0.3.9-py3-none-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Python 3 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
485bb93197455c5cb39c53abda86e1bf5755502d8c8bc34115ac67601e102489
|
|
BLAKE2b-256 checksum How to use checksums |
753c0d7e2465b7227a83386db8ced8becdc09fa5444e26808b91df8addf8143f
|
| 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 11, 2026.
Transparency logRelease files / netaudio-0.3.9-py3-none-macosx_11_0_arm64.whl
| Download URL | netaudio-0.3.9-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b7fcc35a2c9f9598980f9a699b2d7eafc7929b6525f80d344a4af9e3c9918f44
|
|
BLAKE2b-256 checksum How to use checksums |
8a3b7448f3d719e4f536295620129cccc8522cee2549e9224c5627911ac357a0
|
| 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 11, 2026.
Transparency log