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!