mirror of
https://github.com/esp-rs/espflash.git
synced 2026-03-13 09:36:41 +00:00
20 KiB
20 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- eFuse write support (#962)
- esp32p4rc1 support for esp32p4 chips with revision < 3.0 (#922)
- Support for binaries with INIT_ARRAY sections, which is needed for esp32p4 support. (#991)
- Add sha256 calculation to match esptool generated binaries (#991)
- Support flashing in secure download mode (#990, #1002)
Changed
Fixed
- Fix Windows connection issue by aligning reset sequence with
esptoolincluding RTS/DTR workaround (#999) - Fix board-info misreporting the crystal frequency of ESP32-C5 (#1005)
Removed
4.3.0 - 2025-12-15
Added
read_efuse_leshould be preferred overread_efuse(#969)- A new CLI argument
rom-elfwas added which will be used for backtraces (#963) - A new monitor CLI argument
--all-addresseswas added, by default well known misleading addresses printed by the first stage bootloader are suppressed (#979)
Changed
read_efuseis deprecated (#969)- Updated bootloaders with
release/v5.5ones from IDF (#976) - The CLI argument
save-image,ignore-app-descriptoris now consistent with other args (#974) - Update ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2, ESP32-S3 stub (#983)
Fixed
- Fix eFuse block address calculations. (#971)
- Fix Secure Download Mode detection on ESP32-P4 (#972)
- Several fixes in
read_efuse(#969) - Fix a problem in detecting the app-descriptor for a project if
strip = trueis used (#975)
4.2.0 - 2025-10-13
Added
- Add chip detection based on security info, where supported (#953)
- Support for decoding
esp-backtrace's RISC-V stack-dump output (#955)
Changed
- Move
SecurityInfoto theconnectionmodule from theflashermodule (#953)
Fixed
- Fix a crash with Connection module when connecting to a loopback serial port (#954)
4.1.0 - 2025-09-18
Added
- Add
--no-addressesflag tomonitorsubcommand (#942) - Add new ESP32-C5 magic values (#940)
Changed
- Rename
--check-app-descriptorto--ignore-app-descriptor(#833)
Fixed
- Fix a crash in monitor when espflash is connected via USB Serial/JTAG, and the user is typing into the monitor but the device is not reading serial input. (#943, #944, #945)
- Fix ESP32-S2 flash size detection issues (#950)
- Images are now automatically padded to 4 bytes before writing by the library (previously this was done in the CLI) (#951)
4.0.1 - 2025-07-07
Changed
espflashnow allows wider version ranges on its dependencies(#924)
Fixed
save-imagenow checks if the ELF contains the app descriptor (#920)
4.0.0 - 2025-07-01
Added
- Add
non-interactiveflag toflashsubcommand (#737) - Add
no-resetflag tomonitorsubcommands (#737) - Add an environment variable to set monitoring baudrate (
MONITOR_BAUD) (#737) - Add list-ports command to list available serial ports. (#761)
- [cargo-espflash]: Add
write-binsubcommand (#789) - Add
--monitoroption towrite-bin. (#783) - Add
watchdog-resetstrategy to--aftersubcommand (#779) - Add
ROMversion ofread-flashcommand (#812) espflashcan detect the log format automatically from ESP-HAL metadata. Requiresesp-println0.14 (#809)- Add
--output-formatoption to monitor (#818) - Added chip detection based on security info, where supported (#814)
espflashcan detect the chip from ESP-HAL metadata to prevent flashing firmware built for a different device. Requiresesp-hal1.0.0-beta.0 (#816)espflashno longer allows flashing a too-big partition table (#830)- Allow specifying a partition label for
write-bin, add--partition-table. (#828) --mmu-page-sizeparameter forflashandsave-image(#835)- Run some arguments checks for monitoring flags. (#842)
- Add support for the ESP32-C5 (#863)
--afteroptions now work withespflash board-info,espflash read-flashandespflash checksum-md5(#867)- Add support for serial port configuration files. (#777, #883)
- Add a
check-app-descriptorbool option toImageArgsand add the flag toflashcommand (#872) Connection::into_serialto get the underlying port from the connection (#882)- All methods on the now removed
Target&ReadEFuse,UsbOtgandRtcWdtResettraits have been implemented directly on (#891) - Update checks can now be skipped by setting the
ESPFLASH_SKIP_UPDATE_CHECKenvironment variable (#900) flash_write_sizeandmax_ram_block_sizefunctions no longer take a connection parameter and return a Result type (#903)DefaultProgressCallbackwhich implementsProgressCallbacksbut all methods are no-ops (#904)ProgressCallbacksnow has averifyingmethod to notify when post-flash checksum checking has begun (#908)- Implement
From<Connection> for Portand bothFrom<Flasher> for ConnectionandPortconversions (#915)
Changed
- Split the baudrate for connecting and monitoring in
flashsubcommand (#737) - Normalized arguments of the CLI commands (#759)
board-infonow printsSecurity information. (#758)- The
command,elfanderrormodules are no longer public (#772) write-binnow works for files whose lengths are not divisible by 4 (#780, #788)get_usb_pidis nowusb_pidand no longer needlessly returns aResult(#795)CodeSegmentandRomSegmenthave been merged into a singleSegmentstruct (#796)IdfBootloaderFormathas had its constructor's parameters reduced/simplified (#798)- Update flash size when creating the app partition (#797)
--non-interactivemay now react to key events (user input, Ctrl-C, Ctrl-R) if possible (#819)- Removed
get_prefix from any functions which previously had it (#824) - Take elf data as bytes rather than
ElfFilestruct when creating an image format (#825) - Updated to Rust 2024 edition (#843)
- Complete rework of reading eFuse field values (#847, #903)
- Updated bootloaders with
release/v5.4ones from IDF (#857) - Refactor image formatting to allow supporting more image formats in a backward compatible way (#877)
- Avoid having ESP-IDF format assumptions in the codebase (#877)
Flashernow takes theConnectionin new, instead of constructing the connection insideFlasher::connect(#882, #885)detect_chiphas moved to theConnectionstruct (#882)Flasher::into_serialhas been replaced byFlasher::into_connection(#882)- Automatically migrate
espflash@3configuration files to the new format (#883) - Update dependencies to their latest versions (#893)
Chip::crystal_freqhas been renamed toChip::xtal_frequency(#891)Chip::chip_revisionhas been renamed toChip::revision(also applies tominorandmajor) (#891)- Any reference to
esp_idforEspIdfhas been cut to justidf(#891) - Renamed
targetsmodule totarget(#891) - Test data is now excluded from the crates.io release (#897)
- The command module, and
Commandrelated structs now exist in a top level module, instead of theconnectionmodule (#901) - API's that take
Option<&mut dyn ProgressCallbacks>now take&mut dyn ProgressCallbacksinstead (#904) ProgressCallbacks::finish()now has askipped: boolparameter to indicate if a segment was skipped (#904)- CLI usage now shows when a segment has been skipped due to already-matching checksum and when a segment is being verified (#908)
Fixed
- Update the app image SHA in the correct location for padded images (#715)
- Fix
-sargument collision (#731) addressandsizeinerase-regionhave to be multiples of 4096 (#771)- Fixed typos in error variant names (#782)
- Fix
read-flashwhich didn't work with some lengths (#804) - espflash can now flash an ESP32-S2 in download mode over USB (#813)
- Fixed a case where espflash transformed the firmware ELF in a way that made it unbootable (#831)
- The app descriptor is now correctly placed in the front of the binary (#835)
- espflash now extracts the MMU page size from the app descriptor (#835)
ResetBeforeOperation&ResetAfterOperationare now public, to allow the creation of aConnection(#895)Flashernow respects its internalverifyandskipflags for all methods. (#901)- Progress is now reported on skipped segments and verification (#904)
- Moved the
non-interactiveflag toConnectArgsso we also avoid asking the user to select a port (#906)
Removed
- Removed the
libudevfeature (#742) - Removed the
flasher::parse_partition_tablefunction (#798) - The
FirmwareImagetrait has been removed (#802) - The
elfmodule has been removed, and its contents moved to theimage_formatmodule (#802) - The
Targettrait, theReadEFusetrait, andChip::into_target(#891) - The
UsbOtgandRtcWdtResettraits have been removed, along withChip::into_rtc_wdt_reset&Chip::into_usb_otg(#891)
3.3.0 - 2025-01-13
Added
- Allow
partition_table_offsetto be specified in the config file. (#699) - Support external log-processors (#705)
- Make the
libudevdependency optional with a new - enabled by default - feature:libudev(#709)
Fixed
- Only filter the list of available serial ports if a port has not been specified via CLI option or configuration file (#693)
- Address Clippy lints (#710)
3.2.0
Added
- Add new chip detect magic value, ability to read chip revision for ESP32-P4 (#686)
- Add skip update check option (#689)
Fixed
- Fixed
partition-table-offsetargument to accept offsets in hexadecimal (#682) - espflash defmt log didn't display timestamp, according to defmt doc. (#680)
- Fixed pattern matching to detect download mode over multiple lines (#685)
3.1.1 - 2024-08-15
Added
- Add
hold-in-resetandresetsubcommands (#644) - [cargo-espflash]: Add
--no-default-featuresflag to mirror cargo features behavior (#647) - Update
cargoandbytemuckdependencies adapting code (#666)
Fixed
- Downgrade crossterm and update time crates (#659)
- Monitor now only sends key presses on key down events
Changed
3.1.0 - 2024-05-24
Added
- Support loading flash size, frequency, and mode from the config file (#627)
Fixed
- Fixed help text for
sizeparameter ofread-flashsubcommand - Fixed port detection on
muslwhen detection returns paths starting with/dev/ - [cargo-espflash]: Always resolve package_id from metadata when finding bootloader and partition table (#632)
- Fixed behavior of the
--target-app-partitionflag (#634)
Changed
- Update ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-S2, ESP32-S3 stub (#638)
3.0.0 - 2024-03-13
Fixed
- Fix timeout while changing the baudrate for some ESP32-S3 targets (#607)
Changed
- Update ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-S2, ESP32-S3 stub (#607, #610)
3.0.0-rc.2 - 2024-03-04
Added
- Add
--list-all-portsconnection argument to avoid serial port filtering (#590) - Allow config file to live in parent folder (#595)
Fixed
- Change the
hard_resetsequence to fix Windows issues (#594) - Improve resolving non-code addresses (#603)
Changed
- Non-linux-musl: Only list the available USB Ports by default (#590)
FlashData::newnow returnscrate::Error(#591)- Moved
reset_after_flashmethod toresetmodule (#594) - The
commandmodule now requiresserialport. (#599)
3.0.0-rc.1 - 2024-02-16
Added
- Add reset strategies (#487)
- Read
esp-printlngenerateddefmtmessages (#466) - Add
--target-app-partitionargument to flash command (#461) - Add
--confirm-portargument to flash command (#455) - Add
--chip argumentfor flash and write-bin commands (#514) - Add
--partition-table-offsetargument for specifying the partition table offset (#516) - Add
SerializeandDeserializetoFlashFrequency,FlashModeandFlashSize(#528) - Add
checksum-md5command (#536) - Add verify and skipping of unchanged flash regions - add
--no-verifyand--no-skip(#538) - Add
--min-chip-revargument to specify minimum chip revision (#525) - Add
serialportfeature (#535) - Add support for 26 MHz bootloader for ESP32 and ESP32-C2 (#553)
- Add CI check to verify that CHANGELOG is updated (#560)
- Add
--beforeand--afterreset arguments (#561) - Add
read-flashcommand (#558) - Add HIL testing (#596)
Fixed
- Fix printing panic backtraces when using
esp-printlnanddefmt(#496) - Fix
defmtparsing when data is read in parts (#503) - Use partition table instead of hard-coded values for the location of partitions (#516)
- Fix a missed
flushcall that may be causing communication errors (#521) - Fix "SHA-256 comparison failed: [...] attempting to boot anyway..." (#567)
- Windows: Update RST/DTR order to avoid issues (#562)
- Tolerate non-utf8 data in boot detection (#573)
- Fix flash/monitoring of 26MHz targets (#584)
Changed
- Create
FlashData,FlashDataBuilderandFlashSettingsstructs to reduce number of input arguments in some functions (#512, #566) espflashwill now exit with an error ifdefmtis selected but not usable (#524)- Unify configuration methods (#551)
- Improved symbol resolving (#581)
- Update ESP32-C2 stub (#584)
- MSRV bumped to
1.74.0(#586)
Removed
- Remove support for Cargo metadata configuration (#551)
- Remove support for the ESP8266 (#576)
- Remove the direct boot image format (#577)
- Remove support for Raspberry Pi's internal UART peripherals (#585)
2.1.0 - 2023-10-03
Added
- Added erase-flash, erase-region, and erase-parts subcommands (#462)
Fixed
- Fixed printing UTF-8 sequences that were read in multiple parts. (#468)
Changed
- Update dependencies to their latest versions (#482)
2.0.1 - 2023-07-13
Added
- Add help text for all subcommands (#441)
Fixed
- Update
cargodependency to 0.72 (#445)
2.0.0
Fixed
- Explicitly set
bin_nameattribute forcargo-espflash(#432)
2.0.0-rc.4 - 2023-06-08
Added
- Add
ESPFLASH_PORTenvironment variable (#366) - Added ESP32-H2 support (#371)
- Generate Shell completions (#388)
- Make the default flashing frequency target specific (#389)
- Add note about permissions on Linux (#391)
- Add a diagnostic to tell the user about the partition table format (#397)
- Add
board-infocommand support in Secure Download Mode (#838)
Fixed
- Fix
espflash::write_bin(#353) - Fix ESP32-C3 direct boot (#358)
- Disable watchdog timer before build (#363)
- Restore the cursor when exiting from serial port selection via Ctrl-C (#372)
- Fix chip revision check during flashing for the ESP8266 (#373)
- Fix config file parsing (#382)
- Limit default partition size (#398)
- Fix Windows installation (#399)
- Reword elf too big error (#400)
- Fix handling of serial ports on BSD systems (#415)
- Override the flash size in Flasher if provided via command-line argument (#417)
Changed
- Simplify and improve errors (#342)
- Make
Interfaceconstructor public (#354) - Update stubs from esptool v4.5 (#359)
- Update documentation (#368)
- Update
tomldependency and fix errors, feature gatectrlcdependency (#378) - If exactly one port matches, use it (#374)
- Image header improvements and bug fixes (#375)
- Update to the latest version of addr2line and address breaking changes (#412)
- Do not require the
--partition-tableargument when erasing partitions (#413) - Downgrade
crosstermto0.25.0(#418) - Update the supported targets for ESP32-C6/H2 (#424)
- Update flasher stubs and bootloaders (#426)
2.0.0-rc.3 - 2023-01-12
Added
- Add support for flashing the ESP32-C6 (#317)
- Add an optional callback trait which can be implemented and provided to most flashing functions (#333)
Fixed
- Various fixes and improvements relating to crystal frequency and serial monitor for the ESP32-C2 (#314, #315, #330)
Changed
- Reorder ports so that known ports appear first in CLI (#324)
- Make the flasher return a struct of device information instead of printing directly (#328)
- CLI improvements and dependency updates (#334)
- Use the flasher stub by default (#337)
- Mark public enums as
#[non_exhaustive]for semver compatibility (#338) - If a bootloader and/or partition table other than the defaults have been provided, indicate such (#339)
2.0.0-rc.2 - 2022-12-07
Added
- Add option to supply the
ELFimage path in the monitor subcommand (#292) - Add support for using custom cargo metadata when in a workspace (#300)
Fixed
- Fix typo in
ImageFormatKind'sFromStrimplementation (#308)
Changed
- Report the image and partition size in the error (#293)
- Allow
SerialPortType::PciPortduring port detection (#295) - Update dependencies to their latest versions (#299)
- Clean up unused code, optimize comparison in
find_serial_port(#302) - Make command module public (#303)
- Display the newer
v{major}.{minor}chip revision format (#307)
2.0.0-rc.1 - 2022-11-07
Added
- Add support for erasing any partition (#273)
Fixed
- Various bugfixes, plenty of cleanup and simplification
Changed
- Redesign of the command-line interface (#239)
- Extract the partition table handling code into a separate package,
esp-idf-part(#243) - A bunch of refactoring (#246, #247, #249)
- Updated to
clap@4.0.x(#251) - Replace the
espmonitordependency with our own home-grown monitor (#254) - Use logging instead of
println!()(#256) - Use newest bootloaders from ESP-IDF (#278)
- Improved documentation and testing