SP105E (MixUp Pixel v1): protocol
Interface
Section titled “Interface”- the BLE name usually contains
SP105; - service:
FFE0; - characteristic:
FFE1; - protocol: binary;
- command size: 5 bytes;
- no terminator.
Commands
Section titled “Commands”| Bytes | Purpose |
|---|---|
38 RR GG BB 1E |
static RGB |
38 CA CA CA 10 |
status query |
38 CA CA CA AA |
toggle power |
38 CA CA CA 03 |
speed +1 |
38 CA CA CA 09 |
speed -1 |
38 CA CA CA 2A |
brightness +1 |
38 CA CA CA 06 |
scene 0 |
38 SS CA CA 2C |
scene SS, when SS > 0 |
Examples:
RGB(255,128,0): 38 FF 80 00 1EScene 3: 38 03 CA CA 2CStatus: 38 CA CA CA 10Power toggle: 38 CA CA CA AAStatus
Section titled “Status”The reply may contain extra firmware-specific bytes. The first four bytes:
| Offset | Field |
|---|---|
| 0 | power: 00 off, non-zero on |
| 1 | scene ID |
| 2 | speed step |
| 3 | brightness step |
| 4..N | firmware-specific, keep for diagnostics |
Clear stale notifications before a status query. If no notification arrives, a GATT read of the same characteristic is acceptable.
Power toggle
Section titled “Power toggle”The correct algorithm:
actualPower = queryStatus().powerif actualPower != desiredPower: send 38 CA CA CA AA wait verify queryStatus().power == desiredPowerRepeating the toggle without reading the status can put the device back into its original state.
RGB, scene and speed
Section titled “RGB, scene and speed”RGB:
- read the status;
- for a non-zero RGB, power on via the conditional toggle;
- send
38 RR GG BB 1E; - check the status if the firmware reports the applied mode.
Scene:
- ensure power is on;
- for scene 0 send
38 CA CA CA 06; - for the rest send
38 SS CA CA 2C; - re-read the status.
Speed is set relative to the current value:
steps = abs(targetSpeed - currentSpeed)Send 03 or 09 the required number of times, then check the status. Recommended target speed
range: 0..6.