One of the goals from the start was to make LumiBand an open platform. The firmware exposes a single custom BLE service with six characteristics that let you drive the band from any language or tool that speaks BLE.
What you can control
Everything the companion app does is available over GATT:
- Solid colour + strobe — set R/G/B/brightness in one write, with an optional strobe byte (0 = steady, 1–255 = speed, logarithmic scale)
- Master brightness — a dedicated single-byte characteristic so you can dim/brighten without touching the current colour
- Built-in presets — Classic (sound-reactive with beat detection), Static, Party, Lava, Dim — one byte each
- Custom effects — up to 8 uploadable animation slots, each a grid of up to 8 rows × 15 LEDs with per-effect timing, loop mode, and sound-reactive settings. A chunked upload protocol lets you push new animations over BLE in a few hundred milliseconds
- Playlist mode — queue any combination of custom slots with a configurable interval; the band cycles through them automatically
- Super-saver mode — blanks every other LED to halve power draw, useful for long performances
- Multi-device clock sync — write a shared 32-bit timestamp to all bands simultaneously and they lock to the same animation frame, regardless of when each one connected
- Status notifications — subscribe once and get pushed updates whenever mode or brightness changes; no polling needed
- Battery level — standard Bluetooth Battery Service (0x180F), recognised automatically by nRF Connect, LightBlue, and most BLE tools
OTA firmware update
The nRF52832 build now also exposes the Nordic DFU service alongside the app service. Point nRF Connect at the band, select the .zip the build produces, and the bootloader handles the rest — no cable, no programmer.
Open spec
The full command reference, upload protocol, and working examples in Python, JavaScript, Swift, Kotlin, and QLC+ are in the GIT-repo under tools/lumiband-gatt/. If you build something with it, let us know.
Markus Loeffler
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.