Releases: espressif/esptool
Version 2.7
Features
- New option
write_flash --flash-size keepwill keep whatever flash size is set in the bootloader header, matching the behaviour of--flash-mode keepand--flash-speed keep. The default is still--flash-size detectbut may be changed tokeepin a future major update, to be consistent with the other two options. write_flashno longer updates the flash header if the file being written to the bootloader offset isn't a valid image file for the chip. This is useful for flashing pre-encrypted data to ESP32s, where the image file contains ciphertext.- esptool now always prints the detected crystal frequency (26MHz or 40MHz) as part of general chip information, and will warn if the detected frequency deviates by an unexpected amount.
- Passing arguments to
main()from Python is now documented in the README (#408)
Bug Fixes/Changes
elf2image --sha256-offsetwill now only write the ELF SHA-256 to this offset if the existing data is all zeroes. Otherwise a warning is printed.- Improved the error message if esptool searches all serial ports and finds nothing. (#401)
ESP32 Only
Features
- New
write_flash --encryptoption that works with the new Development Mode flash encryption that will be the default flash encryption development workflow in ESP-IDF V4.0. espefuse.py summary --format jsonwill print a JSON dictionary of efuse summary data (#436)espefuse.pyburn commands now set the efuse timing before burning, in line with recent ESP32 TRM update.espsecure.pykey operations now support--keylenargument, allowing 192-bit keys for ESP32s with 3/4 Coding Scheme set.espsecure.pyencryption and decryption speed substantially improved. (#416)
Bug Fixes/Changes
FLASH_CRYPT_CNTefuse is now defined as 7 bits wide, as eight bit is not used by flash encryption hardware.
ESP8266 Only
Bug Fixes/Changes
- Flasher stub is now built with gcc 5.2.0 toolchain.
Thanks to @grandcat, @darkfader, @tim-nordell-nimbelink, @sbertrand-witekio, @marcelstoer, @eykamp, @cclauss for contributing to this release.
Version 2.6
Features
- New
write_flash --erase-all ...option to erase all flash before writing (single command). (#344) - Support patching the SHA256 digest of the ELF file into the binary (available in ESP-IDF via app description APIs)
- Make calling esptool module functions and
esptool.main()more Python-friendly (all functions clean up open files correctly,main(...)can take an optional argument with a command line formatted as a list.) (#341)
Bug Fixes/Changes
- Fix crash due to unimplemented write timeout on RFC2217 ports
- elf2image no longer adds empty ELF sections (zero length) to the .bin file
- elf2image fails with a proper error if an ELF file contains more than 16 loadable sections
- Improve error message if list_ports is missing from pyserial (#350)
- Fix some write_flash timeouts writing large but highly compressible payloads
ESP8266 Only
- Fix bug where flashing with stub would fail if ESP8266 was in deep sleep immediately beforehand. (#351)
ESP32 Only
Features
- Support for reading/writing efuses when 3/4 Coding Scheme is set details.
- espefuse.py supports displaying and setting a custom MAC address in BLK3 of efuse
- espsecure.py can now verify signatures with raw binary key file as well as PEM formatted key file (#357)
Bug Fixes/Changes
- Workaround a mapping bug in the ESP-IDF bootloader (if IROM/DROM segment ended less than 0x20 bytes after a page boundary, older ESP-IDF bootloaders would not map the final page correctly).
- Reformat espefuse.py summary output (includes: read-only efuses now display value ? not 0, byte order of keys shown for BLK1,BLK2 are now shown in software order not the reversed byte order used by hardware cryptographical modules.)
- espsecure.py: Fix Python 3 compatibility issues (includes #369 #382)
Special thanks to @Callahan93 and @borro0 for contributing to this release.
Version 2.5.1
Bug fixes:
- Errors during chip detection are now formatted correctly.
- OSError is handled correctly while scanning for a port (#322)
- Update link to flashrom repo for SPI flash chip IDs (#338)
- read_flash command: Error out immediately if an invalid length packet is received (common symptom of bad serial link) (#342)
ESP32 Only:
- espefuse.py: Disable burning key efuses when 3/4 Coding Scheme is set (support for burning keys with 3/4 Coding Scheme will be added in a future update).
Thanks to @orangecms for contributing to this release.
Version 2.5.0
New features:
- Set a write timeout in pyserial (prevents hanging in sync process if port is unavailable).
- (ESP32) New option
elf2image --secure-padto pad the output binary so once signed it will align to an flash cache page boundary (64KB). Prevents unsigned data from being mapped into the instruction space via the flash cache.
Bug fixes:
- Fix exception if no
--portis specified but no serial ports are found in the system. - (ESP32) espsecure: Fix bug where
digest_secure_bootloadercould produce an incorrect digest.
Thanks to @heyinling & @ekiro for contributing to this release.
Version 2.4.1
Bug fixes:
- --port argument was not correctly handled in v2.4.0
- Corrected pyserial dependency to require pyserial v3.0 or newer
Thanks to @nopdotcom and @ildar for contributing to this release.
Version 2.4.0
Version 2.4.0:
ESP8266 & ESP32 changes
- If no serial port is specified, try all serial ports until an Espressif
device responds. - Print device MAC on every command, after connecting.
- New option
--before no_reset_no_syncfor use when immediately reusing the
serial port with an already-running loader. - Fix spurious load_ram error when executed code immediately resets the UART
baud rate.. - Produce an error if load_ram is going to clobber bootloader stub memory (can use
--no-stub to work around this). - Display a helpful error if the incompatible 'serial' module was installed
instead of 'pyserial'. - Explicitly close the serial port at end of main() function (allows calling
esptool.main() from another Python program for basic scripting.) - Workaround Windows usbser.sys (USB CDC-ACM device) driver bug setting DTR & RTS
- Flasher stub build updates to work with recent ESP-IDF & ESP8266 SDK headers
- Flasher stub now sends correct length field in protocol responses (esptool.py
was ignoring this field, but some other tools were not).
ESP8266 changes
- Move the loader stub to the very end of IRAM (useful when using load_ram command).
elf2image --version=2is now compatible with recent ESP8266 SDK bootloader
and produces the same binary output as ESP8266 SDK gen_app.py.- Remove unsupported flash size 4MB-c2
ESP32 changes
- Print chip frequency rating values in Features list, for chips where these are
set. - Working load_ram command.
- espefuse.py: Support setting the baud rate.
- New --override-vddsdio option allows setting the VDDSDIO regulator to 1.8V,
1.9V or "OFF" when connecting (to override the default value read from efuse).
To avoid hardware damage, forcing VDDSDIO to 3.3V is not supported.
Thanks to @devanlai, @andrewwakeling, @Callahan93, @tim-nordell-nimbelink, @cefn
and @nkolban for contributing to this release.
Version 2.3.1
Latest stable release available from PyPi:
https://pypi.python.org/pypi/esptool/
This release:
https://pypi.python.org/pypi/esptool/2.3.1
New since v2.3
- Fixes a bug where Features line was mis-formatted for ESP8266 and triggered an exception on ESP8285.
Version 2.3
Latest stable release available from PyPi:
https://pypi.python.org/pypi/esptool/
This release:
https://pypi.python.org/pypi/esptool/2.3
New since v2.2.1
- 'Hard resetting' status message now mentions the RTS pin
- README additions
- Fix regression if esptool is used as a module and ESPLoader() is passed a Python 2 unicode string.
ESP32 only
- When connecting, esptool now prints a summary of chip features based on efuse contents.
- espefuse.py support for displaying ADC calibration data via VRef stored in efuse and BLK3_PART_RESERVE if set.
Version 2.2.1
Latest stable release available from PyPi:
https://pypi.python.org/pypi/esptool/
This release:
https://pypi.python.org/pypi/esptool/2.2.1
New since v2.2
- Fix an issue seen on macOS with high baud rates (>230400). pyserial was sending configuration to the serial port (no settings were actually changing) while a response may have been coming from the device, and this caused read data to be lost at or below the OS layer.
- Fix use of esptool with remote network serial ports (see here in README).
- write_flash now warns instead of crashing if a file is empty (zero length).
Version 2.2
Latest stable release available from PyPi:
https://pypi.python.org/pypi/esptool/
This release:
https://pypi.python.org/pypi/esptool/2.2
New since v2.1
- New
esptool.py --traceoption provides dump of all serial traffic for easier low-level debugging - Timeouts refactored for better consistency, fix some timeouts flashing large binaries (particularly when flashing with a high effective compression ratio)
- PEP8 style cleanup, removal of deprecated language features (thanks @Cabalist!)
- Skew between device USB/serial reference clock timing and ESP crystal is now accounted for when switching baud rate. This may help achieve higher baudrates on some development boards.
ESP8266-Specific Changes
- Full support & identification of ESP8285
- Support for stub loader when using crystals other than 26MHz (tested with 40MHz)
ESP32-Specific Changes
- Support for ESP32-PICO-D4 System In Package
- espefuse.py now verifies the factory MAC address CRC is valid
- Flasher stub build now supports compiling against ESP-IDF v2.1 codebase (and will support v3.0)
- Fix error message if
--spi-connectionarguments were mis-typed (thanks @Cabalist!) - Correct espsecure.py usage message (thanks @milan-kupcevic!)
Documentation Changes
- Structure cleanup, notes about power issues, new links to the wiki