Skip to main content

Firmware FAQ

info

If you have any questions about firmware development, please contact esp-rainmaker-support@espressif.com with a Firmware tag.

Getting Started​

How do I quickly run the standard RainMaker example on a development board?​


How do I quickly run a RainMaker private deployment example using the standard app?​


Provisioning, Wi‑Fi, Claiming & Factory Reset​

How do I reset my board to factory defaults?​


How can I change Wi-Fi credentials on my device?​


Why does user-node association from ESP RainMaker keep failing?​



Can I use ESP RainMaker without Wi-Fi provisioning?​


My provisioning is failing. What could be the issue?​


How do I reset my device to factory settings?​


What is the default provisioning timeout in the standard RainMaker examples? How can it be modified?​


What is the default provisioning mode in the standard examples? How can it be changed?​


How do I modify the prefix name for BLE/SoftAP provisioning?​


How do I modify the suffix name for BLE/SoftAP provisioning?​


What is the Proof of Possession (PoP) code in provisioning? What types are available and how are they configured?​


How do I implement BLE device discovery so that the device type can be identified during provisioning?​


After entering an incorrect Wi-Fi password during provisioning, does the device need to be manually reset?​


How do I keep the BLE stack active after provisioning is complete?​


How is the nearby Wi-Fi list on the phone generated during provisioning? How do I change the number of entries shown?​


How do I implement button-triggered provisioning?​


Account & Authentication​

Is the login email address case sensitive?​


Connectivity, MQTT & Cloud Parameter Sync​

Why does it take a long time for a device to appear offline?​


I got success message for set params, but it did not reflect on my device. What may have happened?​


How can I ensure that my device always gets a param update even if it is offline when I trigger it?​


What is the command-response framework? How is it different from get/set params?​


How do I enable the Command-Response feature on the device side?​


The device logs "Out of MQTT Budget. Dropping publish message." What does this mean and how do I fix it?​


Parameters, Attributes, Time-Series & Phone App​

Why am I unable to fetch time-series values for a given parameter?​


Can I use custom device types instead of standard types?​


What is the difference between parameters and attributes?​


My parameter updates are not reflecting in the phone app. Why?​


How do I implement time-series data logging?​


What Time-Series data types does RainMaker support? What are the differences?​


How do I configure a parameter to support Time-Series data?​


How do I report only the Time-Series data without updating the parameter value?​


The device logs "Current time not yet available. Cannot report time series data." What does this mean?​


How do I separate parameter reporting from Time-Series data reporting?​


How do I batch multiple Time Series Data points into a single MQTT message?​


How do I batch multiple Simple Time Series Data points into a single MQTT message?​


OTA (Over-the-Air Updates)​

How do I perform OTA updates for my devices?​


What could cause an OTA failure with reason "ESP HTTPS OTA Begin failed"?​


How to improve reliability of OTA Firmware Upgrades?​


Does RainMaker OTA support resuming a download from a breakpoint?​


Does RainMaker OTA support progress reporting?​


How do I implement OTA for a host MCU device?​


If the OTA firmware image is faulty, will the device be bricked?​


How to implement a feature that allows both the device and the mobile app to proactively check for OTA updates?​


Local Control & Offline Operation​

How can I implement local control for my devices?​


Can a RainMaker device work without internet?​


When using local control with security level 1, rapidly tapping device controls in the app causes lag. Why, and what is the fix?​


How do I determine whether a device command is going through the local network path or the cloud?​


Time, Timezone & Scheduling​

Can RainMaker firmware handle timezones and daylight savings offset?​


How do I implement scheduling in my firmware?​


How do I handle timezone for my devices?​


Is scheduling stored and executed locally on the device or in the cloud? Can schedules trigger when the device is offline?​


Are automations stored in the cloud or on the device? Can they trigger when the device is offline?​


What is the default maximum number of schedules supported? How do I increase it?​


What trigger conditions does the Schedule feature support? Does it support countdown timers?​


Security, Signing & Deployment​

How do I migrate from public to private deployment?​


How do I implement secure signing for production devices?​


Memory, Logging & Debugging​

How do I enable debug logging for my firmware?​


My device is running out of memory. How can I optimize?​


Scenes, Cloud Access & Node Limits​

How do I implement scenes in my firmware?​


Can I access cloud data from my firmware?​


What is the maximum number of devices a node can have?​


What is the default maximum number of scenes supported? How do I increase it?​


Thread, Matter & Wi‑Fi Ecosystems​

Can I use ESP RainMaker with Thread or Matter?​


Storage & Board-Specific Hardware​

How can I save custom data to persistent storage?​


Why is the RGB LED on my ESP32-S2-Saola-1 not working?​


Certificates & Claiming​

For testing against public RainMaker, which Claiming method should be used?​


For testing against private RainMaker, which Claiming method should be configured on the device side? How are certificates generated?​


For the RainMaker + Matter solution connecting to public RainMaker, how are device certificates generated?​


For the RainMaker + Matter solution connecting to private RainMaker, how are device certificates generated?​


What does a device certificate contain? Can custom data be added to it?​


Standard Services​

What standard services does RainMaker currently support? How do I enable each one?​


On this page