ESP32

ESP32 is a family of low-cost, energy-efficient microcontrollers that integrate both Wi-Fi and Bluetooth capabilities. These chips feature a variety of processing options, including the Tensilica Xtensa LX6 microprocessor available in both dual-core and single-core variants, the Xtensa LX7 dual-core processor, or a single-core RISC-V microprocessor. In addition, the ESP32 incorporates components essential for wireless data communication such as built-in antenna switches, an RF balun, power amplifiers, low-noise receivers, filters, and power-management modules.

Typically, the ESP32 is embedded on device-specific printed circuit boards or offered as part of development kits that include a variety of GPIO pins and connectors, with configurations varying by model and manufacturer. The ESP32 was designed by Espressif Systems and is manufactured by TSMC using their 40 nm process. It is a successor to the ESP8266 microcontroller.

Features

ESP32 function block diagram
ESP32 Die shot. Most of the chip is used by a power distribution network.

Features of the ESP32 include the following:

  • Processors:
    • CPU: Xtensa dual-core (or single-core) 32-bit LX6 microprocessor, operating at 160 or 240 MHz and performing at up to 600 DMIPS
    • Ultra-low-power (ULP) co-processor
  • Memory: 520 KiB RAM, 448 KiB ROM
  • Wireless connectivity:
    • Wi-Fi: 802.11 b/g/n
    • Bluetooth: v4.2 BR/EDR and BLE (shares the radio with Wi-Fi)
  • Peripheral interfaces:
  • Security:
  • Power management
    • Internal low-dropout regulator
    • Individual power domain for RTC
    • 5 μA deep sleep current
    • Wake up from GPIO interrupt, timer, ADC measurements, capacitive touch sensor interrupt

ESP32-xx family

Since the release of the original ESP32, a number of variants have been introduced and announced. They form the ESP32 family of microcontrollers. These chips have different CPUs and capabilities, but all share the same SDK and are largely code-compatible. Additionally, the original ESP32 was revised (see ESP32 ECO V3, for example).

ESP32

  • Xtensa single-/dual-core 32-bit LX6 microprocessor(s)
  • Supports single-precision Floating Point Unit (FPU)
  • Wi-Fi: 802.11 b/g/n
  • Bluetooth: v4.2 BR/EDR and BLE (shares the radio with Wi-Fi)
  • 34 GPIOs
  • 2 × 12-bit SAR ADCs, up to 18 channels
  • 2 × 8-bit DAC

ESP32-S2

  • Single-core Xtensa LX7 CPU, up to 240 MHz (With ULP Co-Processor Running at 20Mhz)
  • No Floating Point Unit (no FPU)
  • 320 KiB SRAM, 128 KiB ROM, and 16 KiB RTC SRAM
  • Wi-Fi 2.4 GHz (IEEE 802.11b/g/n)
  • No Bluetooth
  • 43 GPIOs
  • 2 × 13-bit SAR ADCs, up to 20 channels
  • 2 × 8-bit DAC
  • USB OTG

ESP32-S3

ESP32-S3-Wroom-1 board
  • Dual-core Xtensa LX7 CPU, up to 240 MHz, and supporting single-precision FPU
    • Added instructions to accelerate machine learning applications
  • 512 KiB SRAM, 384 KiB ROM, and 16 KiB RTC SRAM
  • Capable of connecting to external PSRAM and Flash via Quad SPI or Octal SPI, and share the same 32 MiB address space
  • Ultra-low-power RISC-V (RV32IMC) coprocessor clocked at 17.5 MHz approximately
  • Ultra-low-power FSM coprocessor similar to previous ESP32 and ESP32-S2
  • Wi-Fi 2.4 GHz (IEEE 802.11 b/g/n)
  • Bluetooth 5 (LE)
  • 45 GPIOs
  • No integrated Ethernet MAC
  • 2 × 12-bit SAR ADCs, up to 20 channels
  • USB OTG

ESP32-C2

  • 32-bit RISC-V single-core processor that operates at up to 120 MHz, implementing RV32IMC ISA
  • 576 KB ROM, 272 KB SRAM (16 KB for cache) on the chip
  • Wi-Fi 2.4 GHz (IEEE 802.11b/g/n)
  • Bluetooth 5 (LE)
  • 14 GPIOs (QFN24)
  • SPI, UART, I2C, LED PWM controller, General DMA controller (GDMA), SAR ADC, Temperature sensor
  • No USB support

ESP32-C3

NodeMCU board with an ESP32-C3-32S
  • Single-core 32-bit RISC-V CPU, up to 160 MHz
  • 400 KiB SRAM, 384 KiB ROM, and 8 KiB RTC SRAM
  • Wi-Fi 2.4 GHz (IEEE 802.11b/g/n)
  • Bluetooth 5 (LE)
  • 22 (QFN32) or 16 (QFN32) or 15 (ESP8685 QFN28) GPIOs
  • 2 × 12-bit SAR ADC
  • Pin compatible with ESP8266
  • USB device

ESP32-C6

  • High performance 32-bit RISC-V CPU, up to 160 MHz, implementing RV32IMAC
  • Low-power 32-bit RISC-V CPU, up to 20 MHz, implementing RV32IMAC
  • 512 KiB SRAM and 320 KiB ROM
  • IEEE 802.11ax (Wi-Fi 6) on 2.4 GHz, supporting 20 MHz bandwidth in 11ax mode, 20 or 40 MHz bandwidth in 11b/g/n mode
  • IEEE 802.15.4 (Thread + Zigbee)
  • Bluetooth 5.3 (LE)
  • 30 (QFN40) or 22 (QFN32) GPIOs
  • USB device

ESP32-H2

Announced

ESP32-C5

  • Single-core 32-bit RISC-V CPU, up to 240 MHz
  • 384 KB SRAM and 320 KB ROM
  • IEEE 802.11ax (Wi-Fi 6) on 2.4 and 5 GHz, supporting 20 MHz bandwidth in 11ax mode, 20 or 40 MHz bandwidth in 11b/g/n mode
  • IEEE 802.15.4 (Thread + Zigbee)
  • Bluetooth 5 (LE)
  • Over 20 GPIOs

ESP32-P4

  • High performance dual-core 32-bit RISC-V CPU, up to 400 MHz
    • Implementing RV32IMAFC_Zicsr_Zifencei and custom AI/vector instructions.
    • Supports single-precision Floating Point Unit (FPU).
  • Low performance single-core 32-bit RISC-V CPU, up to 40 MHz
    • Implementing RV32IMAC_Zicsr_Zifencei ISA extensions.
  • 768 KiB SRAM on high-performance core system.
  • 8 KiB TCM on high-performance core system.
  • 32 KiB SRAM on low-power subsystem.
  • Support PSRAM.
  • Integrated hardware accelerators for various media encoding protocols, including H.264.
  • No Wi-Fi or Bluetooth
  • Over 50 GPIOs

QFN packaged chip and module

ESP32 is housed in quad-flat no-leads (QFN) packages of varying sizes with 49 pads. Specifically, 48 connection pads along the sides and one large thermal pad (connected to ground) on the bottom.

Chips

The ESP32 system on a chip integrated circuit is packaged in both 6 mm × 6 mm and 5 mm × 5 mm sized QFN packages.

In 2020, chips ESP32-D0WDQ6 and ESP32-D0WD also got a V3 version (ESP32 ECO V3), which fixes some of the bugs and introduces improvements over the previous versions.

Modules

The ESP32 PICO system in package modules combine an ESP32 silicon chip, crystal oscillator, flash memory chip, filter capacitors, and RF matching links into a single 7 mm × 7 mm sized QFN package.

The first released PICO was the ESP32-PICO-D4 with 2 CPUs at 240MHz, 4MiB internal flash, a 40MHz oscillator and 34 GPIOs.

Later, in 2020, the ESP32-PICO-V3 and ESP32-PICO-V3-02 modules were introduced both based on the ESP32 ECO V3 wafer.

In 2022 the ESP32-S3-PICO-1 module was introduced with USB OTG and internal PSRAM.

Printed circuit boards

Surface-mount module boards

ESP32 based surface-mount printed circuit board modules directly contain the ESP32 SoC and are designed to be easily integrated onto other circuit boards. Meandered inverted-F antenna designs are used for the PCB trace antennas on the modules listed below. In addition to flash memory, some modules include pseudostatic RAM (pSRAM).

Development and other boards

SparkFun Thing Plus – ESP32 WROOM
ESP32 dev board, SH1106 OLED display on breadboard with USB power meter

Development and break-out boards extend wiring and may add functionality, often building upon ESP32 module boards and making them easier to use for development purposes, especially with breadboards.

† ESP32 SoC incorporated directly onto development board; no module board used.

Programming

Programming languages, frameworks, platforms, and environments used for ESP32 programming:

  • ESP-IDF – Espressif’s official IoT Development Framework for the ESP32, ESP32-S, ESP32-C and ESP32-H series of SoCs.
  • Arduino-ESP32 – Arduino core for the ESP32, ESP32-S2, ESP32-S3 and ESP32-C3.
  • Espruino – JavaScript SDK and firmware closely emulating Node.js
  • MicroPython (and CircuitPython) – lean implementation of Python 3 for microcontrollers
  • Mongoose OS – an operating system for connected products on microcontrollers; programmable with JavaScript or C. A recommended platform by Espressif Systems, AWS IoT, and Google Cloud IoT.
  • mruby for the ESP32
  • Nim for the ESP32
  • NodeMCULua-based firmware
  • Rust
  • Swift
  • Visual Studio Code with the officially supported Espressif Integrated Development Framework (ESP-IDF) Extension
  • Zerynth – Python for IoT and microcontrollers, including the ESP32
  • Matlab Simulink

Reception and use

Commercial, industrial and academic uses of ESP32:

Use in commercial devices

  • Alibaba Group's IoT LED wristband, used by participants at the group's 2017 annual gathering. Each wristband operated as a "pixel", receiving commands for coordinated LED light control, allowing formation of a "live and wireless" screen.
  • DingTalk's M1, a biometric attendance-tracking system.
  • Pium, a home fragrance and aromatherapy device.
  • HardKernel's Odroid Go, an ESP32 based handheld gaming device kit made to commemorate Odroid's 10th anniversary.
  • Playdate, a handheld video game console jointly developed by Panic Inc. and Teenage Engineering.
  • Octopus Energy Mini, an ESP32-C6 based real-time energy monitor.
  • Mysa smart thermostats, based on ESP32-WROOM.

Use in industrial devices

  • TECHBASE's Moduino X series X1 and X2 modules are ESP32-WROVER / ESP32-WROVER-B based computers for industrial automation and monitoring, supporting digital inputs/outputs, analog inputs, and various computer networking interfaces.
  • NORVI IIOT Industrial Devices with ESP32-WROVER / ESP32-WROVER-B SOC for industrial automation and monitoring with digital inputs, analog inputs, relay outputs and multiple communications interfaces. Supports LoRa and Nb-IoT as expansion modules.

Academic uses

  • ESP32 devices are utilized in educational settings and academic research projects. For example, these devices have been used to develop a smart home system designed to monitor and control the charging of electric vehicles, considering the current consumption of other electrical appliances and the contracted power capacity. Additionally, ESP32 is used in DIY projects such as building low-cost drones.

Undocumented HCI Commands in ESP32

In March 2025, researchers from Tarlogic Security identified undocumented Host Controller Interface (HCI) commands in the ESP32 Bluetooth firmware, prompting discussions about their functionality and potential implications. This discovery was presented on March 6, 2025, at the RootedCON conference by the Tarlogic Security team.

The identified commands, such as Write Memory (0xFC02), are vendor-specific HCI commands used primarily for debugging and testing purposes. These types of commands are common in Bluetooth controller implementations to assist with development and troubleshooting. They are not part of the standard HCI command set and are typically used in controlled environments. While initially described as a "backdoor," further clarifications labeled them as "undocumented debugging features." These commands are not accessible remotely via standard Bluetooth connections but could be interacted with if an entity has physical access to the device or operates in an HCI-UART configuration.

Espressif Systems provided clarification regarding these commands, stating that they are intended for debugging and do not pose a security risk under normal operating conditions. The company emphasized that these commands cannot be triggered remotely and are not used in standard Bluetooth operations. These commands are present only in ESP32 chips and are not included in the ESP32-C, ESP32-S, and ESP32-H series. To address concerns raised within the security community, Espressif announced that future versions of the ESP-IDF would include updates to restrict access to these debugging commands and improve documentation for vendor-specific HCI commands. These actions aim to provide additional transparency and ensure developers are well-informed about available functionalities.

See also

References

Uses material from the Wikipedia article ESP32, released under the CC BY-SA 4.0 license.