Skip to main content

Firmware guides

These guides take you from a fresh clone of the firmware SDK to a production-ready node: install a toolchain, build an example, provision credentials, write your own device logic, and ship OTA updates.

Everything here is task-oriented. When you need the exact wire contract instead — MQTT topic names, payload schemas, state-report semantics — go to the firmware specifications.

Start here​

Pick the platform you are building for. Both use the same SDK, the same API, and the same cloud contract.

ESP-IDF — real ESP32 hardwarePOSIX — Linux/macOS host process
1. InstallSet up ESP-IDFSet up POSIX
2. BuildConfigure and buildConfigure and build
3. Get it onlineNetwork provisioning over BLE or SoftAPAlready on your host's network — no provisioning step
4. Give it an identityAssisted claiming does it during provisioning — nothing to flashFactory NVS → drop nvs_persistent/ next to the binary
5. Make it yoursCode basicsCode basics
Fastest path to a working node

Clone the SDK, cd examples/light, and follow Configure and build. The light example is the reference implementation — it exercises the node data model, all the optional services, and OTA in about 200 lines of app_main.c.

By task​

Writing firmware​

GuideWhat it covers
Code basicsThe shape of a RainMaker Neo application: init order, esp_rmaker_node_init(), esp_rmaker_start()
Data modelNodes, devices, services, parameters, attributes, tags; standard vs custom types; property flags
Custom & standard typesThe full type reference: devices, services, parameters, UI elements
Callbacks and eventsHandling writes and reads, reporting state back, subscribing to the SDK event loop
Serial consoleBuilt-in REPL commands for inspecting and driving a node over UART
Start your own projectCopying an example out of the tree and wiring the SDK into your own build

Enabling features​

GuideEnabled by
Feature overview— (start here to see what is on by default)
Schedules and automationsAlways on
Time and timezoneenable_time_sync + esp_rmaker_timezone_service_enable()
System serviceesp_rmaker_system_service_enable()
Local controlesp_rmaker_local_ctrl_service_enable()
Time series dataParameter property flags
OTA firmware updatesesp_rmaker_neo_ota component + esp_rmaker_ota_enable()
Bridge nodesCONFIG_ESP_RMAKER_NEO_BRIDGE_ENABLE

Device credentials and manufacturing​

GuideUse it when
Device credentialsUnderstanding what a node needs before it can connect
Network provisioningWi-Fi/BLE onboarding — transports, PoP, QR codes, association
Assisted claimingThe default — the node gets its own credentials at first setup
Factory NVSGenerating and flashing credentials for one device
Dashboard batch flowCreating a handful of test nodes from the Admin Dashboard
CLI batch flowScripted manufacturing runs and merged flash images

Shipping​

GuideUse it when
Pre-production checklistBefore you build the image that goes on real hardware
Tools referenceLooking for the right script under tools/
TroubleshootingA node won't connect, won't reset, or won't take an update

How the pieces fit​

The factory NVS partition holds the node's permanent identity. On ESP-IDF it is normally filled in by assisted claiming during first setup; pre-flashing it at manufacturing is the alternative. Either way it survives a factory reset. Wi-Fi credentials are written at provisioning time and are cleared by a network or factory reset. See Device credentials for the split.