Skip to main content

sendspin_auracast

Receive Sendspin PCM audio and broadcast it over Bluetooth LE Audio (Auracast) using Bumble.

Installation

pip install sendspin_auracast

For local development:

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"

Usage

Broadcast audio from a Sendspin WebSocket server:

sendspin-auracast ws://localhost:8927/sendspin

The client advertises itself as a Sendspin player, receives PCM audio chunks, encodes them as LC3, and broadcasts them as an Auracast stream.

Use a custom Bumble transport or broadcast name:

sendspin-auracast ws://localhost:8927/sendspin \
  --transport serial:/dev/ttyACM0,1000000 \
  --name "Sendspin Auracast"

Broadcast with encryption:

sendspin-auracast ws://localhost:8927/sendspin --code "my-password"

Add manufacturer-specific BLE advertising data:

sendspin-auracast ws://localhost:8927/sendspin --manufacturer-data 0x0059:010203

Tune startup latency:

sendspin-auracast ws://localhost:8927/sendspin \
  --sendspin-buffer-ms 50 \
  --presentation-delay-us 20000 \
  --max-transport-latency-ms 40

The bridge defaults to a 100 ms advertised Sendspin player buffer. Smaller values can reduce the delay after pressing play, while larger values may be more reliable on busy hosts or noisy Bluetooth links.

For debugging, print received chunks instead of broadcasting:

sendspin-auracast ws://localhost:8927/sendspin --print

To write raw audio bytes to stdout instead:

sendspin-auracast ws://localhost:8927/sendspin --raw

Development

Run tests:

pytest

Run linting:

ruff check .

Build the package:

python -m build

Prepare a release locally:

python scripts/prepare_release.py 0.2.0

Publish to PyPI:

twine check dist/*
twine upload dist/*

Releases

Use the GitHub Actions workflow Prepare Release to create a PyPI release. It:

  • updates pyproject.toml to the requested version
  • runs lint, tests, python -m build, and twine check
  • commits the version bump and creates a v* tag
  • pushes the commit and tag
  • creates a GitHub Release

Run the Publish to PyPI workflow manually when you want to publish. Provide the release tag, such as v0.2.0, and it will publish that exact version to PyPI. Make sure the repository's PyPI trusted publishing settings are configured for the release environment before using it.

Metadata

Release files for sendspin-auracast 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sendspin-auracast 0.3.0
File Size Uploaded
sendspin_auracast-0.3.0.tar.gz 14.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sendspin-auracast 0.3.0
File Interpreter ABI Platform
sendspin_auracast-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 29.4 kB

Release files / sendspin_auracast-0.3.0.tar.gz

Download URL sendspin_auracast-0.3.0.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f20726988e3ddf4810fccad70bdca110ff4c0905a1eb38e80a799d00bead5418
BLAKE2b-256 checksum
How to use checksums
91c11b89ad762fa8c0d0787a9c18ad3afb87e7d755230060a99ffd084f1b1d91
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 28, 2026.

Transparency log

Release files / sendspin_auracast-0.3.0-py3-none-any.whl

Download URL sendspin_auracast-0.3.0-py3-none-any.whl
Size 14.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
76731b9c809879173a711299cb2c8ad6bebd3216a35cb3e8311d30c2469def8e
BLAKE2b-256 checksum
How to use checksums
6bf37d11001c8b741edce93d993458c25a6f091809aed61266211531c1939042
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 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.2

2 release files

0.2.0

2 release files

0.1.0

2 release 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