Skip to main content

lightball-ble

Async BLE protocol and client for Holiday Show Home "Show Home" LED Balls — the battery-powered RGB orbs sold under the Holiday Showtime / Show Home brands. They speak Qualcomm/CSR's CSRmesh over a GATT bridge; this library reimplements that framing so you can control a ball from Python (and powers the Home Assistant lightball integration).

Install

pip install lightball-ble

Usage

You provide a bleak BLEDevice (the ball rotates its BLE address, so re-resolve it by the stable local name — e.g. LAB00001CEB11 — before each use):

from bleak import BleakScanner
from lightball_ble import LightBall

device = await BleakScanner.find_device_by_name("LAB00001CEB11")
ball = LightBall(device, "LAB00001CEB11")

await ball.set_state(mode=1, color=0, level=2)   # steady, red, mid brightness
await ball.set_show(6)                            # MultiColor animated show
await ball.turn_off()

# Re-resolve the address later, then reuse the client:
ball.set_ble_device(await BleakScanner.find_device_by_name("LAB00001CEB11"))

Command reference

  • set_state(mode, color, level, *, turn_on=True) — commonMode: animation mode (0=off, 1=steady, 2=blink, 5=fade, 7=waves …), palette color index (0=red … 28=MultiColor), brightness level 0–4.
  • set_show(show_sel, *, turn_on=True) — showView animated preset (0=Christmas … 6=MultiColor).
  • turn_off().

Protocol

lightball_ble.protocol exposes the low-level framing if you need it:

  • Network key: reverse(SHA-256(b"686868\x00MCP"))[:16] (a fixed, product-line shared key — derive_key()).
  • Packet: AES-128 counter-mode payload + an 8-byte byte-reversed HMAC-SHA256 MIC
    • a trailing 0xFF (make_packet).
  • Transport: packets > 20 bytes split across two GATT control points (split_writes).

This was reverse-engineered from the official "Show Home" Android app; see the lightball project for the full writeup.

Develop

pip install -e ".[test]"
pytest --cov=lightball_ble --cov-report=term-missing
ruff check . && ruff format --check .

License

Apache-2.0.

Metadata

Release files for lightball-ble 0.1.1

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

Source distribution (sdist)

Source distribution for lightball-ble 0.1.1
File Size Uploaded Provenance Actions
lightball_ble-0.1.1.tar.gz 10.9 kB With provenance Details for lightball_ble-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for lightball-ble 0.1.1
File Interpreter ABI Platform Actions
lightball_ble-0.1.1-py3-none-any.whl Python 3 none any Details for lightball_ble-0.1.1-py3-none-any.whl

Total release size: 21.3 kB

Release files / lightball_ble-0.1.1.tar.gz

Download URL lightball_ble-0.1.1.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
4558a3b93fa308c657cb9660f97d1a443906afda1200ec19b5f600de6527129d
BLAKE2b-256 checksum
How to use checksums
adec574fc8308f86367ae9367ef3e6adbb6eaf1863e1224420532dfb30fb0d33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jun 15, 2026.

Transparency log

Release files / lightball_ble-0.1.1-py3-none-any.whl

Download URL lightball_ble-0.1.1-py3-none-any.whl
Size 10.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e4ab619d6aa2b8beea951362dcd97179b47748578c2e610c5d2ac4d025742438
BLAKE2b-256 checksum
How to use checksums
03e512ac3cf67fa222279af9053b0d8bb0dfd333c346af23f9ae818e67fcc3cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jun 15, 2026.

Transparency log

Security for lightball-ble 0.1.1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for lightball_ble-0.1.1.tar.gz

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 Jun 15, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

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