Files
esptool/CHANGELOG.md
2025-09-15 19:42:16 +02:00

35 KiB

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.


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)