# CHANGELOG > All notable changes to this project are documented in this file. > This list is not exhaustive - only important changes, fixes, and new features in the code are reflected here.
Static Badge Static Badge Static Badge

## v5.1.0 (2025-09-15) ### ✨ New Features - **espefuse**: Support ESP32-P4 ECO5 (v3.0) *(Konstantin Kondrashov - 40f103c)* - **esp32p4**: Add support for ESP32-P4.ECO5 *(Jaroslav Safka - 6c10050)* - **esp32c5**: Add support for >16 MB flash sizes *(Roland Dobai - 8e2b94e)* - **espefuse**: Add custom key purposes for ESP32C6/C5/P4 *(Konstantin Kondrashov - c6ce0bc)* - **espefuse**: Support burning ECDSA_384 keys *(Konstantin Kondrashov - 4a9a3d8)* - **espefuse**: Clean up limitation for BLOCK9 usage *(Konstantin Kondrashov - d63e3db)* - **espefuse**: Adds support for burning 512-bit keys for C5 *(Konstantin Kondrashov - 468de5c)* ### 🐛 Bug Fixes - **espefuse**: Update CLI to support rich-click 1.9.0 *(Peter Dragun - 2ae5535)* - **espsecure**: Fix printing key digest in signature info *(Radim Karniš - 7e53596)* - **espefuse**: Fixes re-connection issue in check-error via UJS port *(Konstantin Kondrashov - a160468)* - **write_flash**: Make write flash mem independent *(Jaroslav Safka - d19413c)* - **elf2image**: Handle ELF files with zero program header counts *(Tormod Volden - d27ce37)* - **espsecure**: Extract public key version 1 in RAW format *(Peter Dragun - 6cfced8)* - **espsecure**: Allow signing multiple files in one go *(Peter Dragun - 0177d61)* - **elf2image**: Fix --pad-to-size argument parsing *(Peter Dragun - 66a1377)* - **espefuse**: Disable programming and usage of XTS-AES-256 efuse key for ESP32-C5 *(harshal.patil - c85a93d)* - **esp32c5**: Erase during flashing above 16MB *(Jaroslav Burian - d65a24e)* - **espsecure**: Add support for python-pkcs11 9.0+ *(Peter Dragun - 3ea646f)* - Use correct error codes for ROM errors *(Jaroslav Burian - da4346b)* - Handle deprecated options with "=" before value *(Peter Dragun - f05fb62)* - stop exit 0 when being called programmatically *(Fu Hanxi - d8ae230)* ### 📖 Documentation - **set_flash_voltage**: Disable for non-related chips *(Radim Karniš - cd2c98e)* - bump up esp_docs to 2.1 *(Jaroslav Safka - bb8cd9b)* - Add chip type detection explanation *(Jaroslav Safka - 528f605)* ### 🔧 Code Refactoring - set up and apply pyupgrade ruff rules *(copilot-swe-agent[bot] - 206970a)* ## v5.0.2 (2025-07-30) ### 🐛 Bug Fixes - **esp32-c3**: Disable flasher stub when Secure Boot is active *(Radim Karniš - 1f1ea9a)* - **esp32-s3**: Allow stub flasher execution with active Secure Boot *(Radim Karniš - 7ba285b)* - **espefuse**: Handle error in burn-efuse command when no arguments are provided *(Peter Dragun - 0f32306)* - Fix buffering issues with CP2102 converter causing connection failures *(Jaroslav Burian - 5338ea0)* - Fix compatibility with Click 8.2.0+ *(Peter Dragun - 524825e)* - Fix --port-filter argument parsing *(Peter Dragun - b53a16c)* ### 🔧 Code Refactoring - **elf2image**: Use common MMU page size configuration function for ESP32-H4 *(Jaroslav Burian - 977ff44)* ## v5.0.1 (2025-07-15) ### 🐛 Bug Fixes - **elf2image**: validate ELF section types and addresses before processing *(Jaroslav Burian - 97a1546)* - **elf2image**: handle PREINIT_ARRAY section type in ESP32-P4 elf file properly *(Jaroslav Burian - ec84a75)* - **elf2image**: Fix incorrect logger call *(Marek Matej - 637f0e6)* ## v5.0.0 (2025-07-02) ### 🚨 Breaking changes - - The .py suffix is deprecated for the following scripts: - esptool - espefuse - espsecure - esp_rfc2217_server *(Peter Dragun - 635cde1)* - - execute-scripts command is removed *(Peter Dragun - ff72b26)* ### ✨ New Features - **espefuse**: Use the esptool logger, more concise messages *(Radim Karniš - 983338f)* - **espefuse**: Replace execute-scripts with public API *(Peter Dragun - ff72b26)* - **espefuse**: Add public API for espefuse *(Peter Dragun - d7da0f8)* - **espefuse**: Rename all commands to use dashes and add tests for deprecated commands *(Peter Dragun - ade3088)* - **espefuse**: Add support for chaining commands with click parser *(Peter Dragun - 0a2ea69)* - **espefuse**: Refactor CLI and use click for parsing arguments *(Peter Dragun - aa80001)* - **espefuse**: Adds efuse calculation fields for ESP32-C5 *(Konstantin Kondrashov - 9104038)* - **espefuse**: Adds 3-bit field for wafer major version in ESP32-P4 *(Konstantin Kondrashov - c102510)* - **verbosity**: Allow setting silent or verbose output levels *(Radim Karniš - 90e3770)* - **efuse**: Adds efuses for ESP32-C61 ECO3 *(Konstantin Kondrashov - 6146410)* - **espefuse**: Support efuse for ESP32-C5 ECO2 (v1.0) *(Konstantin Kondrashov - 3726726)* - **espsecure**: Use esptool logger, unify output format of messages *(Radim Karniš - 905249c)* - **stub_flasher**: Support for >16MB flash on P4 and >16MB encrypted writes on S3 *(Radim Karniš - 4e6803e)* - **espsecure**: Drop ecdsa module, use cryptography instead *(Radim Karniš - e132f6f)* - **espsecure**: Unify all commands and options to use dash instead of underscore *(Peter Dragun - 36325fd)* - **espsecure**: Use rich click for CLI parsing *(Peter Dragun - 9c7ddc1)* - **targets**: Update chip features lists with more info *(Radim Karniš - 3c776aa)* - **logging**: Add collapsible output stages and ASCII progress bars *(Radim Karniš - f3cf107)* - **trace**: Update --trace with more info and more readable formatting *(Radim Karniš - 0beee77)* - **cli**: Commands and options use dashes instead of underscores for uniformity *(Peter Dragun - 3cecd6d)* - **cmds**: Expand input of all functions to file paths, bytes, or file-like objects *(Radim Karniš - 46a9e31)* - **cmds**: Allow all functions to both return bytes and write to files *(Radim Karniš - 03b84a1)* - **cmds**: Polish the public API, unify arg names, pack some args *(Radim Karniš - 37a13a9)* - **cmds**: Encapsulate logic for running the stub flasher in run_stub *(Radim Karniš - 063d9d5)* - **cli**: Add click-based CLI interface *(Peter Dragun - d40fefa)* - **cmds**: Allow commands to output bytes, as well as write to a file *(Radim Karniš - 0153b79)* - **cmds**: Rework the public API to work as a Python module *(Radim Karniš - ba36933)* - **flash_attach**: Encapsulate logic for flash attaching and configuration *(Radim Karniš - 6e959ef)* - **esp32h4**: update the ESP32H4StubLoader *(Chen Jichang - f7c78f8)* - **espefuse**: Updates esp32h4 efuse table and fixes tests *(Konstantin Kondrashov - 3da8c57)* - **esp32h4**: add ESP32H4 esptool support *(Chen Jichang - bcf5c6e)* - **esp32h21**: Add Microsoft UF2 family ID *(Radim Karniš - cb0d334)* - **errors**: Print errors to STDERR, catch KeyboardInterrupt *(Radim Karniš - 0864e17)* - **write_flash**: Remove the superfluous --verify option *(Radim Karniš - dbf3d1c)* - **logger**: Add a custom logger, allow output redirection *(Radim Karniš - 1ce02db)* - **image_info**: Deprecate the --version 1 output format *(Radim Karniš - 3f625c3)* - Remove .py suffix from scripts *(Peter Dragun - 635cde1)* - detect flash size of Adesto flash chips *(Jaroslav Burian - 0b56f85)* - Add support for k, M suffix for flash size *(Peter Dragun - 6f0d779)* - Rename reset modes to use dash instead of underscore *(Peter Dragun - 851919f)* ### 🐛 Bug Fixes - **logger**: Turn on smart features in more cases *(Jason2866 - 5d5eafb)* - **elf2image**: Multiple fixes from 3rd party frameworks *(Sylvio Alves - cbd4e9b)* - **stub_flasher**: Fix USB-Serial/JTAG mode on C5 ECO2 and C61 ECO3 *(Radim Karniš - 1decf86)* - **write_flash**: Detect more cases of unresponsive flash, fix failing flash_size check *(Radim Karniš - e6bfc3b)* - **stub_flasher**: Fix ESP32-C5 ECO2 flashing *(Radim Karniš - 3a4c15c)* - **espefuse**: Fix output messages for set_flash_voltage *(Peter Dragun - daaedf8)* - **espefuse**: JTAG_SEL_ENABLE has GPIO34 strapping pin for ESP32P4 *(Jan Beran - 78535e4)* - **esp32c5**: fix bootloader address *(Jaroslav Burian - ec12073)* - **autodetection**: Remove the Unsupported detection protocol stage *(Radim Karniš - 05553a4)* - **logging**: Unify output messages, notes, and warning formatting *(Radim Karniš - 07879eb)* - **elf2image**: fix elf2image for ram app when sha256 offset not specified *(Jaroslav Burian - 6f8ff39)* - **esp32h4**: fix h4 chip feature *(Chen Jichang - 955943a)* - **image_info**: Sanitize app and bootloader info of null bytes *(Radim Karniš - 8016455)* - **lint**: Correct type annotations issues reported by mypy *(Radim Karniš - 0bca550)* - **esptool**: Fix efuse base address for esp32h21 *(Konstantin Kondrashov - c3d28ee)* - **elf2image**: support --flash-mmu-page-config for all chips *(Jaroslav Burian - 8be617c)* - **elf2image**: Try to correct MMU page size if not specified *(Jaroslav Burian - f4fabc5)* - **elf2image**: Print correct MMU page size in error message *(Jaroslav Burian - 9da4948)* - **logging**: Avoid crashes when flushing if sys.stdout is not available *(Radim Karniš - 5176b67)* - enable auto-detection of ESP32-S2 in secure download mode *(Jaroslav Burian - c2f5d21)* - enable ESP32-P4 ECO5 chip detection *(Jaroslav Burian - 0b3460f)* - Do not use padding for merged IntelHex files *(Peter Dragun - 08c170b)* - lock upper version of click to <8.2.0 *(Peter Dragun - 5241cba)* - Add timeout to read_flash to avoid infinite loops *(Peter Dragun - f26a7bb)* - Close the data file after reading the data *(Stevan Stevic - 807d02b)* ### 📖 Documentation - **elf2image**: Link an article with Simple Boot explanation *(Radim Karniš - 202dfad)* - **logger**: Fix custom logger example code *(Radim Karniš - 26e86e9)* - **logger**: Fix custom logger example code *(Radim Karniš - eaaa6b3)* - Clarify versions in documentation *(Peter Dragun - 4586e4b)* - Remove .py suffix from tool names *(Peter Dragun - e9f03ae)* - Remove espefuse and espsecure migration guide for esp8266 *(Peter Dragun - b6e08a3)* - Update migration guide for espefuse with click parser *(Peter Dragun - faf3e22)* - Add missing esp32-p4 target to supported targets *(Peter Dragun - 8b5a5d9)* - fix targets dropdown in production *(Peter Dragun - 2643101)* - Update autocomplete docs for click-based CLI *(Peter Dragun - 89cfa52)* - fix minor issues and improve vague statements *(Peter Dragun - 6d04155)* ### 🔧 Code Refactoring - **cli_mode**: Improve CLI mode workflow code *(Radim Karniš - 0671d35)* - **stub_class**: Make into a mixin to avoid code repetition *(Radim Karniš - 83613c8)* ### 🗑️ Removals - **make_image**: Remove the make_image command in favor of other workflows *(Radim Karniš - 955a7c8)* - **beta_targets**: Removed support for beta chip targets *(Radim Karniš - 8f1c206)* - Deprecate Python versions 3.7, 3.8 and 3.9 *(Peter Dragun - 19f1bee)* ## v4.9.0 (2025-06-19) ### ✨ New Features - **espefuse**: Add eFuses for ESP32-C61 ECO3 *(Radim Karniš - 98688ab)* - **espefuse**: Support efuse for ESP32-C5 ECO2 (v1.0) *(Konstantin Kondrashov - ce16054)* - **stub_flasher**: Support for >16MB flash on P4 and >16MB encrypted writes on S3 *(Radim Karniš - 0110514)* - **espefuse**: Updates esp32h4 efuse table and fixes tests *(Konstantin Kondrashov - 777c505)* - **esp32h4**: add ESP32H4 esptool support *(Chen Jichang - edb99bd)* - **esp32h21**: Add Microsoft UF2 family ID *(Radim Karniš - 74d27ae)* - **watchdog_reset**: Add a new watchdog_reset option working even in USB modes *(Radim Karniš - d37c38a)* - **espsecure**: Improves an error message for encrypt_flash_data and decrypt_flash_data *(Konstantin Kondrashov - ef407ed)* - **espefuse**: Clean up efuse code for ESP32H2 *(Konstantin Kondrashov - 4e922fe)* - **espefuse**: Support different efuse table versions for ESP32H2 *(Konstantin Kondrashov - d51ecbe)* - **espefuse**: Adds efuses for esp32h2 eco5 *(Konstantin Kondrashov - 9b74df6)* - **esp32h21**: add ESP32H21 esptool support *(gaoxu - 92ceff2)* - **esp32-p4**: add support for flasher stub in USB OTG mode *(Peter Dragun - 804f2db)* - **esp32-c5**: Add ECO1 magic number *(Radim Karniš - 6cc002c)* - **esp_rfc2217**: Improved the logger message format *(Jakub Kocka - 39a12a4)* - **espefuse**: Adds 3 bit for PSRAM_CAP efuse field *(Konstantin Kondrashov - ab2e0bf)* - **espefuse**: Adds API for getting block and wafer versions *(Konstantin Kondrashov - 111c6c0)* - **espefuse**: Adds ADC calibration data for ESP32-C61 *(Konstantin Kondrashov - 36d9735)* - **espefuse**: Adds ADC calibration data for ESP32-C5 *(Konstantin Kondrashov - a903812)* - **espefuse**: Adds ADC calibration data for ESP32-P4 *(Konstantin Kondrashov - 215e4b8)* - **erase_region**: Enable erasing in ROM bootloader and SDM *(Radim Karniš - e0deeac)* - **hard_reset**: Support custom hard reset sequence configuration *(Radim Karniš - 1b15738)* - print usb mode when output chip info *(Jan Beran - 749d1ad)* - Add new app description segments *(Jaroslav Burian - b23e60f)* - add filtering based on serial number *(Jaroslav Burian - 88319db)* - Add support for Python 3.13 *(Radim Karniš - 6abd05d)* ### 🐛 Bug Fixes - **stub_flasher**: Fix USB-Serial/JTAG mode on C5 ECO2 and C61 ECO3 *(Radim Karniš - 4382f14)* - **write_flash**: Detect more cases of unresponsive flash, fix failing flash_size check *(Radim Karniš - f83d598)* - **stub_flasher**: Fix ESP32-C5 ECO2 flashing *(Radim Karniš - bb237bc)* - **espefuse**: Fix output messages for set_flash_voltage *(Peter Dragun - 759bcc6)* - **espefuse**: JTAG_SEL_ENABLE has GPIO34 strapping pin for ESP32P4 *(Jan Beran - f6d1833)* - **esp32c5**: fix bootloader address *(Jaroslav Burian - 83e0973)* - **elf2image**: fix elf2image for ram app when sha256 offset not specified *(Radim Karniš - 9fd7b7a)* - **esp32h4**: Correct ESP32-H4 chip features *(Radim Karniš - 5520963)* - **esp32h21**: Fix eFuse base address *(Radim Karniš - dc05792)* - **elf2image**: support --flash-mmu-page-config for all chips *(Jaroslav Burian - 54fdc75)* - **elf2image**: Try to correct MMU page size if not specified *(Jaroslav Burian - d9afa9c)* - **elf2image**: Print correct MMU page size in error message *(Jaroslav Burian - 447de60)* - **test**: Expect the correct module name for Python's 3.14 argparse *(Karolina Surma - 98001b7)* - **write_flash**: Skip flash_size checks if we can't read flash size *(Radim Karniš - 12095b2)* - **save_segment**: Adds segment len check the same as bootloader does *(Konstantin Kondrashov - a6bceb7)* - **chip_type_verification**: Enable in SDM, do not rely on magic numbers *(Radim Karniš - 598e07b)* - **esp32-c6**: Disable RTC WDT reset to prevent port disappearing *(Radim Karniš - d47004e)* - **esp_rfc2217**: Fixed keyboard interrupt on Windows and added info for command *(Jakub Kocka - 5569aa5)* - **detect_chip**: Select correct loader before further operations to avoid silent failures *(Jan Beran - 8897ff8)* - **usb_resets**: Fix resetting in USB-OTG and USB-Serial/JTAG modes *(Radim Karniš - 8298cdc)* - Do not use padding for merged IntelHex files *(Peter Dragun - 739669f)* - close port when connect fails *(Jaroslav Burian - d99c972)* - Hide missing app info based on IDF version *(Jaroslav Burian - d2bca1e)* - add delay after WDT reset for better stability *(Peter Dragun - 188c162)* - Not reading app description for some SoCs *(Jaroslav Burian - 3555fe1)* - Fix missing newline in output *(Jan Beran - 26b676b)* ### 📖 Documentation - **esptool**: Fix reset sequences in documentation *(Jan Beran - 92160eb)* - **flash_modes**: Correct QIO GPIO pins for all chips *(Radim Karniš - 23f11f0)* - **espefuse**: Fixed JTAG strapping pin for ESP32-S3 in the help and documentation *(Roland Dobai - de1d1ce)* - **scripting**: Add example of usage as a Python module *(Radim Karniš - d54e59f)* - **esp8266**: change boot select pin to IO0 *(ChromaLock - c06ce1e)* - **read_flash_sfdp**: Fix command formatting *(Radim Karniš - ec309bb)* - **spi_connection**: Explain which flash chips are supported *(Radim Karniš - 6d37e30)* - fix targets dropdown in production *(Peter Dragun - 9201ccd)* - Point directly to the datasheet for given target *(Jan Beran - a32988e)* - Add ESP32-C5 and ESP32-C61 docs *(Radim Karniš - f52c723)* --- ## v4.8.1 (2024-09-25) ### ✨ New Features - **espefuse**: Supports wafer efuse versions for esp32c61 *(Konstantin Kondrashov - 0472846)* - **esptool**: add new command SFDP read *(Xiao Xufeng - 92143ed)* - **esptool**: Add option to retry connection in a loop *(Alfonso Acosta - 04045d6)* - **efuse**: Updates efuse table for esp32c5 *(Konstantin Kondrashov - b3022fa)* - **efuse**: Updates efuse table for esp32p4 *(Konstantin Kondrashov - 669a69f)* - **esp32c61**: Added stub flasher support *(Jakub Kocka - e8b3911)* - **cli**: add autocompletions *(Dmitriy Astapov - 7cc35e4)* - **esptool**: allow picking UART by VID/PID/Name *(Richard Allen - 5dd3dcc)* - **esp32c5**: Add USB-serial/JTAG stub support *(Jaroslav Burian - e170bcc)* - **esp32c5**: Add UART stub support *(Konstantin Kondrashov - b199534)* - **esptool**: Print key_purpose name for get_security_info cmd *(Konstantin Kondrashov - ccd8c72)* - **espefuse**: Adds support extend efuse table by user CSV file *(Konstantin Kondrashov - 6bb2b92)* - **espefuse**: Adds efuse dump formats: separated(default) and united(new) *(Konstantin Kondrashov - fc2856a)* - **espefuse**: Adds incompatible eFuse settings check for S3 *(Konstantin Kondrashov - c244843)* - **reset**: Apply reconnections to the whole reset sequence, not line transitions *(Radim Karniš - d49837e)* - **reset**: Automatically reconnect if port disconnects during reset *(Andrew Leech - 9dc5dfb)* - **esp32-p4**: Add ECO1 magic number *(Radim Karniš - d4d2153)* - **espsecure**: Add support for secure boot v2 using ECDSA-P384 signatures *(harshal.patil - f014cad)* - **write_flash**: retry flashing if chip disconnects *(Peter Dragun - a15089a)* - **espefuse**: Allow filtering efuses based on command line arguments *(Jan Beran - bb52d36)* - **esploader**: Enable context manager for esp instances *(Radim Karniš - d4c8cb3)* - **espefuse**: Added check for correctness of written data *(Konstantin Kondrashov - d2bfaad)* - **espefuse**: Improves help for burn_efuse cmd *(Konstantin Kondrashov - ef8ee8a)* - **esp32s3**: clear boot control register on hard reset *(Peter Dragun - 1c355f9)* - **esp32-p4**: add spi-connection restriction to ROM class *(Peter Dragun - dad0edc)* - **espefuse**: Updates efuses for C5 and C61 *(Konstantin Kondrashov - e34df69)* - **esp32c61**: add c61 basic flash support (no_stub) *(wanlei - ef4d8a7)* - **esp32c5**: skipped the stub check for esp32c5 mp *(laokaiyao - a773e6b)* - **esp32c5**: base support of esp32c5 mp (no stub) *(laokaiyao - e414cef)* - **cmds/write_flash**: Recalculated SHA digest for image binary *(Jakub Kocka - 3b0939c)* - **esptool**: Adds wafer and pkg versions *(Konstantin Kondrashov - 6c5cfd6)* - **espefuse**: Update adc_info commands for all chips *(Konstantin Kondrashov - 31eb15b)* - **espefuse**: Adds new efuses for esp32p4 *(Konstantin Kondrashov - 31477fb)* - **espefuse**: Allow the espefuse.py to work when coding scheme == 3 *(Francisco Blas (klondike) Izquierdo Riera - 1e79f25)* - **err_defs**: Add ROM bootloader flash error definitions *(radim.karnis - 2d8a3ad)* - **esp32p4**: Enable USB-serial/JTAG in flasher stub *(Peter Dragun - 96a5c21)* - **espefuse**: Postpone some efuses to burn them at the very end *(KonstantinKondrashov - bdeec68)* - **espefuse**: check_error --recover chip even if there are num_errors *(KonstantinKondrashov - f72b5ad)* - **espefuse**: Adds new efuses for esp32c6 and esp32h2 *(KonstantinKondrashov - 16e4fae)* - **esp32c5**: add target esp32c5 beta3 *(laokaiyao - d9a6660)* - add UF2 IDs for ESP32-C5 and ESP32-C61 *(Peter Dragun - cf6d94e)* - Added warning when secure boot enabled *(Jakub Kocka - 8d26375)* - print flash voltage in flash_id command *(Peter Dragun - 6393d6b)* - Use ruff instead of flake8 and black both in pre-commit and CI *(Jan Beran - 1d5fcb3)* - add advisory port locking *(Peter Dragun - 8ad6d57)* ### 🐛 Bug Fixes - **esp32c2**: Add esp32c2 eco4 rom magic value *(Jiang Guang Ming - 3434433)* - **packaging**: Correctly exclude the unwanted sub/modules *(Karolina Surma - 908d0b5)* - **esptool**: Fix esp32c61 flash frequency config *(C.S.M - 6edafea)* - **esptool**: Fix incorrect chip version for esp32c5 *(Konstantin Kondrashov - 138660b)* - **write_flash**: Verify if files will fit against the real flash size when possible *(Radim Karniš - 1693449)* - **remote_ports**: Disable reset sequence when a socket is used *(Radim Karniš - 28556fb)* - **bitstring**: Restricted bitstring dependency to fix 32-bit compatibility *(Jakub Kocka - 4f7e223)* - **esp32_d0wdr2_v3**: Print correct chip name *(Radim Karniš - dfd61e2)* - **bin_image**: add check for ELF file segment when saving RAM segments *(Peter Dragun - 6e8632d)* - **docs**: Add a note about entering manual bootloader mode *(Roland Dobai - 4d0c7d9)* - **esp32c5**: Fix MAC reading for esptool *(Konstantin Kondrashov - 2b0ec7a)* - **esp32-c5**: Use a longer reset delay with usb-serial/jtag to stabilize boot-up *(C.S.M - 1059ec7)* - **espefuse**: Use stub class if stub flasher is running *(Radim Karniš - 67d66a0)* - **elf2image**: add ELF flags to merge condition *(Marek Matej - e87cc3e)* - **espefuse**: Fix efuse base addr for esp32c5 MP *(Konstantin Kondrashov - 248dc9a)* - **espefuse**: Fix burn_key for ECDSA_KEY, it can read pem file *(Konstantin Kondrashov - 450db24)* - **secure_download_mode**: Disable secure boot detection and print more info *(Radim Karniš - 1dc3c8b)* - **esptool**: clear boot control register on ESP32-S3 *(Peter Dragun - 0215786)* - **intelhex**: catch unicode decode errors when converting hex to binary *(Peter Dragun - a2bdaa2)* - **merge_bin**: treat files starting with colon as raw files *(Peter Dragun - 2c0a5da)* - **read_flash**: add flash size arg to enable reading past 2MB without stub *(Peter Dragun - f1eb65f)* - **read_flash**: flush transmit buffer less often to inrease throughput *(Peter Dragun - 8ce5ed3)* - **esptool**: Proper alignment for SoCs with offset load *(Marek Matej - 17866a5)* - **esptool**: Remove the shebang from uf2_writer.py *(Karolina Surma - 45fbcdd)* - pass error message to exception in OTG mode *(Peter Dragun - c266fdd)* - Erase non-aligned bytes with --no-stub *(Jaroslav Burian - c984aa9)* - Do not append SHA256 when `--ram-only-header` *(Tiago Medicci Serrano - 5d9d5be)* - ram_only_header: pad flash segment to next boundary *(Sylvio Alves - 4394a65)* - sort segments if ram_only_header is used *(Sylvio Alves - 4c5874a)* - fix type annotation to comply with mypy *(Peter Dragun - 55b338a)* - ROM doesn't attach in-package flash chips *(Jakub Kocka - bc9f2a6)* - close file gracefully in espsecure *(gnought - 2381711)* - Fixed glitches on RTS line when no_reset option on Windows *(Jakub Kocka - 956557b)* - Index image segments from 0 instead of 1 *(Jan Beran - b5939da)* - ignore resetting on unsupported ports *(Peter Dragun - e948993)* ### 📖 Documentation - **troubleshooting**: Add info about debugging in USB-Serial/JTAG and USB-OTG modes *(Radim Karniš - 3a74f62)* - **troubleshooting**: Mention needed permissions to the serial port on Linux *(Radim Karniš - 8e39ef6)* - **troubleshooting**: Mention the ESP Hardware Design Guidelines docs *(Radim Karniš - 74ce286)* - **flashing**: Fixed a typo in /docs/en/esptool/flashing-firmware.rst *(Green - 9f46568)* - **sphinx-lint**: Add previous commit to .git-blame-ignore-revs *(Jan Beran - c750549)* - **sphinx-lint**: Fix issues reported by sphinx-lint before adding it to pre-commit *(Jan Beran - 6282f98)* - **sphinx-lint**: Add sphinx-lint to pre-commit, GH and GL pipelines *(Jan Beran - 1de1a26)* - **esptool**: Reflect change from flake8 and black to ruff *(Jan Beran - 9f1bde4)* - add note about Intel Hex merging limitations *(Peter Dragun - d83dd3b)* - Updated documentation to reflect changes of SHA256 digest recomputation *(Jakub Kocka - 6c28df3)* - add esp32p4 target to docs *(Peter Dragun - 4a6ad55)* - Correct bootloader offsets *(radim.karnis - 79978c0)* - Add instructions on how to update *(radim.karnis - d448851)* ### 🔧 Code Refactoring - **test/esptool**: Updated tests according to SHA recomputation for binary *(Jakub Kocka - 598b703)* - **style**: Comply with black>=24.0.0 *(radim.karnis - 5ad3c48)* - Migrated esp_rfc2217_server into standalone subpackage *(Jakub Kocka - 9b24215)* --- ## v4.7.0 (2023-12-13) ### ✨ New Features - **test_esptool**: Added test for embedded and detected flash size match *(Jakub Kocka - c0ea74a)* - **spi_connection**: Support --spi-connection on all chips *(radim.karnis - 1a38293)* - **espefuse**: Support XTS_AES_256_KEY key_purpose for ESP32P4 *(KonstantinKondrashov - a91eee1)* - **xip_psram**: support xip psram feature on esp32p4 *(Armando - 1b350ce)* - **esp32p4**: Stub flasher support *(radim.karnis - d266645)* - **elf2image**: add ram-only-header argument *(Almir Okato - da28460)* - **rfc2217_server**: Add hard reset sequence *(20162026 - d66de5c)* - **espefuse**: Adds efuse ADC calibration data for ESP32H2 *(KonstantinKondrashov - 2a57d6c)* - **espefuse**: Update the way to complete the operation *(KonstantinKondrashov - c8d688d)* - **loader**: Added hints for some serial port issues when rising port error *(Jakub Kocka - d61da77)* - **esp32c3**: Support ECO6 and ECO7 magic numbers *(radim.karnis - 6943c5d)* - **merge_bin**: add support for uf2 format *(Peter Dragun - 3d899b2)* - **esp32-s3**: Support >16MB quad flash chips *(radim.karnis - 67a91cb)* - **efuse**: Update key purpose table and tests *(KonstantinKondrashov - cb5e850)* - **efuse**: ESP32P4 adds ecdsa_key support *(KonstantinKondrashov - 3654267)* - **espefuse**: Add support for esp32p4 chip *(KonstantinKondrashov - 8273916)* - **esptool**: added target to esp32p4 *(Armando - 654e626)* - **espsecure**: Allow prompting for HSM PIN in read_hsm_config *(Richard Retanubun - ab25fc1)* - **esptool**: Add new packages for ESP32C3 and flash efuses *(KonstantinKondrashov - 8f37762)* - **esptool**: Add tests for get_chip_features *(KonstantinKondrashov - d5bb1ee)* - **esptool**: Add PICO package for ESP32S3 and flash/psram efuses *(KonstantinKondrashov - b70ead2)* - **get_security_info**: Improved the output format and added more details *(Aditya Patwardhan - 9b95de8)* - add support for intel hex format *(Peter Dragun - 7074bed)* - add support for get_security_info on esp32c3 ECO7 *(Peter Dragun - 20565a0)* - Add support for Python 3.12 *(radim.karnis - ef02d52)* ### 🐛 Bug Fixes - **esp32c2**: Added get_flash_cap and get_flash_vendor *(Jakub Kocka - b8dd74d)* - **testloadram**: Windows assertion error *(Jakub Kocka - cd51bbc)* - **esp32c2**: Recommend using higher baud rate if connection fails *(Jakub Kocka - ef0c91f)* - **test_esptool**: Fixed connection issue on Windows *(Jakub Kocka - 4622bb2)* - **esptool**: Rephrase the --ram-only-header command message *(Marek Matej - da4a486)* - **load_ram**: check for overlaps in bss section *(Peter Dragun - 3a82d7a)* - **tests/intelhex**: make sure file is closed on Windows *(Peter Dragun - 900d385)* - **spi_connection**: Unattach previously attached SPI flash *(radim.karnis - afaa7d2)* - **espefuse**: Fix ECDSA_FORCE_USE_HARDWARE_K for ECDSA key (esp32h2) *(KonstantinKondrashov - f607f19)* - **loader**: Could not open serial port message adjusted *(Jakub Kocka - 0d3a077)* - **flasher_stub**: fix usb-serial-jtag enabled non-related intr source *(wuzhenghui - 3f2dc6f)* - **bin_image**: Check only ELF sections when searching for .flash.appdesc *(radim.karnis - ffaf6db)* - **danger-github**: Fir Danger GitHub token permission *(Tomas Sebestik - c0df9b7)* - **autodetection**: Remove the ESP32-S2 ROM class from get_security_info autodetection *(radim.karnis - 3d8c304)* - **elf2image**: fix text/rodata mapping overlap issue on uni-idrom bus chips *(wuzhenghui - c48523e)* - **dangerGH**: Update token permissions - allow Danger to add comments to PR *(Tomas Sebestik - 6b4786a)* - **expand file args**: Correctly print the expanded command *(radim.karnis - 2bea6f4)* - **esp32-c2**: Enable flashing in secure download mode *(radim.karnis - e862e10)* - fixed exit() to be used from right module *(Jakub Kocka - d1610a9)* - Fix redirection of STDOUT *(radim.karnis - 9585c0e)* - assert in esp32 exclusive workaround *(wuzhenghui - 5b69e07)* ### 📖 Documentation - **advanced-topics**: Fixed strapping pin for Automatic Bootloader section *(Jakub Kocka - 590c2c6)* - **serial-protocol**: add images and flowchart *(Peter Dragun - e99c114)* - **boot_mode_selection**: Correct secondary strapping pin boot mode levels *(radim.karnis - 3b38e79)* - **troubleshooting**: Explain issues when flashing with USB-Serial/JTAG or USB-OTG *(radim.karnis - 2a399a0)* - **basic-commands**: added note for PowerShell users for merge_bin command *(Jakub Kocka - dc8a337)* - Add other resources page *(radim.karnis - cc6c4ce)* ### 🔧 Code Refactoring - **stub_flasher**: Cleanup, make adding new targets easier *(radim.karnis - fb7f4db)* --- ## v4.6.2 (2023-06-12) ### 🐛 Bug Fixes - **CH9102F**: Suggest to install new serial drivers if writing to RAM fails *(radim.karnis - f4b5914)* - **compressed upload**: Accept short data blocks with only Adler-32 bytes *(radim.karnis - d984647)* ### 📖 Documentation - **boot-log**: fix list formatting *(Peter Dragun - b137d3d)* - add c2, c6 and h2 as build targets *(Peter Dragun - 590fb55)* - add explanation for flash_id example to avoid confusion *(Peter Dragun - fbe8066)* --- ## v4.6.1 (2023-06-01) ### ✨ New Features - **esptool**: add option to dump whole flash based on detected size *(Peter Dragun - 049baaa)* ### 🐛 Bug Fixes - **ESP32-S3**: Correct RTC WDT registers to fix resets during flashing *(radim.karnis - 6fd91af)* - **ESP32-C6**: Fix get_pkg_version and get\_{major,minor}\_chip_version *(XiNGRZ - 555458c)* - inconsistent usage of dirs separator *(Massimiliano Montagni - f558f22)* - USB-JTAG-Serial PID detection error *(Dean Gardiner - 9a719f4)* - Set flash parameters even with --flash_size keep *(radim.karnis - 0e9c85e)* ### 📖 Documentation - **Boot log**: Add all esp targets to cover boot troubleshooting *(Peter Dragun - 5892496)* --- ## v4.5.1 (2023-02-28) ### ✨ New Features - **stub**: Add ESP32-S3 octal flash support *(Roland Dobai - b746aa7)* - **esp32h2**: Enable USB-JTAG/Serial mode in the stub flasher *(radim.karnis - cc06208)* - **bootloader reset**: Allow custom reset strategy setting with a config file *(radim.karnis - a8586d0)* - **bootloader reset**: Tighter transitions on Unix systems *(radim.karnis - 353cefc)* - **ci**: Publish development releases with custom pipeline *(Roland Dobai - 3a77f1f)* - **esp32c6 stub**: Increase CPU frequency and write/read speeds over USB-JTAG/Serial *(radim.karnis - 180695e)* - **esp32c6 stub**: Enable USB-JTAG/Serial *(radim.karnis - b04cc52)* - **flash_id**: Print the flash type if available for the chip *(Roland Dobai - b25606b)* - **flasher_stub**: Increase CPU frequency and write/read speeds over native USB (USB-OTG) *(radim.karnis - 52278a9)* - **flasher_stub**: Increase CPU frequency and write/read speeds over USB-JTAG/Serial *(radim.karnis - dccf4df)* - **image_info**: Print application information if possible *(radim.karnis - 82bfe98)* - **write_flash**: Prevent flashing incompatible images *(radim.karnis - 395fcb0)* - **image_info**: Image type autodetection *(radim.karnis - 791a20b)* - Allow configuration with a config file *(radim.karnis - 3ad680a)* - Readable error message for serial-related issues *(radim.karnis - 1082852)* - Detect Guru Meditation errors *(radim.karnis - 6fac261)* - Add Macronix flash memory density definitions *(radim.karnis - 3190894)* - Recover from serial errors when flashing *(radim.karnis - 2fb8d45)* - Add stub flasher error messages definitions *(radim.karnis - 66502d5)* ### 🐛 Bug Fixes - **ESP32-S3**: Temporarily disable increasing CPU freq *(radim.karnis - 23a5095)* - **ESP32-S3**: Lower CPU freq to improve flasher stub stability *(radim.karnis - 7b28699)* - **rfc2217_server**: Use new reset sequences *(radim.karnis - 4f13cf6)* - **cmds**: Make clear that flash type is from eFuse and not detection *(Roland Dobai - caeab98)* - **load config file**: Sort unknown config options *(radim.karnis - cc80ecd)* - **esp32c6**: Workaround for bad MSPI frequency in HS mode *(wuzhenghui - 4738ef7)* - **flasher_stub**: Correct boundaries for SPIWrite4B and SPIRead4B *(Roland Dobai - 21e5914)* - **secure download mode**: Reconnect if ROM refuses to respond *(radim.karnis - 869740a)* - **secure download mode**: Fix SDM detection on S2/S3 *(radim.karnis - b67e557)* - **ci**: Merge two "ci" directories and build_tools into one *(Roland Dobai - 2ed1fc1)* - **ci**: The development release job should not run by default *(Roland Dobai - 3f3a2d3)* - **setup**: Use latest reedsolo package which can be installed with Python3.10 and Cython *(Roland Dobai - 5490b0b)* - **write_flash**: Fix `--erase-all` option *(radim.karnis - d0af65f)* - **espefuse**: Close serial port even when espefuse fails *(radim.karnis - 26df171)* - **espefuse**: Fix compatibility with Bitstring>=4 *(Roland Dobai - ee27a64)* - Unknown chip (ID or magic number) error *(radim.karnis - 11e6425)* - Add workaround for breaking changes of bitstring==4 *(Roland Dobai - 09e41df)* - close unused ports while get_default_connected_device *(Fu Hanxi - 76f491e)* ### 📖 Documentation - **tests**: Add test suite description and instructions *(radim.karnis - 943b997)* - **serial port**: Update basic-options with more linux instructions *(Robin Gower - b37496f)* - espsecure remote signing using a HSM broken link fix *(harshal.patil - 0095a26)* - Update serial protocol description *(radim.karnis - f4ed949)* - Describe --chip option, fix small typos *(radim.karnis - 2eff1be)* ### 🔧 Code Refactoring - **connection attempt**: Decouple reset sequence settings *(radim.karnis - cee66a2)* - **elf2image**: Simplify bootloader image selection *(radim.karnis - 2e95f66)* - Comply with black 23.1 style *(radim.karnis - ea61f8f)* - Optimize unnecessary chip interrogations *(radim.karnis - f3437a3)* ---
Commitizen Espressif plugin
Espressif Systems CO LTD. (2025)