Releases: espressif/esptool
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!
Version 4.6.2
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
, andESP32-C6
.
Version 4.6.1
Bug Fixes
ESP32-S3 USB-Serial/JTAG
: Fix incorrect RTC WDT registers to avoid resets during flashing.
Version 4.6
New Features
- Added the option to specify
ALL
as a size argument inread_flash
anderase_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
andESP32-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
andburn_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
: Fixedget_pkg_version
andget_{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
: FixedBLOCK_KEY0
summary view when SB + FE keys are burnt.ESP32-C3
,ESP32-C6
,ESP32-S3
,ESP32-H2
: Prevent burningXTS_AES
andECDSA
keys intoBLOCK9
(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
andARM64
. - 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
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
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
: Fixedglibc
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
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
: Fixedv0.0
chip being detected asvX.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 whenmin_rev
andmax_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
New Features
flasher_stub
: Increased read/write speeds overUSB-JTAG/Serial
orUSB-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 ofbitstring==4
get_default_connected_device
: Fixed to close unused serial ports.flash_freq
: Fall back to a chip-specific default flash frequency when noflash_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
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 revisionmin_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
andNUM_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
New Features
image_info
: Added image type autodetection, specifying--chip
is no longer neededimage_info
: Added the ability to display application info if a valid app image is detectedwrite_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 ofENABLE_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!