finds.dev← search

// the find

Fishwaldo/esp_ghota

★ 447 · C · MIT · updated Feb 2024

esp32 OTA Component to update firmware from Github Releases

An ESP-IDF and PlatformIO component that checks GitHub Releases for a newer SemVer tag, then downloads and flashes the matching app and storage images over OTA. It's for people who already build firmware in GitHub Actions and want devices in the field to pick up those releases without a manual flash.

- Uses a streaming JSON parser (lwjson) instead of buffering the whole GitHub API response, which matters on an ESP32 with limited RAM. The README calls out that these responses can be large.

- Version gating is done with SemVer comparison, and the README says it works with the esp-idf app rollback and anti-rollback features, so a bad image can fall back to the previous one.

- One release can carry both the app and a storage image (spiffs, littlefs or fatfs). Glob patterns select the right per-target binary, so one CI pipeline can serve an ESP32 and an ESP32-S3 fleet.

- Progress is reported through the esp_event loop, and updates can be triggered by a timer or by a manual call, so the application decides when and how to show the update to the user.

- The last push was in February 2024, more than two and a half years ago. Check the issue tracker and recent esp-idf releases before depending on it in a new product.

- The sample CI workflow pins esp-idf v4.4.3 and uses upload-artifact v3 and download-artifact v2. Copying it verbatim will probably fail on current GitHub runners, so it needs updating before it's useful.

- The usage examples never show how the GitHub token is supplied. The README warns against hardcoding a PAT and suggests NVS, but gives no code for that path, so the easiest way to follow the examples is the one the README warns against. The repo and owner names also live in Kconfig rather than the config struct shown, so the snippets don't cover the full setup.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →