Skip to main content

python-aaronia

Python bindings for sdr-aaronia-rs. Stream IQ samples from Aaronia SPECTRAN V6 devices, through an RTSA-Suite PRO HTTP server block or the native SDK, or play back recorded .rtsa files, into NumPy or Apache Arrow.

  • PyPI package: python-aaronia · importable module: aaronia
  • Wheels: abi3, CPython ≥ 3.9, one wheel per OS and architecture, plus an sdist for other platforms. Building from the sdist requires a Rust toolchain.
  • License: GPL-3.0-or-later

Install

pip install python-aaronia

From a checkout, which requires Rust and maturin:

cd python-aaronia
maturin develop --release

Quickstart

import aaronia

cfg = aaronia.AaroniaConfig()
cfg.http_base_url = "http://localhost:54664"  # RTSA-Suite HTTP server block
cfg.center_freq = 2.44e9                      # Hz
cfg.sample_rate = 15.36e6                     # Hz
cfg.format = "F32"                            # wire format: F32, F16, or I16

src = aaronia.AaroniaSource()
src.start_streaming(cfg)

samples = src.read_samples_numpy(65536)       # numpy complex64 array
batch = src.read_samples_arrow(65536)         # pyarrow FixedSizeListArray of [re, im]

src.set_center_frequency(2.41e9)              # live retune, no teardown

print(src.cumulative_drops(), src.take_overrun(), src.last_timestamp_ns())
src.stop_streaming()

File playback: set cfg.file_path = "capture.rtsa" instead of http_base_url.

The quickstart covers configuring the RTSA-Suite HTTP Server block, which everything above depends on.

Configuration (AaroniaConfig)

Every field is readable and writable.

Field Meaning
http_base_url RTSA-Suite HTTP server URL; pins the HTTP backend
file_path Path to a recorded .rtsa file; pins the file backend
device_serial Device selection for the native-SDK backend
center_freq Center frequency, Hz
sample_rate IQ sample rate, Hz (the Aaronia "span")
reference_level Reference level, dBm
format HTTP wire format: "F32", "F16" or "I16". I16 is the low-bandwidth network mode
receiver_channel "Rx1" (default), "Rx2", or "Rx1And2" (native SDK, full V6)
read_timeout Seconds a blocking read waits before AaroniaTimeoutError (default 30.0)
auto_reconnect Reconnect the HTTP stream after a drop (default True)

Unknown format/receiver_channel strings raise ValueError instead of silently defaulting.

Behaviour

  • One copy per read. Samples are copied once from the Rust receive buffer into a NumPy or Arrow owned buffer, which is then safe to hold indefinitely. This is not zero-copy; one copy is the accurate count.
  • Blocking calls release the GIL. Other Python threads keep running; KeyboardInterrupt is delivered between calls. Reads block until count samples arrive or cfg.read_timeout seconds (default 30) elapse, which raises AaroniaTimeoutError.
  • Connecting retries transient failures, up to 4 attempts within a 10 second budget, so a cold *.local hostname or a server that is still starting does not fail on the first attempt.
  • Dropped streams reconnect automatically when auto_reconnect is enabled, which is the default. The reader reopens the stream, re-applies the current tuning, and flags the first read after the gap through take_overrun(). After five failed attempts the stream ends and reads raise AaroniaConnectionError.
  • Typed exceptions. AaroniaConnectionError (unreachable endpoint), AaroniaTimeoutError, AaroniaHardwareError (device and SDK errors) and ValueError (invalid configuration), mapped from the Rust error enum with the full cause chain in the message.
  • Dual-channel reads (receiver_channel = "Rx1And2" with read_samples_dual_numpy(count), returning two time-aligned arrays) require the native-SDK backend: Windows or Linux with the Aaronia SDK installed, and a two-input V6. This path is hardware-unverified; the development device is a single-channel V6 ECO.

Source methods

Method Purpose
start_streaming(cfg) / stop_streaming() Session lifecycle
read_samples_numpy(count) NumPy complex64 array
read_samples_arrow(count) PyArrow FixedSizeListArray of [re, im] float32 pairs
read_samples_dual_numpy(count) (rx1, rx2) NumPy arrays (dual-channel captures)
set_center_frequency(hz) / set_sample_rate(hz) / set_reference_level(dbm) Live retuning
cumulative_drops() Total server-reported dropped samples
take_overrun() True once per detected receive-side overrun
last_timestamp_ns() Epoch-ns timestamp of the last received block (HTTP backend; 0 otherwise)

Download files

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

Source Distribution

python_aaronia-0.6.1.tar.gz (379.5 kB view details)

Uploaded Source

Built Distributions

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

python_aaronia-0.6.1-cp39-abi3-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.9+Windows x86-64

python_aaronia-0.6.1-cp39-abi3-manylinux_2_39_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.39+ x86-64

python_aaronia-0.6.1-cp39-abi3-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file python_aaronia-0.6.1.tar.gz.

File metadata

  • Download URL: python_aaronia-0.6.1.tar.gz
  • Upload date:
  • Size: 379.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for python_aaronia-0.6.1.tar.gz
Algorithm Hash digest
SHA256 16c4dcf66011d993a43534f6c96f3bf36ef25fbb2783138915aa7e112d78de5c
MD5 987bd79889b71bf4a4c5a9d8a019a733
BLAKE2b-256 d93e373ae82bbce23ef2d670fa78903a290446f614ae65136366bf8af6c1512a

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_aaronia-0.6.1.tar.gz:

Publisher: release.yml on isaacbentley/sdr-aaronia-rs

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

File details

Details for the file python_aaronia-0.6.1-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for python_aaronia-0.6.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2f3b5e324b931881f7732b8f19496f77567e25302caf053a251fb8937c9a9893
MD5 842555476caec6c846ad932d866e9970
BLAKE2b-256 dcbc8c52fa3d79a6e551a7d7c4a0a13f7a7d82845f0b94978bf984e3c1fd5ebc

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_aaronia-0.6.1-cp39-abi3-win_amd64.whl:

Publisher: release.yml on isaacbentley/sdr-aaronia-rs

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

File details

Details for the file python_aaronia-0.6.1-cp39-abi3-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for python_aaronia-0.6.1-cp39-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e1102451133b8004da23a12620e171559b796d5ca0170d03b586da4fe987e934
MD5 a2cd47099e6ba27e765062b45a1002fa
BLAKE2b-256 744710177e5d4c1b2a470aa0b7c2a7d432cf9607d6993a06dd1fb44dbe7eb702

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_aaronia-0.6.1-cp39-abi3-manylinux_2_39_x86_64.whl:

Publisher: release.yml on isaacbentley/sdr-aaronia-rs

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

File details

Details for the file python_aaronia-0.6.1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for python_aaronia-0.6.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af08eab3f699623ef3f099aa0dfe557d8d1b237e68f497916be3d2df7fd4a76c
MD5 f2c3f50dcad7a85df1e30f2beb1cb747
BLAKE2b-256 aa34ee7e758afe9fd4e3fd84db84f0682665c31900e77a4843babcb75eed439b

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_aaronia-0.6.1-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on isaacbentley/sdr-aaronia-rs

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

Release history Release notifications | RSS feed

0.11.2

4 files

0.11.1

4 files

0.11.0

4 files

0.10.0

4 files

0.9.0

4 files

0.8.2

4 files

0.8.1

4 files

0.8.0

4 files

0.7.7

4 files

0.7.6

4 files

0.7.5

4 files

0.7.4

4 files

0.7.3

4 files

0.7.2

4 files

0.7.1

4 files

0.7.0

4 files

0.6.2

4 files

This release

0.6.1 This release

4 files

0.6.0

4 files

0.5.1

4 files

0.5.0

4 files

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