Releases: espressif/esptool
Version 4.10.0
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-pkcs119.0+ (Peter Dragun - 223456f)
Results of checking the release against common anti-virus SW
- esptool-v4.10.0-windows-amd64.zip
- esptool-v4.10.0-macos-arm64.tar.gz
- esptool-v4.10.0-macos-amd64.tar.gz
- esptool-v4.10.0-linux-armv7.tar.gz
- esptool-v4.10.0-linux-amd64.tar.gz
- esptool-v4.10.0-linux-aarch64.tar.gz
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
✨ 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-sizeargument 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-click1.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-pkcs119.0+ (Peter Dragun - 3ea646f)
Thanks to @tormodvolden, and others for contributing to this release!
Results of checking the release against common anti-virus SW
- esptool-v5.1.0-windows-amd64.zip
- esptool-v5.1.0-macos-arm64.tar.gz
- esptool-v5.1.0-macos-amd64.tar.gz
- esptool-v5.1.0-linux-armv7.tar.gz
- esptool-v5.1.0-linux-amd64.tar.gz
- esptool-v5.1.0-linux-aarch64.tar.gz
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
🐛 Bug Fixes
- Fix compatibility with Click 8.2.0+ (Peter Dragun - 524825e)
- Fix
--port-filterargument 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-efusecommand when no arguments are provided (Peter Dragun - 0f32306)
Results of checking the release against common anti-virus SW
- esptool-v5.0.2-windows-amd64.zip
- esptool-v5.0.2-macos-arm64.tar.gz
- esptool-v5.0.2-macos-amd64.tar.gz
- esptool-v5.0.2-linux-armv7.tar.gz
- esptool-v5.0.2-linux-amd64.tar.gz
- esptool-v5.0.2-linux-aarch64.tar.gz
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
🐛 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_ARRAYsection 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
ECO5chip detection (Jaroslav Burian - e4b9675)
Results of checking the release against common anti-virus SW
- esptool-v4.9.1-windows-amd64.zip
- esptool-v4.9.1-macos-arm64.tar.gz
- esptool-v4.9.1-macos-amd64.tar.gz
- esptool-v4.9.1-linux-armv7.tar.gz
- esptool-v4.9.1-linux-amd64.tar.gz
- esptool-v4.9.1-linux-aarch64.tar.gz
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
🐛 Bug Fixes
- elf2image: Validate ELF section types and addresses before processing (Jaroslav Burian - 97a1546)
- elf2image: Handle
PREINIT_ARRAYsection 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
- esptool-v5.0.0-windows-amd64.zip
- esptool-v5.0.0-macos-arm64.tar.gz
- esptool-v5.0.0-macos-amd64.tar.gz
- esptool-v5.0.0-linux-armv7.tar.gz
- esptool-v5.0.0-linux-amd64.tar.gz
- esptool-v5.0.0-linux-aarch64.tar.gz
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
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
argsobject) (Radim Karniš - ba36933) (Peter Dragun - d7da0f8) - CLI overhaul:
esptool,espefuse,espsecurenow useclickfor CLI argument parsing andrich-clickfor 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
.pysuffix from scripts (e.g.,esptool.py flash-id->esptool flash-id). Using.pywill print deprecation warnings (Peter Dragun - 635cde1) - Centralised logging: All tools' output now goes through the
EsptoolLoggerclass, allowing easy redirection (Radim Karniš - 1ce02db) - image-info: Deprecated the
--version 1output format (Radim Karniš - 3f625c3) - errors: Errors are now printed to STDERR, added
KeyboardInterrupthandling (Radim Karniš - 0864e17) - make-image: Removed the ESP8266
make-imagecommand in favor of other workflows (Radim Karniš - 955a7c8) - espefuse: Removed
execute-scriptsin 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
--verifyoption (Radim Karniš - dbf3d1c)
✨ New Features
- logging: Added collapsible output stages and ASCII progress bars (Radim Karniš - f3cf107)
- trace: Updated
--tracewith 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
ecdsamodule, usingcryptographyinstead (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,Msuffix for flash sizes (Peter Dragun - 6f0d779)
🐛 Bug Fixes
- write-flash: Detect more cases of unresponsive flash, fixed failing
flash_sizecheck (Radim Karniš - e6bfc3b) - autodetection: Removed the
Unsupported detection protocolstage (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.stdoutis not available (Radim Karniš - 5176b67) - ESP32-S2: Enabled auto-detection in secure download mode (Jaroslav Burian - c2f5d21)
- ESP32-P4: Enabled
ECO5chip 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
- esptool-v5.0.0-windows-amd64.zip
- esptool-v5.0.0-macos-arm64.tar.gz
- esptool-v5.0.0-macos-amd64.tar.gz
- esptool-v5.0.0-linux-armv7.tar.gz
- esptool-v5.0.0-linux-amd64.tar.gz
- esptool-v5.0.0-linux-aarch64.tar.gz
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
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_resetoption 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-C5ECO2 - espefuse: Added support for eFuses for
ESP32-C61ECO3 - espsecure: Improved error messages in
encrypt_flash_data()anddecrypt_flash_data() - espefuse: Added support for different eFuse table versions for
ESP32-H2 - espefuse: Added 3 bit for
PSRAM_CAPefuse field - espefuse: Added API for getting block and wafer versions
- espefuse: Added ADC calibration data for
ESP32-C61,ESP32-C5, andESP32-P4
Bug Fixes
- stub_flasher: Fixed failing
ESP32-C5ECO2flash writes - stub_flasher: Fixed USB-Serial/JTAG mode on
ESP32-C5ECO2andESP32-C61ECO3 - write_flash: Detect more cases of unresponsive flash, fixed failing flash_size check
- write_flash: Skipped
flash_sizechecks if we can't read flash size - espefuse: Fixed output messages in
set_flash_voltage - espefuse: Corrected
JTAG_SEL_ENABLEtoGPIO34strapping pin onESP32-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-configfor 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
- esptool-v4.9.0-windows-amd64.zip
- esptool-v4.9.0-macos-arm64.tar.gz
- esptool-v4.9.0-macos-amd64.tar.gz
- esptool-v4.9.0-linux-armv7.tar.gz
- esptool-v4.9.0-linux-amd64.tar.gz
- esptool-v4.9.0-linux-aarch64.tar.gz
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
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
- esptool-v4.8.1-win64.zip
- esptool-v4.8.1-macos.zip
- esptool-v4.8.1-linux-arm64.zip
- esptool-v4.8.1-linux-arm32.zip
- esptool-v4.8.1-linux-amd64.zip
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
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
waferandpkg_versionfields - 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_sfdpcommand 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_purposefields - loader: Enabled usage of context managers for
espinstances - 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_infocommand 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_efusecmd - espefuse:
check_error --recoverchip 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_keyofECDSA_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_resetmode on Windows - Disable resetting on unsupported serial ports
Code Refactoring
- Migrated
esp_rfc2217_serverinto 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
- esptool-v4.8.0-win64.zip
- esptool-v4.8.0-macos.zip
- esptool-v4.8.0-linux-arm64.zip
- esptool-v4.8.0-linux-arm32.zip
- esptool-v4.8.0-linux-amd64.zip
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
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!