Version 3.0
Breaking changes
- The default
esptool.py write_flash --flash_sizeargument has changed fromdetecttokeep. This means that if no--flash_sizeargument is passed when flashing a bootloader, the value in the bootloader .bin file header is kept instead of detecting the actual flash size and updating the header. To keep the old behaviour, add the argumentesptool.py [...] write_flash [...] -fs detect espefuse.pycommand line arguments for ESP32 have changed:BLK1,BLK2,BLK3is nowBLOCK1,BLOCK2,BLOCK3`- The key usage
secure_boothas been replaced withsecure_boot_v1,secure_boot_v2. Secure Boot V2 is the new RSA-based Secure Boot mechanism supported on ESP32 V3.
New Features
- Support for ESP32-S2 SoC has been added
- Support for detecting ESP32-PICO-V3-02 and ESP32-U4WDH have been added
- New
--connect-attemptsargument (#464) - Fixed scrolling problems when output is redirected (for example in Arduino IDE, see discussion at #482)
- Produce a meaningful error if the SoC we connect to doesn't match the
--chipargument - Support different capitalization and spelling for
--chipargument (ie-c ESP32,-c esp32-s2, etc. - Added dedicated program
esp_rfc_2217_server.pyfor flashing via RFC2217 (i.e. flashing over the network, #383)
espsecure.py
- Added support for Secure Boot V2 (ESP32 V3, ESP32-S2)
- Secure Boot V1: PKCS8 formatted ECDSA keys are now supported via ecdsa library (not including password protected keys)
espefuse.py
- Added ESP32 ECO3 efuse
UART_DOWNLOAD_DIS - Added new batch burn mode, support burning more than one eFuse on a single command line
- espefuse.py internals have been refactored to support multiple chips, produce more information about which eFuses are being written to which values.
- "Virtual" mode added for host-based testing, allows updating eFuse values on a "virtual" chip inside the host.
Internal features
These features are intended for use inside Espressif:
- Support for ESP32-S3beta2 & ESP32-C3 have been added. These SoCs are not currently available outside Espressif, so these SoCs are unsupported in this release. Official support will be added in a later esptool release.
esptool.py --no-stub read_flashis now supported on ESP32 and later. This option is slower than using the default stub option to read flash, so it's generally not useful for production SoCs.
Bug Fixes
- Added temporary workaround for a pyserial failure on macOS Big Sur Preview (#540)
- Fixed gcc9 warning in the stub (#501)
- Fixed some memory types printed in the memory map output
- Fixed the check for zero bytes before applying an ELF SHA-256 with
elf2image --elf-sha256-offsetoption (#560) - Fixed displaying some single core ESP32 features incorrectly, i.e. ESP32-S0WD
- Fixed exception on Python 3 if the same flash address was repeated twice (#558)
Miscellanous Changes
- Updated miniz to v2.1.0 (#500)
- Moved ESP32 stub loader location to facilitate loading large applications direct to IRAM
- Vendored modules ecdsa, pyaes and optional pycrypto have been removed. Pyaes has been replaced with the pyca-cryptography library
Thanks to @jkoelker, @earlephilhower, @paravoid, @niziak, and others for contributing to this release.