Skip to main content

DongLoRa USB Multiplexer — share one dongle with multiple applications

Project description

DongLoRa Mux (Python)

USB multiplexer daemon — lets multiple applications share one DongLoRa dongle simultaneously. Speaks the DongLoRa Protocol v2 wire protocol (see PROTOCOL.md).

What It Does

  • Owns the USB serial connection exclusively (flock-protected).
  • Exposes a Unix domain socket and optional TCP listener speaking the DongLoRa Protocol v2 frame format.
  • Tag-correlated solicited responses — concurrent commands from multiple clients are routed back to the originator via a mux-allocated device-tag map (PROTOCOL.md §13.6).
  • RX fan-out — every over-the-air RX is broadcast to all clients.
  • TX loopback (§13.4) — a successful TX from one client is delivered to every other client as an RX event with origin = LOCAL_LOOPBACK.
  • Smart SET_CONFIG arbitration (§13.2) — the first successful call locks the config; cross-client calls get ALREADY_MATCHED / LOCKED_MISMATCH with the lock owner's params echoed. A single connected client can still retune freely (scanner mode).
  • RX_START / RX_STOP ref-counting — the radio stays in RX as long as any client wants it.

Running

just run                            # start the mux daemon
just verbose                        # start with verbose logging
just run --tcp 5741 --port /dev/ttyACM0   # with options

Depends On

  • donglora (>= 1.0) — the Python client library. Provides the wire-level frame codec, event parsers, and USB discovery helpers this mux is built on.

Relationship to donglora-mux (Rust)

This package is a Python port of the Rust donglora-mux daemon. The two implementations are functionally equivalent — they speak the same DongLoRa Protocol v2 wire protocol, implement the same §13.2 / §13.4 multi-client semantics, and are drop-in interchangeable in front of the same dongle. Pick whichever fits your ops environment:

  • Rust (cargo install donglora-mux) — single binary, no runtime deps, ~5 MB release build. Better for production / embedded Linux.
  • Python (pip install donglora-mux) — easy to hack on, integrates with a Python toolchain, useful when Rust isn't an option.

If you find a behavioural divergence between the two, that's a bug — please file it.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

donglora_mux-1.0.0.tar.gz (43.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

donglora_mux-1.0.0-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file donglora_mux-1.0.0.tar.gz.

File metadata

  • Download URL: donglora_mux-1.0.0.tar.gz
  • Upload date:
  • Size: 43.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for donglora_mux-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b90d2830040fb34060c5e356274474318375e7a6c893f9b6d49cf38fa17f5837
MD5 ee0d0baaac6eebd3394f3f9dffa7aa1b
BLAKE2b-256 b20f1a91e1e503482c06fc3980b1c47bc29904122a31207a7e4c6b5107f5957e

See more details on using hashes here.

Provenance

The following attestation bundles were made for donglora_mux-1.0.0.tar.gz:

Publisher: ci.yml on donglora/mux-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file donglora_mux-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: donglora_mux-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for donglora_mux-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d44fd943fd30c43cd3681bc938a708a1070c9d80cb78d4e8f55b4e5d0b2db4b5
MD5 beade50b1b928bc5c5e4f2dd6e720bae
BLAKE2b-256 b7e8780bb41e6de6d42c55a5a6f0d6330d9fc778b7852514a31af555ee87b623

See more details on using hashes here.

Provenance

The following attestation bundles were made for donglora_mux-1.0.0-py3-none-any.whl:

Publisher: ci.yml on donglora/mux-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page