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_RMNG_BRIDGE_ENABLED

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