Skip to content

Releases: espressif/esptool

Version 4.12.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 08:36

v4.12.0 (2026-07-13)

✨ New Features

  • ESP32-P4: Support ECO7 (rev3.2) (Radim Karniš - 80a98cf)
  • spi_flash: Add flash reset when detecting chip (C.S.M - cb2e3d7)
  • stub_flasher: Adopt new flasher stub (Radim Karniš - 2db40c8)
  • espefuse: Add raw_value to JSON summary output (Peter Dragun - 7f01960)

🐛 Bug Fixes

  • ESP32-H4: Make flash could run at 64MHz since 2nd stage bootloader (Song Ruo Jing - 3b895c2)
  • stub_flasher: Print an explanatory error if the stub flasher files are missing (Radim Karniš - 3cf5db7)
  • Resolve symlinked paths in get_usb_vid_pid (igor.udot - 80684fd)
  • Use FLASH_BEGIN flag to flash encrypted data instead of separate command (Jaroslav Burian - 634a87a)
  • espefuse: Add WAFER_VERSION_HI eFuse for esp32p4 revisions less than v3.0 (harshal.patil - 705e18a)
  • espefuse: Remove the value description of the eFuse for ESP32-C5 (Peter Dragun - 0353102)
  • Security eFuse layout for C2/C5/C61 (Radim Karniš - 0dadfd1)

Results of checking the release against common anti-virus SW

The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.

Version 5.3.1

Choose a tag to compare

@github-actions github-actions released this 29 Jun 06:34
v5.3.1
0d2dfef

🐛 Bug Fixes

  • Fix operations over USB-Serial/JTAG transport in Secure Download Mode (Radim Karniš - 6c9ad54)
  • Preserve VID/PID lookup for symlinked ports (Jaroslav Burian - aea67cd)
  • Raise FatalError instead of leaking StopIteration (Roland Dobai - 2b5bc8b)
  • espefuse: Remove non-existent HMAC key purposes for ESP32-C61 (harshal.patil - ec4fc2a)
  • PyInstaller: Bundle pyserial URL handlers (Lucas Saavedra Vaz - 1044f3c)

📖 Documentation

Version 5.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Jun 15:21
v5.3.0
c94e362

✨ New Features

  • ESP32-P4: Support ECO7 (rev3.2) (Radim Karniš - 27463b2)
  • ESP32-S31: Add stub flasher support (Radim Karniš - 6e14f2e)
  • flasher stub: Use esp-flasher-stub as the default flasher stub
  • ESP32-C61: Add large flash support (Jaroslav Burian - 29aef6a)
  • esptool: Adds efuse version and pkg efuses for ESP32H4 (Konstantin Kondrashov - bc55336)
  • write-flash: Fully reflash all data when fast reflash verification fails (Radim Karniš - 1c16a59)
  • write-flash: Log which file is being flashed when multiple files are given (Radim Karniš - dc457d1)
  • reset: Support USB-UART adapters with hardware flow control (Jeija - 9ea2c5c)
  • Add support for plugin system for optionally loading stub features (Roland Dobai - e6697e4)
  • Disallow erasing key recovery info flash sectors when flash encryption using KM is enabled (harshal.patil - f55cf25)
  • Add transport mode detection based on USB VID:PID instead of hard-coded ROM symbols (Vojtech Piroch - 0a5fe5c)
  • Improve flash chip connection verification with SFDP register check (Jan Beran - 3821d83)
  • espefuse: Update ESP32-H21 eFuse table (Konstantin Kondrashov - 93ef664)
  • espefuse: Update ESP32-S31 eFuses table (Konstantin Kondrashov - ffbd13f)
  • espefuse: Update ESP32-H4 eFuse table (Konstantin Kondrashov - c6ef00c)
  • espefuse: Add ESP32-C5 calibration eFuse fields (Konstantin Kondrashov - 66c472b)
  • espefuse: Add --after option to reset the chip after the operation is finished (Peter Dragun - 1b8436f)

🐛 Bug Fixes

  • flasher stub: Fix C900 error during compressed upload (Radim Karniš - 73308b8)
  • flasher stub: Fix writing to non-4-byte aligned offsets in flash (Radim Karniš - 73308b8)
  • elf2image: Correct pad length for ram-only-header flash segments (Sylvio Alves - c637749)
  • esptool: Use the correct address for reading eFuses in ESP32-S31 (Konstantin Kondrashov - 9376b9d)
  • esptool: Fix incorrect eFuse bit mask for SPI_BOOT_CRYPT_CNT_MASK (harshal.patil - 2a2b86d)
  • logger: Declare singleton instance as ClassVar for mypy (Radim Karniš - 48e4450)
  • transport: Enable USB transport modes detection in Secure Download Mode (Radim Karniš - 3714d1b)
  • ESP32-H4: Fix flash running at 64MHz since 2nd stage bootloader (Song Ruo Jing - 974d975)
  • ESP32: Decode VDD_SDIO eFuse voltage like espefuse summary (Radim Karniš - 825ad97)
  • ESP32-S31: Fix configurable MMU page size support (armando - 2806d84)
  • ESP32-P4: Fix ECO7 early guru meditation errors during boot up (Radim Karniš - 3f6cb59)
  • ESP32-S31: Fix flash manipulation commands (Radim Karniš - 1d51f72)
  • ESP32-C61: Warn if encryption during download is disabled (Radim Karniš - 86c4f71)
  • Fix security eFuse layouts for ESP32-C2, ESP32-C5, and ESP32-S31 (Mahavir Jain - 97c20ec)
  • espefuse: Add checks for eFuse names in read and write protect commands (Peter Dragun - 118fbdb)
  • espefuse: Remove the value description of the eFuse for ESP32-C5 (Peter Dragun - f6722ad)

🔧 Code Refactoring

  • espefuse: Move MAC field logic to base_fields.py (Peter Dragun - a3dc123)
  • espefuse: Move common code of EspEfuses to base class (Peter Dragun - 5e903ce)
  • espefuse: Create EfuseKeyPurposeFieldBase and unite implementations (Peter Dragun - 889a3ff)
  • espefuse: Move common fields to base_fields.py (Peter Dragun - 4a2bed1)
  • espefuse: Add type hints and fix formatting (Peter Dragun - cfafe84)
  • Add missing ABCs to base classes (Peter Dragun - 47a43b3)

Thanks to @Jeija and others for contributing to this release!

Results of checking the release against common anti-virus SW

Any failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.

Note: The macOS binary archives were re-uploaded on Jun 3, 2026 after fixing notarization. Earlier downloads may crash due to incorrect notarization. Please re-download the macOS build from this release.

Version 5.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Feb 16:10

✨ New Features

  • write-flash: Add fast reflashing option to update changed flash sectors only or skip already flashed content (documentation) (Radim Karniš - 5aad298)
  • stub flasher: Make the esp-flasher-stub stub flasher available to use (Radim Karniš - cf9cdb7)
  • esptool: Add ESP32-E22 support (Radim Karniš - ce838cd)
  • esptool: Add ESP32-S31 support (C.S.M - 3077627)
  • esptool: Update chip description for ESP32-C2/ESP8684H (Konstantin Kondrashov - c6f1839)
  • python: Support Python v3.14 (Radim Karniš - 8d201c7)
  • write-flash: Enable compress and encryption together (Jaroslav Safka - 5d747d8)
  • write-flash: Allow encrypted writes using key from the Key Manager (harshal.patil - aa1b04a)
  • write-flash: Apply compression only if it reduces the file size (Jaroslav Safka - 188028d)
  • SPI flash: Add SPI flash reset when detecting chip (C.S.M - 1b57c61)
  • espefuse: Add eFuse definitions for ESP32-H2 revision 1.2 (Konstantin Kondrashov - 08f4cbb)
  • espefuse: Add ESP32-E22 support (Radim Karniš - a47e86f)
  • espefuse: Enable ECDSA keys burning support for ESP32-H4 (nilesh.kale - a02d858)
  • espefuse: Set postpone flag by default (Konstantin Kondrashov - 23e5ec1)
  • espefuse: Add eFuse flash fields for ESP32-C2/ESP8684H (Konstantin Kondrashov - b3d4e15)
  • espsecure: Add --skip-padding flag to sign-data and verify-signature API (hrushikesh.bhosale - ce5a4ac)
  • ESP32-H4: Add stub flasher support (Radim Karniš - cf9cdb7)
  • ESP32-C5: Add ECO3 stub flasher support (Radim Karniš - fc0c984)
  • ESP32-P4: Add ECO6 stub flasher support (Radim Karniš - 9393921)
  • ESP32-P4: Power on SPI flash chip during the connection process on ECO6 (Radim Karniš - 21c802f)
  • HSM signing: Use primitive HSM signing mechanisms (harshal.patil - a1a4e95)
  • CLI: Add autocomplete for port and baud rate (Peter Dragun - 8363cae)
  • port detection: Improve ports sorting when autodetection is used (Jaroslav Burian - ec84fba)

🐛 Bug Fixes

  • change_baud: Disable changing baud rate on ESP32-C2 and ESP32-C5 in Secure Download Mode (Radim Karniš - 9286189)
  • USB mode detection: Fix USB mode detection on ESP32-C5 and ESP32-C61 (Radim Karniš - 81bdb76)
  • ESP32-H4: Fix memory map and disable unsupported watchdog reset (Radim Karniš - 7728772)
  • ESP32-C6: Fix ESP32-C6FH8 package detection (Roland Dobai - d7f1adf)
  • ESP32-C3: Fix USB->Serial detection on rev1.1 (Jaroslav Safka - 8bc2c50)
  • logging: Require custom logger to implement the correct interface (Radim Karniš - deca775)
  • logging: Fix warning log for ESP32-S31 (Roland Dobai - 5920030)
  • logging: Remove warning keyword from error outputs (Roland Dobai - 30808a4)
  • logging: Always flush output in stage mode (Peter Dragun - a5c9090)
  • write-flash: Print correct number of bytes and flash offsets when --no-stub (Radim Karniš - e78ab87)
  • write-flash: Allow --force and --erase-all to be used together (Radim Karniš - c26e58e)
  • write-flash: Fix ESP32-C2 FE key validation (Konstantin Kondrashov - c02d53f)
  • write-flash: Fix ESP32 FE key validation (Konstantin Kondrashov - 4f1d212)
  • write-flash: Allow bootloader reflash in secure-boot-v2 scheme (Mahavir Jain - 9d0bdd5)
  • erase-region: Allow erasing past 4MB in ROM and SDM mode (Radim Karniš - 06794d7)
  • image cmds: Print the name of chip in full expanded form (Radim Karniš - 6b6e0f4)
  • espefuse: Ensure port is closed when creating commands fails (Peter Dragun - 9646a80)
  • espefuse: Fix decoding error in ESP32-C5 summary (Peter Dragun - e49c69a)
  • espefuse: Fix calibration eFuses for ESP32-P4 ECO5 (Konstantin Kondrashov - a1ca6c9)
  • espefuse: Fix ECDSA key purposes for ESP32-P4 (Konstantin Kondrashov - ae23ab2)
  • espsecure: Fix the keyfile arg of the sign-data command by making it optional (harshal.patil - ee35dda)
  • espsecure: Allow verifying multiple appended ECDSA signatures (harshal.patil - 9a207b1)
  • windows: Limit rich_click version to <1.9.0 (Peter Dragun - fa97591)

Results of checking the release against common anti-virus SW

The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.

Version 4.11.0

Choose a tag to compare

@github-actions github-actions released this 27 Jan 13:17

✨ New Features

  • ESP32-P4: Add ECO6 support (Radim Karniš - 1fe1d8f)
  • ESP32-P4: Power on SPI flash chip during the connection process on ECO6 (Radim Karniš - b8dd0a3)
  • ESP32-C5: Add ECO3 support (Radim Karniš - 1fe1d8f)
  • ESP32-C5: Add chip features (Peter Dragun - 9d91efc)

🐛 Bug Fixes

  • change_baud: Disable changing baud rate on ESP32-C2 and ESP32-C5 in Secure Download Mode (Radim Karniš - 0e3adae)
  • USB mode detection: Fix USB mode detection on ESP32-C5 and ESP32-C61 (Radim Karniš - 667861b)
  • ESP32-C3: Fix USB->Serial detection on rev1.1 (Jaroslav Safka - 3660ff6)
  • ESP32-C6: Fix ESP32-C6FH8 package detection (Roland Dobai - 70733c1)
  • image-info: Sanitize app and bootloader info of null bytes (Radim Karniš - 8fccdf8)
  • espefuse: Fix decoding error in ESP32-C5 summary (Peter Dragun - b3134ed)
  • espefuse: Fix calibration eFuses for ESP32-P4 ECO5 (Konstantin Kondrashov - ab8ecae)
  • espefuse: Fix ECDSA key purposes for ESP32-P4 (Konstantin Kondrashov - c75a3de)
  • espsecure: Allow verifying multiple appended ECDSA signatures (Harshal Patil - 2856164)

Results of checking the release against common anti-virus SW

The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.

Version 4.10.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 09:55

New Features

  • ESP32-P4: Add ECO5 support (Jaroslav Safka - 2ea1fca, Konstantin Kondrashov - a2f4e66)
  • ESP32-C5: Add support for >16 MB flash sizes (Roland Dobai - 0ac477a)
  • espefuse: Add custom key purposes for ESP32-C6/C5/P4 (Konstantin Kondrashov - 3996e21)
  • espefuse: Support burning ECDSA_384 keys (Konstantin Kondrashov - cc61acf)
  • espefuse: Clean up limitation for BLOCK9 usage (Konstantin Kondrashov - dc220df)
  • espefuse: Add support for burning 512-bit keys on ESP32-C5 (Konstantin Kondrashov - 599634a)

Bug Fixes

  • Use correct error codes for ROM errors (Jaroslav Burian - 529ff4e)
  • espefuse: Fix re-connection issue in check-error via USB-Serial/JTAG (Konstantin Kondrashov - af6ff30)
  • write_flash: Make write flash memory-layout-independent (Jaroslav Safka - aee68fa)
  • elf2image: Handle ELF files with zero program header counts (Tormod Volden - 2e87882)
  • espefuse: Disable programming and usage of XTS-AES-256 eFuse key for ESP32-C5 (harshal.patil - 13121d4)
  • ESP32-C5: Erase during flashing above 16MB (Jaroslav Burian - a977cdf)
  • espsecure: Add support for python-pkcs11 9.0+ (Peter Dragun - 223456f)

Results of checking the release against common anti-virus SW

The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.

Version 5.1.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 05:26

✨ New Features

  • ESP32-P4: Add ECO5 support (Jaroslav Safka - 6c10050, Konstantin Kondrashov - 40f103c)
  • ESP32-C5: Add support for >16 MB flash sizes (Roland Dobai - 8e2b94e)
  • espefuse: Add custom key purposes for ESP32-C6/C5/P4 (Konstantin Kondrashov - c6ce0bc)
  • espefuse: Support burning ECDSA_384 keys (Konstantin Kondrashov - 4a9a3d8)
  • espefuse: Clean up limitation for BLOCK9 usage (Konstantin Kondrashov - d63e3db)
  • espefuse: Add support for burning 512-bit keys on ESP32-C5 (Konstantin Kondrashov - 468de5c)

🐛 Bug Fixes

  • Use correct error codes for ROM errors (Jaroslav Burian - da4346b)
  • ESP32-C5: Erase during flashing above 16MB (Jaroslav Burian - d65a24e)
  • write_flash: Make write flash memory-layout-independent (Jaroslav Safka - d19413c)
  • elf2image: Handle ELF files with zero program header counts (Tormod Volden - d27ce37)
  • elf2image: Fix --pad-to-size argument parsing (Peter Dragun - 66a1377)
  • CLI: Handle deprecated options with "=" before value (Peter Dragun - f05fb62)
  • Prevent exiting immediately when being called programmatically (Fu Hanxi - d8ae230)
  • espefuse: Update CLI to support rich-click 1.9.0 (Peter Dragun - 2ae5535)
  • espefuse: Fix re-connection issue in check-error via USB-Serial/JTAG (Konstantin Kondrashov - a160468)
  • espefuse: Disable programming and usage of XTS-AES-256 eFuse key for ESP32-C5 (harshal.patil - c85a93d)
  • espsecure: Fix printing key digest in signature info (Radim Karniš - 7e53596)
  • espsecure: Extract public key version 1 in RAW format (Peter Dragun - 6cfced8)
  • espsecure: Allow signing multiple files in one go (Peter Dragun - 0177d61)
  • espsecure: Add support for python-pkcs11 9.0+ (Peter Dragun - 3ea646f)

Thanks to @tormodvolden, and others for contributing to this release!

Results of checking the release against common anti-virus SW

The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.

Version 5.0.2

Choose a tag to compare

@github-actions github-actions released this 30 Jul 15:15

🐛 Bug Fixes

  • Fix compatibility with Click 8.2.0+ (Peter Dragun - 524825e)
  • Fix --port-filter argument parsing (Peter Dragun - b53a16c)
  • Fix buffering issues with CP2102 converter causing connection failures (Jaroslav Burian - 5338ea0)
  • ESP32-S3: Fix stub flasher execution with active Secure Boot (Radim Karniš - 7ba285b)
  • ESP32-C3: Disable flasher stub when Secure Boot is active (Radim Karniš - 1f1ea9a)
  • espefuse: Handle error in burn-efuse command when no arguments are provided (Peter Dragun - 0f32306)

Results of checking the release against common anti-virus SW

The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.

Version 4.9.1

Choose a tag to compare

@github-actions github-actions released this 31 Jul 08:02

🐛 Bug Fixes

  • Fix buffering issues with CP2102 converter causing connection failures (Jaroslav Burian - 72f6b0d)
  • ESP32-S3: Fix stub flasher execution with active Secure Boot (Radim Karniš - a846531)
  • ESP32-C3: Disable flasher stub when Secure Boot is active (Radim Karniš - a03158c)
  • elf2image: Fix support for ESP32-H4 MMU page size configuration (Jaroslav Burian - 5ae594b)
  • elf2image: Validate ELF section types and addresses before processing (Jaroslav Burian - e67ec01)
  • elf2image: Handle PREINIT_ARRAY section type in ESP32-P4 ELF files properly (Jaroslav Burian - f5404fa)
  • ESP32-S2: Enabled auto-detection in secure download mode (Jaroslav Burian - 624f1b6)
  • ESP32-P4: Enabled ECO5 chip detection (Jaroslav Burian - e4b9675)

Results of checking the release against common anti-virus SW

The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.

Version 5.0.1

Choose a tag to compare

@github-actions github-actions released this 15 Jul 14:20

🐛 Bug Fixes

  • elf2image: Validate ELF section types and addresses before processing (Jaroslav Burian - 97a1546)
  • elf2image: Handle PREINIT_ARRAY section type in ESP32-P4 ELF files properly (Jaroslav Burian - ec84a75)
  • elf2image: Fix incorrect logger call (Marek Matej - 637f0e6)

Results of checking the release against common anti-virus SW

The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.