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.tomlto the requested version - runs lint, tests,
python -m build, andtwine 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)
| File | Size | Uploaded | |
|---|---|---|---|
| sendspin_auracast-0.3.0.tar.gz | 14.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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