Releases: espressif/esptool
Version 4.8.1
Bug Fixes
- packaging: Fixed failing esptool imports on Windows (#1011)
- packaging: Fixed unwanted Python scripts being included in the distribution (#1012)
- ESP32-C2: Fixed ECO4 magic number
Thanks to @befeleme and @matthuisman for contributing to this release!
Results of checking the release against common anti-virus SW
- esptool-v4.8.1-win64.zip
- esptool-v4.8.1-macos.zip
- esptool-v4.8.1-linux-arm64.zip
- esptool-v4.8.1-linux-arm32.zip
- esptool-v4.8.1-linux-amd64.zip
The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.
Version 4.8.0
New Features
- ESP32-C5: Added full support
- ESP32-C61: Added full support
- ESP32-P4: Enabled USB-Serial/JTAG in flasher stub
- ESP32-P4: Updated eFuse table
- ESP32-P4: Added ECO1 magic number
- ESP32-P4: Added external spi flash connection restriction checks
- ESP32-P4: Added
wafer
andpkg_version
fields - ESP32-C5-beta3: Added preview support
- ESP32-S3: Clear boot control register on hard reset to avoid going back to download mode
- Added a new
read_flash_sfdp
command to read the flash chip SFDP register - Added serial port filtering and selection by VID/PID/Name
- Added advisory port locking
- Added new ROM bootloader flash error definitions
- Added an option to retry connecting to the chip in a loop
- Automatically reconnect if a serial port disconnects during reset
- write_flash: Retry flashing if the chip disconnects during writing data
- write_flash: Added image binary SHA digest recalculation if fields change
- flash_id: Print flash voltage
- get_security_info: Print
key_purpose
fields - loader: Enabled usage of context managers for
esp
instances - espefuse: Added support to extend eFuse table by user CSV file
- espefuse: Added eFuse dump formats: joint(default) and split(new)
- espefuse: Added incompatible eFuse settings check for ESP32-S3
- espefuse: Allow eFuse filtering based on command line arguments
- espefuse: Added a check for correctness of written data
- espefuse: Updated
adc_info
command for all chips - espefuse: Enabled operation with
coding scheme == 3
- espefuse: Updated eFuses of ESP32-C6 and ESP32-H2
- espefuse: Postpone burning of some eFuses to the very end
- espefuse: Improved help for
burn_efuse
cmd - espefuse:
check_error --recover
chip even if there are errors - espsecure: Added support for secure boot v2 using ECDSA-P384 signatures
- cli: Added support for autocompletions
Bug Fixes
- ESP32: Fixed ROM not attaching in-package flash chips
- ESP32-D0WDR2-V3: Print correct chip name
- write_flash: Verify if files will fit against the real flash size to prevent writing past flash end
- write_flash: Erase non-aligned bytes with --no-stub
- bin_image: Added a check for ELF file segment when saving RAM segments
- elf2image: Added ELF flags to merge condition
- merge_bin: Treat files starting with a colon as raw files
- image_info: Index image segments from 0 instead of 1
- read_flash: Added flash size arg to enable reading past 2MB without stub
- read_flash: Flush transmit buffer less often to increase throughput
- remote_ports: Disabled the reset sequence when a socket is used
- bitstring: Restricted bitstring dependency to fix 32-bit compatibility
- USB-OTG: Pass error message to an exception if a reset cannot be performed
- espefuse: Use stub class if stub flasher is running
- espefuse: Fix pem file reading in
burn_key
ofECDSA_KEY
- ram_only_header: Do not append SHA256
- ram_only_header: Pad flash segments to the next boundary
- ram_only_header: Sort segments
- secure_download_mode: Disable secure boot detection and print more info
- intelhex: Catch unicode decode errors when converting hex to binary
- Fixed glitches on RTS line in
no_reset
mode on Windows - Disable resetting on unsupported serial ports
Code Refactoring
- Migrated
esp_rfc2217_server
into a standalone subpackage
Thanks to @befeleme, @klondi, @gnought, @greendoescode, @BoryaGames, @andrewleech, @bryghtlabs-richard, @2opremio, and others for contributing to this release!
Results of checking the release against common anti-virus SW
- esptool-v4.8.0-win64.zip
- esptool-v4.8.0-macos.zip
- esptool-v4.8.0-linux-arm64.zip
- esptool-v4.8.0-linux-arm32.zip
- esptool-v4.8.0-linux-amd64.zip
The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.
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!