Back to Files changed
projects/keepsmile.md

Keepsmile BLE research

The official app for my LED lights was slow, full of ads, and limited to a short list of effects. I wanted to control the lights directly, but their Bluetooth protocol wasn’t documented.

Finding the protocol

I used PacketLogger to capture the Bluetooth traffic while changing colors, brightness, and effects in the app. Then I compared the ATT writes to work out which bytes changed with each setting. All the commands go through one GATT characteristic.

Implementation

Once I had the commands figured out, I built a Python CLI and desktop app with Bleak. I also built a Mac menu bar app in Swift with CoreBluetooth. It supports custom color cycles, voice commands, and light effects.

I’ve tested this on KS03 lights. Other models may use a different protocol.

Links