Skip to content

BLE Services & UUIDs

Stable

Full UUID reference for all OWLS BLE services and characteristics. Verified against Smart Sprout V1.1 firmware (ble.h).

LED Control Service

Service UUID: f82d2279-9f54-4851-8394-377d54fb99bb

CharacteristicUUIDPropsFormatDescription
LED Powerfd5897ee-c402-4260-a6dc-f3d7b109d724R/WBLEByte0 = off, 1 = on
LED Modea96427ff-5f18-4a83-be0a-0a9a5ab91f13R/WBLEByteWS2812FX mode index (0–255)
Brightness74c294a1-a211-4ac5-adfa-18b574f26239R/WBLEByte0–255
Colorce634504-106b-4ce3-b29e-de0de1591b8fR/W8-byte char6 uppercase hex chars, e.g. FF6B35
Speed4ff03862-869e-4a77-aeb7-cda7eff0ea61R/W4-byte uint32 LEMilliseconds per segment cycle
Cycled0c28dc7-cede-4b8c-a71c-ade915afa38fR/WBLEByte0 = auto-cycle off, >0 = on
Cycle Time56d73e7f-9dcc-408f-bcad-68a763d8f6f0R/W8-byte charASCII decimal milliseconds, e.g. 10000
LED Current44c9c81f-5293-4911-9eb1-d0f2a18a04c6R/Notify8-byte charEstimated draw — e.g. 240 mA
Audio Reactive2264ea6f-d67b-45ac-8b95-5ee3f4a9c57eR/WBLEByte0 = off, >0 = on
Auto Thresholdf752b4c4-8ea8-4461-8935-10df5467ef25R/WBLEByte0 = use static threshold, >0 = use dynamic
Rel Thresholddb034f32-31d8-4c83-b768-a32d0ef04b32R/W8-byte charASCII float — scalar on rolling avg, e.g. 3.0
Offset Thresholdd72345e3-e7bb-4e1e-a121-970cd44a6768R/W8-byte charASCII float — fixed offset added to dynamic threshold
Static Thresholde0975faf-6888-4a83-b148-a7132b877627R/W8-byte charASCII float — absolute trigger level when auto threshold is off
Audio Damping5aeae22f-bbef-4b06-b54a-7e95eedc12d4R/WBLEByteMin ms between audio triggers
Button Advancecc07600f-11a3-4e5a-bc42-88f52aeddc68R/WBLEByte0 = disable physical button mode cycling, >0 = enable

Cycle Time is milliseconds

10000 = 10 seconds. The firmware parses with strtoul — send milliseconds, not seconds.

Button Advance

Toggles whether the physical button cycles through LED modes. Does not trigger a mode advance via BLE — it is a configuration flag for the hardware button.

Metadata Service

Service UUID: ff391b43-ea80-456a-add4-eb9091a69163

Read-only JSON strings exposing device identity and capability flags. Read all on connect to build the device profile before presenting UI.

CharacteristicUUIDDescription
Index6b76ea09-a6e5-4163-b68b-334dcee19e78Ordered array of capability keys present on this device
Powerdc54c9a7-2ec7-40d1-bfae-44b0188e72e8{ type, cap, io, v } — power supply info
Lightse5dff126-6106-4744-94e5-85b577e66f77{ qty, type, pin } — LED strip config
Audio1162e818-a062-426f-ac23-a53173b1b6cf{ type, fft } — audio hardware info
Sensors95fdc978-217e-45d2-bc4d-95d8320617f9{ audio, mic, motion } — sensor capabilities
Profile0aaa858d-a11b-4de0-bae6-323db9d0ae16{ img, ui, theme } — display/UI hints for app

Read the Index characteristic first — it tells the app which capability sections are present:

json
["power", "light", "audio", "sense", "profl"]

Standard BLE Services

ServiceUUIDCharacteristicChar UUIDProperties
Battery0x180FBattery Level0x2A19R/Notify — uint8, 0–100%
Device Info0x180AManufacturer0x2A29R — string
Device Info0x180AModel0x2A24R — string
Device Info0x180AFirmware Version0x2A26R — string
Current Time0x1805Current Time0x2A2BR/W — 10-byte packed struct
Env Sensing0x181ATemperature0x2A6ER/Notify — int16, units of 0.01°C

Notify Characteristics

Subscribe after connecting for live updates pushed from device to app:

CharacteristicUUIDFormatNotes
Battery Level0x2A19uint80–100%, derived from sigmoid voltage curve
Temperature0x2A6Eint16ambient_celsius × 100 (die temp minus 5°C offset)
LED Current44c9c81f-...ASCII stringEstimated draw, e.g. 240 mA

Open Hardware · Open Source · Open Protocol