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
args
object) (Radim Karniš - ba36933) (Peter Dragun - d7da0f8) - CLI overhaul:
esptool
,espefuse
,espsecure
now useclick
for CLI argument parsing andrich-click
for 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
.py
suffix from scripts (e.g.,esptool.py flash-id
->esptool flash-id
). Using.py
will print deprecation warnings (Peter Dragun - 635cde1) - Centralised logging: All tools' output now goes through the
EsptoolLogger
class, allowing easy redirection (Radim Karniš - 1ce02db) - image-info: Deprecated the
--version 1
output format (Radim Karniš - 3f625c3) - errors: Errors are now printed to STDERR, added
KeyboardInterrupt
handling (Radim Karniš - 0864e17) - make-image: Removed the ESP8266
make-image
command in favor of other workflows (Radim Karniš - 955a7c8) - espefuse: Removed
execute-scripts
in 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
--verify
option (Radim Karniš - dbf3d1c)
✨ New Features
- logging: Added collapsible output stages and ASCII progress bars (Radim Karniš - f3cf107)
- trace: Updated
--trace
with 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
ecdsa
module, usingcryptography
instead (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
,M
suffix for flash sizes (Peter Dragun - 6f0d779)
🐛 Bug Fixes
- write-flash: Detect more cases of unresponsive flash, fixed failing
flash_size
check (Radim Karniš - e6bfc3b) - autodetection: Removed the
Unsupported detection protocol
stage (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.stdout
is not available (Radim Karniš - 5176b67) - ESP32-S2: Enabled auto-detection in secure download mode (Jaroslav Burian - c2f5d21)
- ESP32-P4: Enabled
ECO5
chip 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.