# 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.

- Type: Case study
- Targets: Protocol
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-11-06
- Added to the catalog: 2026-11-09
- Original resource: <https://github.com/henryk/openmili>
- Primary source: <https://github.com/henryk/openmili/blob/0ae5ecb2741893f28e71dab98f367394518f3251/README.md>
- Catalog page: <https://awesomerea.org/resources/openmili-case/>
- Record JSON: <https://awesomerea.org/resources/openmili-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/openmili-case/index.md)

## 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.

## Primary sources

1. <https://github.com/henryk/openmili/blob/0ae5ecb2741893f28e71dab98f367394518f3251/README.md>
2. <https://github.com/henryk/openmili/blob/0ae5ecb2741893f28e71dab98f367394518f3251/MiLightRadio.cpp>
3. <https://github.com/henryk/openmili/blob/0ae5ecb2741893f28e71dab98f367394518f3251/host/openmilid.py>

## More in Protocols

- [AcuRite 00592TX: decoding wireless temperature frames](https://awesomerea.org/resources/acurite-00592tx-protocol-case/index.md) · Case study
- [DIY Saab 9-3 Tachometer: decoding CAN signals for RPM and speed](https://awesomerea.org/resources/diy-saab-9-3-tachometer-case/index.md) · Case study
- [free-outernet: reconstructing Outernet broadcast services](https://awesomerea.org/resources/free-outernet-protocol-case/index.md) · Case study
- [MikroTik WinBox Terminal Client: implementing the terminal protocol](https://awesomerea.org/resources/winbox-terminal-protocol-case/index.md) · Case study
- [pippin: a Linux client for macOS high-performance Screen Sharing](https://awesomerea.org/resources/pippin-screen-sharing-case/index.md) · Case study
- [OpenSpy Core: reconstructing GameSpy online services](https://awesomerea.org/resources/openspy-core-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
