Skip to content

Version 3.0

Compare
Choose a tag to compare
@projectgus projectgus released this 05 Nov 02:31
· 661 commits to master since this release

Breaking changes

  • The default esptool.py write_flash --flash_size argument has changed from detect to keep. This means that if no --flash_size argument 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 argument esptool.py [...] write_flash [...] -fs detect
  • espefuse.py command line arguments for ESP32 have changed:
    • BLK1, BLK2, BLK3 is now BLOCK1, BLOCK2, BLOCK3`
    • The key usage secure_boot has been replaced with secure_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-attempts argument (#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 --chip argument
  • Support different capitalization and spelling for --chip argument (ie -c ESP32, -c esp32-s2, etc.
  • Added dedicated program esp_rfc_2217_server.py for 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_flash is 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-offset option (#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.