Repository navigation
Building from source
github-actions[bot] edited this page Oct 24, 2026
·
2 revisions
python tools/check.py builds and tests the same things as CI, on your own machine, and puts the firmware in out/ with the names CI gives it.
python tools/check.py --list # the steps
python tools/check.py tag web # only some of themA step whose tools are missing is skipped and says what it needs.
-
Linux or WSL: run
tools/dev/setup.shonce. It installs SDCC 4.5.0, Emscripten 3.1.74 (and Node 22 if needed) and the Python packages. The AP is built with ESP-IDF v5.5.5 if it is active in the shell, otherwise in theespressif/idf:v5.5.5Docker image. -
Windows or macOS: with Docker Desktop running,
python tools/check.py --dockerruns every step in one image with all the tools.
| Part | Build | Tool versions |
|---|---|---|
| Label firmware |
python tag/tools/build.py fw (2.9"), MODEL=154 python tag/tools/build.py fw (1.54") |
SDCC 4.5.0 exactly |
| AP firmware |
cd ap && python build.py <board>; for a board with the Design tab (S3, C5) run python web/build.py --wasm first, and again after a change to the drawing code (the build stops and says so) |
ESP-IDF v5.5.5, Emscripten 3.1.74 for the Design tab |
| Web page |
python web/build.py, then node --test web/test/*.test.mjs
|
Emscripten 3.1.74 |
| Simulator | see sim/README.md | a C compiler |
-
AP:
idf.py -B build-<board> -p /dev/ttyACM0 flash monitorkeeps the AP's data, like the web page. See Flashing the AP. -
Label: with the jig and flash-tui, or over the air with
esl_client.py tag-ota tag/build/fw/openesl-ota.bin.
idf.py menuconfig → "OpenESL AP" has the radio channel, PAN ID, TX power, the most labels to keep, and which features are on. See ap/README.md.
OpenESL is released under the MIT licence. These pages are made from the wiki/ folder in the repository: to fix something, send a pull request there, or open an issue.
Getting started
Access point
Labels
Layouts
Sending content
- Overview
- HTTP API
- esl-client
- Price lists from CSV
- Scheduled prices
- Home Assistant
- Weather on a label
Running it
- Dashboard
- Health and webhook
- Updating the AP
- Updating labels
- Upgrading from older versions
- Backup and restore
- Moving to a new AP
Help
Developers