Skip to content

Releases: espressif/esptool

Version 4.8.0

18 Sep 13:35
Compare
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
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