Case study
openmili: implementing the Mi-Light 2.4 GHz control protocol
openmili implements the Mi-Light 2.4 GHz LED control exchange with an nRF24 radio acting as a PL1167 backend. An Arduino sketch sends and receives framed packets over serial, while a Python daemon maps UDP commands to light-control messages with configurable sender IDs. The code specifies channels, sync words, CRC handling, and command mappings.
- Targets
- Protocol
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
- Stars
- 111
- Last commit
- 2015-06-07
- Language
- C++
- License (GitHub)
- GPL-3.0
GitHub data as of 2026-11-09
Requirements & limits
- Prerequisites: The included sketch uses an Arduino-compatible board, an nRF24L01 radio, and the RF24 library.
- Prerequisites: The host daemon requires Python serial support and a serial connection to the sketch.
- Limits: TCP handling in the host daemon is marked unimplemented.
- License: GPL-3.0 license.
Cite
BibTeX
@misc{openmili-case,
title = {{openmili: implementing the Mi-Light 2.4 GHz control protocol}},
howpublished = {\url{https://github.com/henryk/openmili}},
url = {https://github.com/henryk/openmili},
urldate = {2026-11-06},
note = {Awesome REA entry: \url{https://awesomerea.org/resources/openmili-case/}}
}Plain text
openmili: implementing the Mi-Light 2.4 GHz control protocol. https://github.com/henryk/openmili (accessed 2026-11-06). Awesome REA entry: https://awesomerea.org/resources/openmili-case/
Useful? Star Awesome REA on GitHub2.4k
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · henryk/openmili · Revision 0ae5ecb
- MiLightRadio.cpp GitHub · henryk/openmili · Revision 0ae5ecb
- host/openmilid.py GitHub · henryk/openmili · Revision 0ae5ecb
More in Protocols
- AcuRite 00592TX: decoding wireless temperature frames · Case study
- DIY Saab 9-3 Tachometer: decoding CAN signals for RPM and speed · Case study
- free-outernet: reconstructing Outernet broadcast services · Case study
- MikroTik WinBox Terminal Client: implementing the terminal protocol · Case study
- pippin: a Linux client for macOS high-performance Screen Sharing · Case study
- OpenSpy Core: reconstructing GameSpy online services · Case study