Skip to content

Releases: espressif/esptool

Version 4.10.0

16 Sep 09:55

Choose a tag to compare

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

16 Sep 05:26

Choose a tag to compare

✨ 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

30 Jul 15:15

Choose a tag to compare

🐛 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

31 Jul 08:02

Choose a tag to compare

🐛 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

15 Jul 14:20

Choose a tag to compare

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

Version 5.0.0

03 Jul 09:14

Choose a tag to compare

In this major release, esptool was refactored, and some breaking changes were introduced. See the v5 Migration Guide article in the documentation for a detailed list of changes and guidance on adapting existing workflows and scripts to ensure compatibility when updating from v4.*.

See the esptool: Updates about the v5 major release developer portal article for an overview of some of the new features and changes.

🚨 Breaking changes

  • Public Python API redesign: Reworked the public API to work as a Python module. Command functions accept explicit parameters (no args object) (Radim Karniš - ba36933) (Peter Dragun - d7da0f8)
  • CLI overhaul: esptool, espefuse, espsecure now use click for CLI argument parsing and rich-click for nice CLI rendering (Peter Dragun - d40fefa)
  • All commands / options names have replaced underscores (_) with dashes (-) (e.g., flash_id -> flash-id). Old names will print deprecation warnings (Peter Dragun - 3cecd6d)
  • Removed .py suffix from scripts (e.g., esptool.py flash-id -> esptool flash-id). Using .py will print deprecation warnings (Peter Dragun - 635cde1)
  • Centralised logging: All tools' output now goes through the EsptoolLogger class, allowing easy redirection (Radim Karniš - 1ce02db)
  • image-info: Deprecated the --version 1 output format (Radim Karniš - 3f625c3)
  • errors: Errors are now printed to STDERR, added KeyboardInterrupt handling (Radim Karniš - 0864e17)
  • make-image: Removed the ESP8266 make-image command in favor of other workflows (Radim Karniš - 955a7c8)
  • espefuse: Removed execute-scripts in favor of the new public API (Peter Dragun - ff72b26)
  • Removed support for beta chip targets: ESP32-C5(beta3), ESP32-C6(beta), ESP32-H2(beta1/2), ESP32-S3(beta2) are no longer supported (Radim Karniš - 8f1c206)
  • Deprecated support for Python 3.7, 3.8, and 3.9 (Peter Dragun - 19f1bee)
  • write-flash: Removed the superfluous --verify option (Radim Karniš - dbf3d1c)

✨ New Features

  • logging: Added collapsible output stages and ASCII progress bars (Radim Karniš - f3cf107)
  • trace: Updated --trace with more info and more readable formatting (Radim Karniš - 0beee77)
  • verbosity: Allowed setting silent or verbose output levels (Radim Karniš - 90e3770)
  • cmds: Allowed commands to output bytes, as well as write to a file (Radim Karniš - 0153b79)
  • cmds: Allowed inputs of commands to be file paths, bytes, or file-like objects (Radim Karniš - 46a9e31)
  • flash_attach: Encapsulated logic for flash attaching and configuration (Radim Karniš - 6e959ef)
  • espefuse: Added eFuse calculation fields for ESP32-C5 (Konstantin Kondrashov - 9104038)
  • espefuse: Added 3-bit field for wafer major version in ESP32-P4 (Konstantin Kondrashov - c102510)
  • espsecure: Dropped ecdsa module, using cryptography instead (Radim Karniš - e132f6f)
  • targets: Updated chip features lists with more info (Radim Karniš - 3c776aa)
  • Added support for Adesto flash chips (Jaroslav Burian - 0b56f85)
  • Added support for k, M suffix for flash sizes (Peter Dragun - 6f0d779)

🐛 Bug Fixes

  • write-flash: Detect more cases of unresponsive flash, fixed failing flash_size check (Radim Karniš - e6bfc3b)
  • autodetection: Removed the Unsupported detection protocol stage (Radim Karniš - 05553a4)
  • elf2image: Fixed RAM app generation when SHA256 offset is not specified (Jaroslav Burian - 6f8ff39)
  • image-info: Sanitized app and bootloader info of null bytes (Radim Karniš - 8016455)
  • logging: Avoid crashes when flushing if sys.stdout is not available (Radim Karniš - 5176b67)
  • ESP32-S2: Enabled auto-detection in secure download mode (Jaroslav Burian - c2f5d21)
  • ESP32-P4: Enabled ECO5 chip detection (Jaroslav Burian - 0b3460f)
  • elf2image: Multiple fixes from 3rd party frameworks (Sylvio Alves - cbd4e9b)
  • read-flash: Added timeout to to avoid infinite loops (Peter Dragun - f26a7bb)
  • espefuse: Close data files after reading the data (Stevan Stevic - 807d02b)

Thanks to @stevanStevic, @Jason2866, 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 4.9.0

19 Jun 20:57

Choose a tag to compare

New Features

  • ESP32-H21: Added full support
  • ESP32-H4: Added full support
  • ESP32-P4: Enabled USB-OTG in flasher stub
  • ESP32-P4: Added support for >16MB flash sizes in flasher stub
  • ESP32-S3: Added support for >16MB encrypted writes in flasher stub
  • chip_type_verification: Enabled in secure download mode, stopped using magic numbers
  • watchdog_reset: Added a new watchdog_reset option working even in USB modes
  • erase_region: Enabled erasing in ROM bootloader and secure download mode
  • Added information about the currently used USB mode during chip connection
  • image_info: Extended the app description info with new segments
  • esp_rfc2217: Improved the logger message format
  • Added the option to filter connections based on the serial number
  • hard_reset: Added support for custom hard reset sequence configuration
  • Added support for Python 3.13
  • espefuse: Added support for eFuses for ESP32-C5 ECO2
  • espefuse: Added support for eFuses for ESP32-C61 ECO3
  • espsecure: Improved error messages in encrypt_flash_data() and decrypt_flash_data()
  • espefuse: Added support for different eFuse table versions for ESP32-H2
  • espefuse: Added 3 bit for PSRAM_CAP efuse field
  • espefuse: Added API for getting block and wafer versions
  • espefuse: Added ADC calibration data for ESP32-C61, ESP32-C5, and ESP32-P4

Bug Fixes

  • stub_flasher: Fixed failing ESP32-C5 ECO2 flash writes
  • stub_flasher: Fixed USB-Serial/JTAG mode on ESP32-C5 ECO2 and ESP32-C61 ECO3
  • write_flash: Detect more cases of unresponsive flash, fixed failing flash_size check
  • write_flash: Skipped flash_size checks if we can't read flash size
  • espefuse: Fixed output messages in set_flash_voltage
  • espefuse: Corrected JTAG_SEL_ENABLE to GPIO34 strapping pin on ESP32-P4
  • ESP32-C5: Fixed bootloader address
  • ESP32-H21: Fixed eFuse base address
  • IntelHex: Do not use padding for merged IntelHex files
  • elf2image: Fixed for RAM app when SHA256 offset is not specified
  • elf2image: Fixed support for --flash-mmu-page-config for all chips
  • elf2image: Try to correct MMU page size if not specified, print correctly in error messages
  • tests: Expect the correct module name for Python 3.14 argparse
  • Fixed closing port when connection fails
  • image_info: Hidden missing app info based on IDF version
  • save_segment: Added segment length check, the same as the bootloader does
  • image_info: Prevented reading app description in invalid cases
  • esp_rfc2217: Fixed keyboard interrupt on Windows
  • detect_chip: Fixed to select the correct loader before further operations to avoid silent failures
  • usb_resets: Fixed resetting in USB-OTG and USB-Serial/JTAG modes

Thanks to @chromalock, @befeleme, 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 4.8.1

25 Sep 21:23

Choose a tag to compare

Bug Fixes

  • packaging: Fixed failing esptool imports on Windows (#1011)
  • packaging: Fixed unwanted Python scripts being included in the distribution (#1012)
  • ESP32-C2: Fixed ECO4 magic number

Thanks to @befeleme and @matthuisman 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 4.8.0

18 Sep 13:35

Choose a tag to compare

New Features

  • ESP32-C5: Added full support
  • ESP32-C61: Added full support
  • ESP32-P4: Enabled USB-Serial/JTAG in flasher stub
  • ESP32-P4: Updated eFuse table
  • ESP32-P4: Added ECO1 magic number
  • ESP32-P4: Added external spi flash connection restriction checks
  • ESP32-P4: Added wafer and pkg_version fields
  • ESP32-C5-beta3: Added preview support
  • ESP32-S3: Clear boot control register on hard reset to avoid going back to download mode
  • Added a new read_flash_sfdp command to read the flash chip SFDP register
  • Added serial port filtering and selection by VID/PID/Name
  • Added advisory port locking
  • Added new ROM bootloader flash error definitions
  • Added an option to retry connecting to the chip in a loop
  • Automatically reconnect if a serial port disconnects during reset
  • write_flash: Retry flashing if the chip disconnects during writing data
  • write_flash: Added image binary SHA digest recalculation if fields change
  • flash_id: Print flash voltage
  • get_security_info: Print key_purpose fields
  • loader: Enabled usage of context managers for esp instances
  • espefuse: Added support to extend eFuse table by user CSV file
  • espefuse: Added eFuse dump formats: joint(default) and split(new)
  • espefuse: Added incompatible eFuse settings check for ESP32-S3
  • espefuse: Allow eFuse filtering based on command line arguments
  • espefuse: Added a check for correctness of written data
  • espefuse: Updated adc_info command for all chips
  • espefuse: Enabled operation with coding scheme == 3
  • espefuse: Updated eFuses of ESP32-C6 and ESP32-H2
  • espefuse: Postpone burning of some eFuses to the very end
  • espefuse: Improved help for burn_efuse cmd
  • espefuse: check_error --recover chip even if there are errors
  • espsecure: Added support for secure boot v2 using ECDSA-P384 signatures
  • cli: Added support for autocompletions

Bug Fixes

  • ESP32: Fixed ROM not attaching in-package flash chips
  • ESP32-D0WDR2-V3: Print correct chip name
  • write_flash: Verify if files will fit against the real flash size to prevent writing past flash end
  • write_flash: Erase non-aligned bytes with --no-stub
  • bin_image: Added a check for ELF file segment when saving RAM segments
  • elf2image: Added ELF flags to merge condition
  • merge_bin: Treat files starting with a colon as raw files
  • image_info: Index image segments from 0 instead of 1
  • read_flash: Added flash size arg to enable reading past 2MB without stub
  • read_flash: Flush transmit buffer less often to increase throughput
  • remote_ports: Disabled the reset sequence when a socket is used
  • bitstring: Restricted bitstring dependency to fix 32-bit compatibility
  • USB-OTG: Pass error message to an exception if a reset cannot be performed
  • espefuse: Use stub class if stub flasher is running
  • espefuse: Fix pem file reading in burn_key of ECDSA_KEY
  • ram_only_header: Do not append SHA256
  • ram_only_header: Pad flash segments to the next boundary
  • ram_only_header: Sort segments
  • secure_download_mode: Disable secure boot detection and print more info
  • intelhex: Catch unicode decode errors when converting hex to binary
  • Fixed glitches on RTS line in no_reset mode on Windows
  • Disable resetting on unsupported serial ports

Code Refactoring

  • Migrated esp_rfc2217_server into a standalone subpackage

Thanks to @befeleme, @klondi, @gnought, @greendoescode, @BoryaGames, @andrewleech, @bryghtlabs-richard, @2opremio, 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 4.7

14 Dec 14:47

Choose a tag to compare

New Features

  • spi_connection: Support --spi-connection on all chips, allowing connection of an external flash
  • esp32-s3: Support >16MB quad flash chips
  • bin_images: add support for intel hex format images
  • merge_bin: add support for uf2 format
  • esptool: added esp32p4 target
  • esp32p4: Stub flasher support
  • espefuse: Support XTS_AES_256_KEY key_purpose for ESP32P4
  • xip_psram: support xip psram feature on esp32p4
  • elf2image: add ram-only-header argument
  • rfc2217_server: Add hard reset sequence
  • espefuse: Adds efuse ADC calibration data for ESP32H2
  • espefuse: Update the way to complete the operation
  • add support for get_security_info on esp32c3 ECO7
  • loader: Added hints for some serial port issues when rising port error
  • Add support for Python 3.12
  • esp32c3: Support ECO6 and ECO7 magic numbers
  • efuse: Update key purpose table and tests
  • efuse: ESP32P4 adds ecdsa_key support
  • espefuse: Add support for esp32p4 chip
  • espsecure: Allow prompting for HSM PIN in read_hsm_config
  • esptool: Add new packages for ESP32C3 and flash efuses
  • esptool: Add tests for get_chip_features
  • esptool: Add PICO package for ESP32S3 and flash/psram efuses
  • get_security_info: Improved the output format and added more details

Bug Fixes

  • flasher_stub: fix usb-serial-jtag enabled non-related intr source, improved stability
  • esp32c2: Added get_flash_cap and get_flash_vendor
  • testloadram: Windows assertion error
  • fixed exit() to be used from the correct module
  • esp32c2: Recommend using higher baud rate if connection fails
  • test_esptool: Fixed connection issues on Windows
  • esptool: Rephrase the --ram-only-header command message
  • load_ram: check for overlaps in bss section
  • tests/intelhex: make sure file is closed on Windows
  • spi_connection: Unattach previously attached SPI flash
  • espefuse: Fix ECDSA_FORCE_USE_HARDWARE_K for ECDSA key (esp32h2)
  • loader: Could not open serial port message adjusted
  • bin_image: Check only ELF sections when searching for .flash.appdesc
  • Fix redirection of STDOUT
  • autodetection: Remove the ESP32-S2 ROM class from get_security_info autodetection
  • elf2image: fix text/rodata mapping overlap issue on uni-idrom bus chips
  • expand file args: Correctly print the expanded command
  • esp32-c2: Enable flashing in secure download mode

Code Refactoring

  • stub_flasher: Cleanup, make adding new targets easier

Thanks to @20162026, @rretanubun, and others for contributing to this release!