Skip to content

Releases: espressif/esptool

Version 4.7

14 Dec 14:47
Compare
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!

Version 4.6.2

14 Jun 08:15
Compare
Choose a tag to compare

Bug Fixes

  • ESP32-H2, ESP32-C6: Fixed byte order in MAC address.
  • C900: Too much data: Fixed occasional compressed upload failures.
  • CH9102F USB-to-UART: Suggest installing new serial drivers if writing to RAM fails on MacOS.

Miscellaneous Changes

  • Documentation: Added docs for ESP32-C2, ESP32-H2, and ESP32-C6.

Version 4.6.1

01 Jun 12:54
Compare
Choose a tag to compare

Bug Fixes

  • ESP32-S3 USB-Serial/JTAG: Fix incorrect RTC WDT registers to avoid resets during flashing.

Version 4.6

29 May 14:05
Compare
Choose a tag to compare

New Features

  • Added the option to specify ALL as a size argument in read_flash and erase_region to perform said operation until the end of the flash memory. (#461)
  • image_info: Display the WP pin state in human-readable form. (#874)
  • image_info: Display chip type based on Chip ID, if available. (#874)
  • ESP32-C6 and ESP32-H2: Added support for reading 64-bit MAC address.

espefuse.py

  • Added efuse description YAML files for all chips.
  • ECDSA_KEY: Added support for burning from PEM file.
  • burn_key and burn_key_digest: Hide sensitive info during burning by default.
  • Added support for external esp instance. (#873)
  • Improved efuse error viewing.
  • ESP32-H2: Added RF Calibration Information.

Bug Fixes

  • Fixed 01060000: Operation or feature not supported error by setting flash parameters even with --flash_size keep.
  • USB-Serial/JTAG: Autofeed super watchdog (SWD) to avoid resets during flashing.
  • USB-Serial/JTAG: Fixed failing reset sequence on COM ports >= 10 due to PID detection error. (#880)
  • ESP32-C6: Fixed get_pkg_version and get_{major,minor}_chip_version. (#867)
  • image_info: Removed check that reserved bytes in the image header are zero, which would break chip type autodetection.
  • Moved bootloader description header bootdesc to the top of the RAM segment.
  • Refactored to support cryptography>=40.
  • Refactored to support recent reedsolo package versions.

espefuse.py

  • ESP32-C2: Fixed BLOCK_KEY0 summary view when SB + FE keys are burnt.
  • ESP32-C3, ESP32-C6, ESP32-S3, ESP32-H2: Prevent burning XTS_AES and ECDSA keys into BLOCK9 (BLOCK_KEY5).

espsecure.py

  • Improved error message for incorrect PEM format. (#881)
  • Added a clear error message if an incompatible OpenSSL backend is used. (#878)

Miscellaneous Changes

  • flasher stub: Makefile changes for clarity and modularity. (#858)
  • Build workflow: Added binaries for ARM and ARM64.
  • tests: Refactored the test suite to be Windows-compatible.
  • Fixed inconsistent usage of directory separators. (#884)

Thanks to @paravoid, @xingrz, @hasheddan, @fuzeman, @Massimiliano-solutiontech, and others for contributing to this release!

Version 3.3.3

17 Mar 11:11
Compare
Choose a tag to compare

This bugfix release of an older esptool.py version is intended only for purposes when v3.3 needs to be used. The latest v4 release is recommended and under active development.

New Features

  • Added a new option --pad-to-size <size>.
  • Added support for major and minor chip revisions.

Bug Fixes

  • espefuse: Fixed compatibility with Bitstring>=4 (#797)

Thanks to everyone who contributed to this release!

Version 4.5.1

01 Mar 08:26
Compare
Choose a tag to compare

Bug Fixes

  • ESP32-S3: Temporarily disabled increasing CPU frequency in the stub flasher (#832, #848, #842).
  • Fixed error messages when esptool is used with an unknown chip.
  • esp_rfc2217_server: Updated reset sequences.
  • esp_rfc2217_server: Registered as a script (#846).
  • pyinstaller: Fixed glibc dependency on gnu/linux (#843).

Miscellaneous Changes

  • Added target tests for ESP32-H2.
  • Reduced size of test images.
  • Added a custom host_test marker for the test suite to allow running tests without real hardware (#838).

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

Version 4.5

13 Feb 09:34
Compare
Choose a tag to compare

This release aims to fix most of the major issues with resetting into the download mode, flashing in the USB-Serial/JTAG mode, and working with large-capacity flash memory chips.

New Features

  • Configuration file: Added the option to configure internal variables (such as timeouts and delays) and to implement a custom reset sequence (see the related documentation).
  • Bootloader reset: Added a new reset strategy to make resetting into the download mode more reliable on MacOS and Linux systems (#712).
  • ESP32-S3: Added support for >32MB octal flash chips (#795, #745).
  • ESP32-H2: Added full esptool and flasher stub support.
  • ESP32-C6: Added full flasher stub support.
  • flash_id: Print the flash memory chip type (quad vs. octal) if available (#730).
  • elf2image: Added --pad-to-size <size> option to specify a size to which the generated binary image must be aligned.
  • write_flash: Added a security check to prevent bricking the device when flash encryption is active.
  • Optimized to reduce the number of steps when a chip is being interrogated.

espsecure.py

  • Added an external HSM signing interface.
  • Added support for pre-calculated signatures.
  • Added PKCS#8 identifier support (#819).

Bug Fixes

  • USB-Serial/JTAG: Fixed randomly failing transfers when writing/reading large binaries.
  • ESP32-S3: Fixed crashing stub flasher when using in USB-Serial/JTAG mode (#808)
  • ESP32: Recalculate the crystal clock to compensate for the chips baud rate setting as a workaround to avoid ESP32 CK_8M frequency drift.
  • ESP32-S3: Fixed v0.0 chip being detected as vX.8.
  • StopIteration: Fixed several possible errors when stub flasher is being uploaded and added better error messages for other cases (#824).
  • Fixed chip autodetection and operations in the secure download mode on ESP32-S2 and S3 (#813).
  • write_flash: Fixed the --erase-all option corrupting flash (#805).
  • write_flash: Fixed security checks when min_rev and max_rev_full are specified in the image.
  • Fixed compatibility with bitstring>=4 package.
  • Fixed compatibility with reedsolo when using Python 3.10 and Cython (#711).

espefuse.py

  • The serial port now gets closed when espefuse fails (#803).

Miscellaneous Changes

  • Refactored to make adding new targets easier, reduce code repetition, and comply with the Black 23.1 style.
  • Added target tests for all of the newly supported chips.
  • Updated the toolchains for stub flasher builds.

Thanks to @256dpi, @StevenMacias, @fennecbutt, and others for contributing to this release!

Version 4.4

22 Nov 10:13
Compare
Choose a tag to compare

New Features

  • flasher_stub: Increased read/write speeds over USB-JTAG/Serial or USB-OTG modes, making some operations nearly twice as fast.
  • Added detection for guru meditation errors induced by the flasher stub or ROM bootloader.
  • Added a readable error message for serial-related failures, giving more information about possible HW issues.
  • espsecure.py: Improved AES-XTS encryption speed. (#783)

Bug Fixes

  • ESP32-S3 v0.0: Fixed chip revision detection.
  • bitstring: Added a workaround for breaking changes of bitstring==4
  • get_default_connected_device: Fixed to close unused serial ports.
  • flash_freq: Fall back to a chip-specific default flash frequency when no flash_freq arg is specified.
  • ESP32-C6: Fixed chip type detection and SPI flash communication.

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

Version 3.3.2

21 Sep 10:43
Compare
Choose a tag to compare

This bugfix release of an older esptool.py version is intended only for purposes when v3.3 needs to be used. The latest v4 release is recommended and under active development.

New Features

  • write_flash: Added the ability to recover from serial errors when flashing, effectively making data transfers more robust (#182)
  • Added more memory density definitions to cover known flash chips (#769)
  • Added parsing of stub flasher error definitions in esptool messages

espefuse.py

  • Added XTS_AES_256 key_purpose on ESP32-S3-beta2
  • burn_efuse: Improved error messages when a new data value is incorrect (#760)

Bug Fixes

  • load_extended_header: Load the minimum chip revision min_rev field
  • Fixed faulty hard_reset() with RTS pin for ESP32-S2/S3 in slower environments
  • get_default_connected_device: Fixed closing unused ports

espefuse.py

  • Corrected eFuse tables
  • Removed XTS_AES_256 key purposes on ESP32-C3
  • Fixed location of FAIL_BIT and NUM_BITS on ESP32-C3
  • Added a warning to specify the --port/-p argument if connection fails (#744)

espsecure.py

  • _microecc_format: Pad zeroes to curve length
  • Fixed argparse Secure Boot key generation command to work with both V1 and V2

Thanks to @johnboiles, @hathach, and others for contributing to this release!

Full Changelog: v3.3.1...v3.3.2

Version 4.3

14 Sep 11:47
Compare
Choose a tag to compare

New Features

  • image_info: Added image type autodetection, specifying --chip is no longer needed
  • image_info: Added the ability to display application info if a valid app image is detected
  • write_flash: Added the ability to recover from serial errors when flashing, effectively making data transfers more robust (#182)
  • write_flash: Added checks to prevent flashing if an incompatible chip type or chip revision is used, --force can be used to override this restriction
  • Added more memory density definitions to cover known flash chips (#769)
  • Added parsing of stub flasher error definitions in esptool messages
  • Added support for Major.Minor chip revision versioning scheme in the format vX.Y

Bug Fixes

  • Listed BLE as an ESP32-C3 feature (#770)
  • Included MANIFEST in sdist to fix RPM packaging (#767)
  • espefuse.py: Fixed burning of ENABLE_SECURITY_DOWNLOAD eFuse

Internal features

Experimental support for ESP32-C6 has been added (--no-stub only). Burning eFuses is not recommended. This SoC is not generally available, so it is not fully supported in this release. Official support will be added in a later release.

Thanks to @johnboiles, @Jason2866, @Robsteranium, and others for contributing to this release!