Your ESP32 has a secret processor that keeps working while the rest of the chip is asleep

Your ESP32 has a secret processor that keeps working while the rest of the chip is asleep

Published Sep 25, 2026, 11:00 AM EDT After a 7-year corporate stint, Tanveer found his love for writing and tech too much to resist. An MBA in Marketing and the owner of a PC building business, he writes on PC hardware, technology, and Windows. When not scouring the web for ideas, he can be found building PCs, watching anime, or playing Smash Karts on his RTX 3080 (sigh). You might be familiar with the dual Xtensa cores on your ESP32, which divide the primary code and background activity among them. However, most people don't know about a separate coprocessor hiding on the same die. This Ultra-Low Power (ULP) coprocessor is a single core that stays awake even when the main CPU has gone to sleep. You only notice it when you need it, so it goes unnoticed in the majority of the projects. However, it can keep your project alive for long periods of time. When you don't need the main CPU to perform heavy tasks regularly, the ULP becomes the star of the show, keeping things powered while sipping power. The ULP coprocessor is the part of the chip that never fully sleeps It's not the core you want, but the one you need The third core on your ESP32 is called "ULP" for a reason. Its whole purpose is to stay functional when nothing else on the board is awake. The main dual-core CPU and most of the memory shut down when your ESP32 goes into deep sleep. The ULP is exempt from this deep sleep because it runs on the board's Real-Time Clock (RTC) power domain, drawing minimal power. As for memory access, it uses a small dedicated part of the RTC slow memory, typically 8KB on the classic ESP32, to store the program instructions and log data it needs to execute the simple tasks it's built for. For instance, the ESP32's main CPU consumes around 240 mA (or more) during active execution, whereas the ULP consumes around 200 µA, which is several orders of magnitude less. It even drops to as low as 10 µA in its deep sleep state. It's tiny, but handles important functions while saving battery power Without ULP, your battery-powered project wouldn't run for long The ULP isn't a replacement for your main CPU cores. It's built to execute a narrow set of functions that isn't feasible for the main processor, at least if you want to conserve battery. Most sensor-based projects spend the overwhelming majority of their time doing nothing — checking a temperature that hasn't changed, a button that is still unpressed, or a water level that's stayed the same. Executing these tasks on the main dual-core CPU is wasteful on a battery-powered project. The ULP is designated to monitor sensors, take ADC readings, poll GPIO pins, and check if a value has crossed a threshold. When your device needs to execute real tasks, such as connecting to Wi-Fi, processing data, or managing memory allocations, the ULP wakes up the main CPU. The ULP optimizes battery life by taking over repetitive, low-stakes checking, while the power-intensive part of the chip only wakes up when it's really needed. Most people forget it exists until a project actually needs it It can fly under the radar When your ESP32 project doesn't need deep sleep optimization, it doesn't need to leverage the ULP coprocessor at all. Only when you need your device to run for months on a small battery will you build it around the ULP. A soil moisture sensor in your garden, a remote temperature sensor, or a leak detector under a sink can work for ages since the main chip stays fully off most of the time. The ULP wakes up for periodic polling, saving most of the battery life. Using RTC memory, it stores the results which the main CPU needs to read once it wakes up. The ULP becomes apparent when people realize their chip had a coprocessor all along, waiting for a project that can make use of it. It has real hardware limitations, but that's by design. The ULP was never meant to perform more than basic, low-powered tasks, and it does that perfectly. Brand AITRIP Connectivity Features UART, USB The ESP32 is a fantastic development board that combines solid specs with an affordable price. Despite being cheaper than Arduino and Raspberry Pi Pico, it outperforms most of its rivals. Plus, the ESP32 even has Wi-Fi and Bluetooth functionality built into every board, making it great for projects where you can't physically keep the microcontroller connected to your PC at all times. Your ESP32 is capable of running for far longer than you think Unless your project needs always-on Wi-Fi or Bluetooth or perform frequent computations, you can use the ULP coprocessor to maximize its battery life. This additional core can run at miniscule levels of power and still keep your project alive. It allows your main chip to enter deep sleep while it works silently in the background.

Original Source

Read the full article at Xda-developers →

KhanList aggregates and links to publicly available news content. We do not host full articles from third-party sources. Always verify important information with original sources.