From e00d5558d2493128d2888e3e3b6b9e2edd355ab5 Mon Sep 17 00:00:00 2001
From: Laurent Lalanne <f5soh@free.fr>
Date: Mon, 19 Aug 2019 13:06:11 +0200
Subject: [PATCH 1/4] Reset method changes for esptool.py

---
 boards.txt          | 114 +++++++++++++++++++++-----------------------
 platform.txt        |   2 +-
 tools/boards.txt.py |  82 ++++++++++++++++++-------------
 3 files changed, 105 insertions(+), 93 deletions(-)

diff --git a/boards.txt b/boards.txt
index ff7f8e6630..99acce5b5c 100644
--- a/boards.txt
+++ b/boards.txt
@@ -61,14 +61,12 @@ generic.menu.ssl.all=All SSL ciphers (most compatible)
 generic.menu.ssl.all.build.sslflags=
 generic.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 generic.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-generic.menu.ResetMethod.ck=ck
-generic.menu.ResetMethod.ck.upload.resetmethod=ck
-generic.menu.ResetMethod.nodemcu=nodemcu
-generic.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
-generic.menu.ResetMethod.none=none
-generic.menu.ResetMethod.none.upload.resetmethod=none
-generic.menu.ResetMethod.dtrset=dtrset
-generic.menu.ResetMethod.dtrset.upload.resetmethod=dtrset
+generic.menu.ResetMethod.dtr=dtr
+generic.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
+generic.menu.ResetMethod.nodtr=no dtr
+generic.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
+generic.menu.ResetMethod.nodtr_nosync=no dtr, no_sync
+generic.menu.ResetMethod.nodtr_nosync.upload.resetmethod=--before no_reset_no_sync --after soft_reset
 generic.menu.CrystalFreq.26=26 MHz
 generic.menu.CrystalFreq.40=40 MHz
 generic.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266
@@ -528,14 +526,12 @@ esp8285.menu.ssl.all=All SSL ciphers (most compatible)
 esp8285.menu.ssl.all.build.sslflags=
 esp8285.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 esp8285.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-esp8285.menu.ResetMethod.ck=ck
-esp8285.menu.ResetMethod.ck.upload.resetmethod=ck
-esp8285.menu.ResetMethod.nodemcu=nodemcu
-esp8285.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
-esp8285.menu.ResetMethod.none=none
-esp8285.menu.ResetMethod.none.upload.resetmethod=none
-esp8285.menu.ResetMethod.dtrset=dtrset
-esp8285.menu.ResetMethod.dtrset.upload.resetmethod=dtrset
+esp8285.menu.ResetMethod.dtr=dtr
+esp8285.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
+esp8285.menu.ResetMethod.nodtr=no dtr
+esp8285.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
+esp8285.menu.ResetMethod.nodtr_nosync=no dtr, no_sync
+esp8285.menu.ResetMethod.nodtr_nosync.upload.resetmethod=--before no_reset_no_sync --after soft_reset
 esp8285.menu.CrystalFreq.26=26 MHz
 esp8285.menu.CrystalFreq.40=40 MHz
 esp8285.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266
@@ -772,9 +768,9 @@ espduino.name=ESPDuino (ESP-13 Module)
 espduino.build.board=ESP8266_ESP13
 espduino.build.variant=ESPDuino
 espduino.menu.ResetMethod.v1=ESPduino-V1
-espduino.menu.ResetMethod.v1.upload.resetmethod=ck
+espduino.menu.ResetMethod.v1.upload.resetmethod=--before no_reset --after soft_reset
 espduino.menu.ResetMethod.v2=ESPduino-V2
-espduino.menu.ResetMethod.v2.upload.resetmethod=nodemcu
+espduino.menu.ResetMethod.v2.upload.resetmethod=--before default_reset --after hard_reset
 espduino.menu.UploadTool.espota=OTA
 espduino.menu.UploadTool.espota.upload.tool=espota
 espduino.menu.UploadTool.esptool=Serial
@@ -1006,7 +1002,7 @@ huzzah.menu.ssl.all=All SSL ciphers (most compatible)
 huzzah.menu.ssl.all.build.sslflags=
 huzzah.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 huzzah.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-huzzah.upload.resetmethod=nodemcu
+huzzah.upload.resetmethod=--before default_reset --after hard_reset
 huzzah.build.flash_mode=qio
 huzzah.build.flash_flags=-DFLASHMODE_QIO
 huzzah.build.flash_freq=40
@@ -1199,7 +1195,7 @@ inventone.menu.ssl.all=All SSL ciphers (most compatible)
 inventone.menu.ssl.all.build.sslflags=
 inventone.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 inventone.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-inventone.upload.resetmethod=nodemcu
+inventone.upload.resetmethod=--before default_reset --after hard_reset
 inventone.build.flash_mode=dio
 inventone.build.flash_flags=-DFLASHMODE_DIO
 inventone.build.flash_freq=40
@@ -1392,7 +1388,7 @@ cw01.menu.ssl.all=All SSL ciphers (most compatible)
 cw01.menu.ssl.all.build.sslflags=
 cw01.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 cw01.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-cw01.upload.resetmethod=nodemcu
+cw01.upload.resetmethod=--before default_reset --after hard_reset
 cw01.menu.CrystalFreq.26=26 MHz
 cw01.menu.CrystalFreq.40=40 MHz
 cw01.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266
@@ -1628,10 +1624,10 @@ espresso_lite_v1.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld
 espresso_lite_v1.menu.eesz.4M.build.spiffs_pagesize=256
 espresso_lite_v1.menu.eesz.4M.upload.maximum_size=1044464
 espresso_lite_v1.menu.eesz.4M.build.rfcal_addr=0x3FC000
-espresso_lite_v1.menu.ResetMethod.ck=ck
-espresso_lite_v1.menu.ResetMethod.ck.upload.resetmethod=ck
-espresso_lite_v1.menu.ResetMethod.nodemcu=nodemcu
-espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
+espresso_lite_v1.menu.ResetMethod.dtr=dtr
+espresso_lite_v1.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
+espresso_lite_v1.menu.ResetMethod.nodtr=no dtr
+espresso_lite_v1.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
 espresso_lite_v1.menu.ip.lm2f=v2 Lower Memory
 espresso_lite_v1.menu.ip.lm2f.build.lwip_include=lwip2/include
 espresso_lite_v1.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
@@ -1824,10 +1820,10 @@ espresso_lite_v2.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld
 espresso_lite_v2.menu.eesz.4M.build.spiffs_pagesize=256
 espresso_lite_v2.menu.eesz.4M.upload.maximum_size=1044464
 espresso_lite_v2.menu.eesz.4M.build.rfcal_addr=0x3FC000
-espresso_lite_v2.menu.ResetMethod.ck=ck
-espresso_lite_v2.menu.ResetMethod.ck.upload.resetmethod=ck
-espresso_lite_v2.menu.ResetMethod.nodemcu=nodemcu
-espresso_lite_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
+espresso_lite_v2.menu.ResetMethod.dtr=dtr
+espresso_lite_v2.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
+espresso_lite_v2.menu.ResetMethod.nodtr=no dtr
+espresso_lite_v2.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
 espresso_lite_v2.menu.ip.lm2f=v2 Lower Memory
 espresso_lite_v2.menu.ip.lm2f.build.lwip_include=lwip2/include
 espresso_lite_v2.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
@@ -2020,10 +2016,10 @@ phoenix_v1.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld
 phoenix_v1.menu.eesz.4M.build.spiffs_pagesize=256
 phoenix_v1.menu.eesz.4M.upload.maximum_size=1044464
 phoenix_v1.menu.eesz.4M.build.rfcal_addr=0x3FC000
-phoenix_v1.menu.ResetMethod.ck=ck
-phoenix_v1.menu.ResetMethod.ck.upload.resetmethod=ck
-phoenix_v1.menu.ResetMethod.nodemcu=nodemcu
-phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
+phoenix_v1.menu.ResetMethod.dtr=dtr
+phoenix_v1.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
+phoenix_v1.menu.ResetMethod.nodtr=no dtr
+phoenix_v1.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
 phoenix_v1.menu.ip.lm2f=v2 Lower Memory
 phoenix_v1.menu.ip.lm2f.build.lwip_include=lwip2/include
 phoenix_v1.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
@@ -2216,10 +2212,10 @@ phoenix_v2.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld
 phoenix_v2.menu.eesz.4M.build.spiffs_pagesize=256
 phoenix_v2.menu.eesz.4M.upload.maximum_size=1044464
 phoenix_v2.menu.eesz.4M.build.rfcal_addr=0x3FC000
-phoenix_v2.menu.ResetMethod.ck=ck
-phoenix_v2.menu.ResetMethod.ck.upload.resetmethod=ck
-phoenix_v2.menu.ResetMethod.nodemcu=nodemcu
-phoenix_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
+phoenix_v2.menu.ResetMethod.dtr=dtr
+phoenix_v2.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
+phoenix_v2.menu.ResetMethod.nodtr=no dtr
+phoenix_v2.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
 phoenix_v2.menu.ip.lm2f=v2 Lower Memory
 phoenix_v2.menu.ip.lm2f.build.lwip_include=lwip2/include
 phoenix_v2.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
@@ -2372,7 +2368,7 @@ nodemcu.menu.ssl.all=All SSL ciphers (most compatible)
 nodemcu.menu.ssl.all.build.sslflags=
 nodemcu.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 nodemcu.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-nodemcu.upload.resetmethod=nodemcu
+nodemcu.upload.resetmethod=--before default_reset --after hard_reset
 nodemcu.build.flash_mode=qio
 nodemcu.build.flash_flags=-DFLASHMODE_QIO
 nodemcu.build.flash_freq=40
@@ -2565,7 +2561,7 @@ nodemcuv2.menu.ssl.all=All SSL ciphers (most compatible)
 nodemcuv2.menu.ssl.all.build.sslflags=
 nodemcuv2.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 nodemcuv2.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-nodemcuv2.upload.resetmethod=nodemcu
+nodemcuv2.upload.resetmethod=--before default_reset --after hard_reset
 nodemcuv2.build.flash_mode=dio
 nodemcuv2.build.flash_flags=-DFLASHMODE_DIO
 nodemcuv2.build.flash_freq=40
@@ -2758,7 +2754,7 @@ modwifi.menu.ssl.all=All SSL ciphers (most compatible)
 modwifi.menu.ssl.all.build.sslflags=
 modwifi.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 modwifi.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-modwifi.upload.resetmethod=ck
+modwifi.upload.resetmethod=--before no_reset --after soft_reset
 modwifi.build.flash_mode=qio
 modwifi.build.flash_flags=-DFLASHMODE_QIO
 modwifi.build.flash_freq=40
@@ -2971,7 +2967,7 @@ thing.menu.ssl.all=All SSL ciphers (most compatible)
 thing.menu.ssl.all.build.sslflags=
 thing.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 thing.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-thing.upload.resetmethod=ck
+thing.upload.resetmethod=--before no_reset --after soft_reset
 thing.build.flash_mode=qio
 thing.build.flash_flags=-DFLASHMODE_QIO
 thing.build.flash_freq=40
@@ -3164,7 +3160,7 @@ thingdev.menu.ssl.all=All SSL ciphers (most compatible)
 thingdev.menu.ssl.all.build.sslflags=
 thingdev.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 thingdev.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-thingdev.upload.resetmethod=nodemcu
+thingdev.upload.resetmethod=--before default_reset --after hard_reset
 thingdev.build.flash_mode=dio
 thingdev.build.flash_flags=-DFLASHMODE_DIO
 thingdev.build.flash_freq=40
@@ -3357,7 +3353,7 @@ esp210.menu.ssl.all=All SSL ciphers (most compatible)
 esp210.menu.ssl.all.build.sslflags=
 esp210.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 esp210.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-esp210.upload.resetmethod=ck
+esp210.upload.resetmethod=--before no_reset --after soft_reset
 esp210.build.flash_mode=qio
 esp210.build.flash_flags=-DFLASHMODE_QIO
 esp210.build.flash_freq=40
@@ -3550,7 +3546,7 @@ d1_mini.menu.ssl.all=All SSL ciphers (most compatible)
 d1_mini.menu.ssl.all.build.sslflags=
 d1_mini.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 d1_mini.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-d1_mini.upload.resetmethod=nodemcu
+d1_mini.upload.resetmethod=--before default_reset --after hard_reset
 d1_mini.build.flash_mode=dio
 d1_mini.build.flash_flags=-DFLASHMODE_DIO
 d1_mini.build.flash_freq=40
@@ -3743,7 +3739,7 @@ d1_mini_pro.menu.ssl.all=All SSL ciphers (most compatible)
 d1_mini_pro.menu.ssl.all.build.sslflags=
 d1_mini_pro.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 d1_mini_pro.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-d1_mini_pro.upload.resetmethod=nodemcu
+d1_mini_pro.upload.resetmethod=--before default_reset --after hard_reset
 d1_mini_pro.build.flash_mode=dio
 d1_mini_pro.build.flash_flags=-DFLASHMODE_DIO
 d1_mini_pro.build.flash_freq=40
@@ -3919,7 +3915,7 @@ d1_mini_lite.menu.ssl.all=All SSL ciphers (most compatible)
 d1_mini_lite.menu.ssl.all.build.sslflags=
 d1_mini_lite.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 d1_mini_lite.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-d1_mini_lite.upload.resetmethod=nodemcu
+d1_mini_lite.upload.resetmethod=--before default_reset --after hard_reset
 d1_mini_lite.build.flash_mode=dout
 d1_mini_lite.build.flash_flags=-DFLASHMODE_DOUT
 d1_mini_lite.build.flash_freq=40
@@ -4152,7 +4148,7 @@ d1.menu.ssl.all=All SSL ciphers (most compatible)
 d1.menu.ssl.all.build.sslflags=
 d1.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 d1.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-d1.upload.resetmethod=nodemcu
+d1.upload.resetmethod=--before default_reset --after hard_reset
 d1.build.flash_mode=dio
 d1.build.flash_flags=-DFLASHMODE_DIO
 d1.build.flash_freq=40
@@ -4345,10 +4341,10 @@ espino.menu.ssl.all=All SSL ciphers (most compatible)
 espino.menu.ssl.all.build.sslflags=
 espino.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 espino.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-espino.menu.ResetMethod.ck=ck
-espino.menu.ResetMethod.ck.upload.resetmethod=ck
-espino.menu.ResetMethod.nodemcu=nodemcu
-espino.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu
+espino.menu.ResetMethod.dtr=dtr
+espino.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
+espino.menu.ResetMethod.nodtr=no dtr
+espino.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
 espino.build.flash_mode=qio
 espino.build.flash_flags=-DFLASHMODE_QIO
 espino.build.flash_freq=40
@@ -4541,7 +4537,7 @@ espinotee.menu.ssl.all=All SSL ciphers (most compatible)
 espinotee.menu.ssl.all.build.sslflags=
 espinotee.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 espinotee.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-espinotee.upload.resetmethod=nodemcu
+espinotee.upload.resetmethod=--before default_reset --after hard_reset
 espinotee.build.flash_mode=qio
 espinotee.build.flash_flags=-DFLASHMODE_QIO
 espinotee.build.flash_freq=40
@@ -4751,7 +4747,7 @@ wifinfo.menu.ssl.all=All SSL ciphers (most compatible)
 wifinfo.menu.ssl.all.build.sslflags=
 wifinfo.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 wifinfo.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-wifinfo.upload.resetmethod=nodemcu
+wifinfo.upload.resetmethod=--before default_reset --after hard_reset
 wifinfo.build.flash_mode=qio
 wifinfo.build.flash_flags=-DFLASHMODE_QIO
 wifinfo.menu.FlashFreq.40=40MHz
@@ -4999,7 +4995,7 @@ arduino-esp8266.menu.ssl.all=All SSL ciphers (most compatible)
 arduino-esp8266.menu.ssl.all.build.sslflags=
 arduino-esp8266.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 arduino-esp8266.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-arduino-esp8266.upload.resetmethod=ck
+arduino-esp8266.upload.resetmethod=--before no_reset --after soft_reset
 arduino-esp8266.build.flash_mode=qio
 arduino-esp8266.build.flash_flags=-DFLASHMODE_QIO
 arduino-esp8266.build.flash_freq=40
@@ -5193,7 +5189,7 @@ gen4iod.menu.ssl.all=All SSL ciphers (most compatible)
 gen4iod.menu.ssl.all.build.sslflags=
 gen4iod.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 gen4iod.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-gen4iod.upload.resetmethod=nodemcu
+gen4iod.upload.resetmethod=--before default_reset --after hard_reset
 gen4iod.build.flash_mode=dio
 gen4iod.build.flash_flags=-DFLASHMODE_DIO
 gen4iod.build.flash_freq=80
@@ -5580,7 +5576,7 @@ wifiduino.menu.ssl.all=All SSL ciphers (most compatible)
 wifiduino.menu.ssl.all.build.sslflags=
 wifiduino.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 wifiduino.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-wifiduino.upload.resetmethod=nodemcu
+wifiduino.upload.resetmethod=--before default_reset --after hard_reset
 wifiduino.build.flash_mode=dio
 wifiduino.build.flash_flags=-DFLASHMODE_DIO
 wifiduino.build.flash_freq=40
@@ -5773,7 +5769,7 @@ wifi_slot.menu.ssl.all=All SSL ciphers (most compatible)
 wifi_slot.menu.ssl.all.build.sslflags=
 wifi_slot.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 wifi_slot.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-wifi_slot.upload.resetmethod=nodemcu
+wifi_slot.upload.resetmethod=--before default_reset --after hard_reset
 wifi_slot.menu.FlashFreq.40=40MHz
 wifi_slot.menu.FlashFreq.40.build.flash_freq=40
 wifi_slot.menu.FlashFreq.80=80MHz
@@ -6076,7 +6072,7 @@ wiolink.menu.ssl.all=All SSL ciphers (most compatible)
 wiolink.menu.ssl.all.build.sslflags=
 wiolink.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 wiolink.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-wiolink.upload.resetmethod=nodemcu
+wiolink.upload.resetmethod=--before default_reset --after hard_reset
 wiolink.build.flash_mode=qio
 wiolink.build.flash_flags=-DFLASHMODE_QIO
 wiolink.build.flash_freq=40
@@ -6269,7 +6265,7 @@ espectro.menu.ssl.all=All SSL ciphers (most compatible)
 espectro.menu.ssl.all.build.sslflags=
 espectro.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 espectro.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-espectro.upload.resetmethod=nodemcu
+espectro.upload.resetmethod=--before default_reset --after hard_reset
 espectro.build.flash_mode=dio
 espectro.build.flash_flags=-DFLASHMODE_DIO
 espectro.build.flash_freq=40
diff --git a/platform.txt b/platform.txt
index e11d4c3fe2..cd1e7776b0 100644
--- a/platform.txt
+++ b/platform.txt
@@ -140,7 +140,7 @@ tools.esptool.upload.params.quiet=
 # First, potentially perform an erase or nothing
 # Next, do the binary upload
 # Combined in one rule because Arduino doesn't suport upload.1.pattern/upload.3.pattern
-tools.esptool.upload.pattern="{cmd}" "{runtime.platform.path}/tools/upload.py" --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" {upload.erase_cmd} --end --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" write_flash 0x0 "{build.path}/{build.project_name}.bin" --end
+tools.esptool.upload.pattern="{cmd}" "{runtime.platform.path}/tools/upload.py" --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" {upload.erase_cmd} --end --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" {upload.resetmethod} "{upload.verbose}" write_flash 0x0 "{build.path}/{build.project_name}.bin" --end
 
 tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin"
 
diff --git a/tools/boards.txt.py b/tools/boards.txt.py
index 3d8c947b29..5161b124ad 100755
--- a/tools/boards.txt.py
+++ b/tools/boards.txt.py
@@ -296,9 +296,9 @@
             ( '.build.board', 'ESP8266_ESP13' ),
             ( '.build.variant', 'ESPDuino' ),
             ( '.menu.ResetMethod.v2', 'ESPduino-V2' ),
-            ( '.menu.ResetMethod.v2.upload.resetmethod', 'nodemcu' ),
+            ( '.menu.ResetMethod.v2.upload.resetmethod', '--before default_reset --after hard_reset' ),
             ( '.menu.ResetMethod.v1', 'ESPduino-V1' ),
-            ( '.menu.ResetMethod.v1.upload.resetmethod', 'ck' ),
+            ( '.menu.ResetMethod.v1.upload.resetmethod', '--before no_reset --after soft_reset' ),
             ( '.menu.UploadTool.esptool', 'Serial' ),
             ( '.menu.UploadTool.esptool.upload.tool', 'esptool' ),
             ( '.menu.UploadTool.esptool.upload.verbose', '--trace' ),
@@ -319,7 +319,7 @@
             '.build.variant': 'adafruit',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -336,7 +336,7 @@
             '.build.variant': 'inventone',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -353,7 +353,7 @@
             '.build.variant': 'xinabox',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'crystalfreq_menu',
             'flashmode_dio',
             'flashfreq_40',
@@ -427,7 +427,7 @@
             '.build.variant': 'nodemcu',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -461,7 +461,7 @@
             '.build.variant': 'nodemcu',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -486,7 +486,7 @@
             '.build.variant': 'modwifi',
             },
         'macro': [
-            'resetmethod_ck',
+            'resetmethod_cktmp',
             'flashmode_qio',
             'flashfreq_40',
             '2M',
@@ -511,7 +511,7 @@
             '.build.variant': 'thing',
             },
         'macro': [
-            'resetmethod_ck',
+            'resetmethod_cktmp',
             'flashmode_qio',
             'flashfreq_40',
             '512K',
@@ -525,7 +525,7 @@
             '.build.variant': 'thing',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dio',
             'flashfreq_40',
             '512K',
@@ -538,7 +538,7 @@
             '.build.board': 'ESP8266_ESP210',
             },
         'macro': [
-            'resetmethod_ck',
+            'resetmethod_cktmp',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -553,7 +553,7 @@
             '.build.variant': 'd1_mini',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -568,7 +568,7 @@
             '.build.variant': 'd1_mini',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dio',
             'flashfreq_40',
             '16M',
@@ -583,7 +583,7 @@
             '.build.variant': 'd1_mini',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dout',
             'flashfreq_40',
             '1M',
@@ -621,7 +621,7 @@
             '.build.variant': 'd1',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -655,7 +655,7 @@
             '.build.variant': 'espinotee',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -696,7 +696,7 @@
             ( '.menu.ESPModule.ESP12.upload.maximum_size', '1044464' ),
         ]),
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_qio',
             'flashfreq_menu',
             '1M',
@@ -724,7 +724,7 @@
             ( '.menu.BoardModel.starottodeved.build.extra_flags', '-DF_CRYSTAL=40000000 -DESP8266' ),
         ]),
         'macro': [
-            'resetmethod_ck',
+            'resetmethod_cktmp',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -739,7 +739,7 @@
             '.build.variant': 'generic',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dio',
             'flashfreq_80',
             '512K',
@@ -783,7 +783,7 @@
             '.build.variant': 'wifiduino',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -798,7 +798,7 @@
             '.build.variant': 'wifi_slot',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashfreq_menu',
             'flashmode_menu',
             '1M', '2M',
@@ -812,7 +812,7 @@
             '.build.variant': 'wiolink',
             },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -831,7 +831,7 @@
             '.build.variant': 'espectro',
         },
         'macro': [
-            'resetmethod_nodemcu',
+            'resetmethod_dtr',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -918,20 +918,18 @@
     ####################### menu.resetmethod
 
     'resetmethod_menu': collections.OrderedDict([
-        ( '.menu.ResetMethod.ck', 'ck' ),
-        ( '.menu.ResetMethod.ck.upload.resetmethod', 'ck' ),
-        ( '.menu.ResetMethod.nodemcu', 'nodemcu' ),
-        ( '.menu.ResetMethod.nodemcu.upload.resetmethod', 'nodemcu' ),
+        ( '.menu.ResetMethod.dtr', 'dtr' ),
+        ( '.menu.ResetMethod.dtr.upload.resetmethod', '--before default_reset --after hard_reset' ),
+        ( '.menu.ResetMethod.nodtr', 'no dtr' ),
+        ( '.menu.ResetMethod.nodtr.upload.resetmethod', '--before no_reset --after soft_reset' ),
         ]),
 
     'resetmethod_menu_extra': collections.OrderedDict([
-        ( '.menu.ResetMethod.none', 'none' ),
-        ( '.menu.ResetMethod.none.upload.resetmethod', 'none' ),
-        ( '.menu.ResetMethod.dtrset', 'dtrset' ),
-        ( '.menu.ResetMethod.dtrset.upload.resetmethod', 'dtrset' ),
+        ( '.menu.ResetMethod.nodtr_nosync', 'no dtr, no_sync' ),
+        ( '.menu.ResetMethod.nodtr_nosync.upload.resetmethod', '--before no_reset_no_sync --after soft_reset' ),
         ]),
 
-    ####################### upload.resetmethod
+    ####################### upload.resetmethod (unused, old esptool-ck)
 
     'resetmethod_ck': collections.OrderedDict([
         ( '.upload.resetmethod', 'ck' ),
@@ -948,7 +946,25 @@
     'resetmethod_dtrset': collections.OrderedDict([
         ( '.upload.resetmethod', 'dtrset' ),
         ]),
-    
+
+    ####################### upload.resetmethod (new esptool.py)
+
+    'resetmethod_dtr': collections.OrderedDict([
+        ( '.upload.resetmethod', '--before default_reset --after hard_reset' ),
+        ]),
+
+    'resetmethod_nodtr': collections.OrderedDict([
+        ( '.upload.resetmethod', '--before no_reset --after soft_reset' ),
+        ]),
+
+    'resetmethod_nodtr_nosync': collections.OrderedDict([
+        ( '.upload.resetmethod', '--before no_reset_no_sync --after soft_reset' ),
+        ]),
+
+    'resetmethod_cktmp': collections.OrderedDict([
+        ( '.upload.resetmethod', '--before no_reset --after soft_reset' ),
+        ]),
+   
     ####################### menu.FlashMode
 
     'flashmode_menu': collections.OrderedDict([

From 1b133a852cca95280dac20f84b0383141e570b23 Mon Sep 17 00:00:00 2001
From: Laurent Lalanne <f5soh@free.fr>
Date: Thu, 12 Sep 2019 20:25:48 +0200
Subject: [PATCH 2/4] Keep previous resetmethod names and translate to
 esptool.py options

---
 boards.txt          | 58 +++++++++++++++++------------------
 tools/boards.txt.py | 74 ++++++++++++++++++---------------------------
 2 files changed, 59 insertions(+), 73 deletions(-)

diff --git a/boards.txt b/boards.txt
index 99acce5b5c..78a08bde50 100644
--- a/boards.txt
+++ b/boards.txt
@@ -61,10 +61,10 @@ generic.menu.ssl.all=All SSL ciphers (most compatible)
 generic.menu.ssl.all.build.sslflags=
 generic.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 generic.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-generic.menu.ResetMethod.dtr=dtr
-generic.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
-generic.menu.ResetMethod.nodtr=no dtr
-generic.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
+generic.menu.ResetMethod.nodemcu=dtr (aka nodemcu)
+generic.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset
+generic.menu.ResetMethod.ck=no dtr (aka ck)
+generic.menu.ResetMethod.ck.upload.resetmethod=--before no_reset --after soft_reset
 generic.menu.ResetMethod.nodtr_nosync=no dtr, no_sync
 generic.menu.ResetMethod.nodtr_nosync.upload.resetmethod=--before no_reset_no_sync --after soft_reset
 generic.menu.CrystalFreq.26=26 MHz
@@ -526,10 +526,10 @@ esp8285.menu.ssl.all=All SSL ciphers (most compatible)
 esp8285.menu.ssl.all.build.sslflags=
 esp8285.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 esp8285.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-esp8285.menu.ResetMethod.dtr=dtr
-esp8285.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
-esp8285.menu.ResetMethod.nodtr=no dtr
-esp8285.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
+esp8285.menu.ResetMethod.nodemcu=dtr (aka nodemcu)
+esp8285.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset
+esp8285.menu.ResetMethod.ck=no dtr (aka ck)
+esp8285.menu.ResetMethod.ck.upload.resetmethod=--before no_reset --after soft_reset
 esp8285.menu.ResetMethod.nodtr_nosync=no dtr, no_sync
 esp8285.menu.ResetMethod.nodtr_nosync.upload.resetmethod=--before no_reset_no_sync --after soft_reset
 esp8285.menu.CrystalFreq.26=26 MHz
@@ -1624,10 +1624,10 @@ espresso_lite_v1.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld
 espresso_lite_v1.menu.eesz.4M.build.spiffs_pagesize=256
 espresso_lite_v1.menu.eesz.4M.upload.maximum_size=1044464
 espresso_lite_v1.menu.eesz.4M.build.rfcal_addr=0x3FC000
-espresso_lite_v1.menu.ResetMethod.dtr=dtr
-espresso_lite_v1.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
-espresso_lite_v1.menu.ResetMethod.nodtr=no dtr
-espresso_lite_v1.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
+espresso_lite_v1.menu.ResetMethod.nodemcu=dtr (aka nodemcu)
+espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset
+espresso_lite_v1.menu.ResetMethod.ck=no dtr (aka ck)
+espresso_lite_v1.menu.ResetMethod.ck.upload.resetmethod=--before no_reset --after soft_reset
 espresso_lite_v1.menu.ip.lm2f=v2 Lower Memory
 espresso_lite_v1.menu.ip.lm2f.build.lwip_include=lwip2/include
 espresso_lite_v1.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
@@ -1820,10 +1820,10 @@ espresso_lite_v2.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld
 espresso_lite_v2.menu.eesz.4M.build.spiffs_pagesize=256
 espresso_lite_v2.menu.eesz.4M.upload.maximum_size=1044464
 espresso_lite_v2.menu.eesz.4M.build.rfcal_addr=0x3FC000
-espresso_lite_v2.menu.ResetMethod.dtr=dtr
-espresso_lite_v2.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
-espresso_lite_v2.menu.ResetMethod.nodtr=no dtr
-espresso_lite_v2.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
+espresso_lite_v2.menu.ResetMethod.nodemcu=dtr (aka nodemcu)
+espresso_lite_v2.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset
+espresso_lite_v2.menu.ResetMethod.ck=no dtr (aka ck)
+espresso_lite_v2.menu.ResetMethod.ck.upload.resetmethod=--before no_reset --after soft_reset
 espresso_lite_v2.menu.ip.lm2f=v2 Lower Memory
 espresso_lite_v2.menu.ip.lm2f.build.lwip_include=lwip2/include
 espresso_lite_v2.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
@@ -2016,10 +2016,10 @@ phoenix_v1.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld
 phoenix_v1.menu.eesz.4M.build.spiffs_pagesize=256
 phoenix_v1.menu.eesz.4M.upload.maximum_size=1044464
 phoenix_v1.menu.eesz.4M.build.rfcal_addr=0x3FC000
-phoenix_v1.menu.ResetMethod.dtr=dtr
-phoenix_v1.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
-phoenix_v1.menu.ResetMethod.nodtr=no dtr
-phoenix_v1.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
+phoenix_v1.menu.ResetMethod.nodemcu=dtr (aka nodemcu)
+phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset
+phoenix_v1.menu.ResetMethod.ck=no dtr (aka ck)
+phoenix_v1.menu.ResetMethod.ck.upload.resetmethod=--before no_reset --after soft_reset
 phoenix_v1.menu.ip.lm2f=v2 Lower Memory
 phoenix_v1.menu.ip.lm2f.build.lwip_include=lwip2/include
 phoenix_v1.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
@@ -2212,10 +2212,10 @@ phoenix_v2.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld
 phoenix_v2.menu.eesz.4M.build.spiffs_pagesize=256
 phoenix_v2.menu.eesz.4M.upload.maximum_size=1044464
 phoenix_v2.menu.eesz.4M.build.rfcal_addr=0x3FC000
-phoenix_v2.menu.ResetMethod.dtr=dtr
-phoenix_v2.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
-phoenix_v2.menu.ResetMethod.nodtr=no dtr
-phoenix_v2.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
+phoenix_v2.menu.ResetMethod.nodemcu=dtr (aka nodemcu)
+phoenix_v2.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset
+phoenix_v2.menu.ResetMethod.ck=no dtr (aka ck)
+phoenix_v2.menu.ResetMethod.ck.upload.resetmethod=--before no_reset --after soft_reset
 phoenix_v2.menu.ip.lm2f=v2 Lower Memory
 phoenix_v2.menu.ip.lm2f.build.lwip_include=lwip2/include
 phoenix_v2.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat
@@ -4341,10 +4341,10 @@ espino.menu.ssl.all=All SSL ciphers (most compatible)
 espino.menu.ssl.all.build.sslflags=
 espino.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 espino.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-espino.menu.ResetMethod.dtr=dtr
-espino.menu.ResetMethod.dtr.upload.resetmethod=--before default_reset --after hard_reset
-espino.menu.ResetMethod.nodtr=no dtr
-espino.menu.ResetMethod.nodtr.upload.resetmethod=--before no_reset --after soft_reset
+espino.menu.ResetMethod.nodemcu=dtr (aka nodemcu)
+espino.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset
+espino.menu.ResetMethod.ck=no dtr (aka ck)
+espino.menu.ResetMethod.ck.upload.resetmethod=--before no_reset --after soft_reset
 espino.build.flash_mode=qio
 espino.build.flash_flags=-DFLASHMODE_QIO
 espino.build.flash_freq=40
@@ -5383,7 +5383,7 @@ oak.menu.ssl.all=All SSL ciphers (most compatible)
 oak.menu.ssl.all.build.sslflags=
 oak.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 oak.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-oak.upload.resetmethod=none
+oak.upload.resetmethod=--before no_reset --after soft_reset
 oak.build.flash_mode=dio
 oak.build.flash_flags=-DFLASHMODE_DIO
 oak.build.flash_freq=40
diff --git a/tools/boards.txt.py b/tools/boards.txt.py
index 5161b124ad..9d83a876df 100755
--- a/tools/boards.txt.py
+++ b/tools/boards.txt.py
@@ -319,7 +319,7 @@
             '.build.variant': 'adafruit',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -336,7 +336,7 @@
             '.build.variant': 'inventone',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -353,7 +353,7 @@
             '.build.variant': 'xinabox',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'crystalfreq_menu',
             'flashmode_dio',
             'flashfreq_40',
@@ -427,7 +427,7 @@
             '.build.variant': 'nodemcu',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -461,7 +461,7 @@
             '.build.variant': 'nodemcu',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -486,7 +486,7 @@
             '.build.variant': 'modwifi',
             },
         'macro': [
-            'resetmethod_cktmp',
+            'resetmethod_ck',
             'flashmode_qio',
             'flashfreq_40',
             '2M',
@@ -511,7 +511,7 @@
             '.build.variant': 'thing',
             },
         'macro': [
-            'resetmethod_cktmp',
+            'resetmethod_ck',
             'flashmode_qio',
             'flashfreq_40',
             '512K',
@@ -525,7 +525,7 @@
             '.build.variant': 'thing',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dio',
             'flashfreq_40',
             '512K',
@@ -538,7 +538,7 @@
             '.build.board': 'ESP8266_ESP210',
             },
         'macro': [
-            'resetmethod_cktmp',
+            'resetmethod_ck',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -553,7 +553,7 @@
             '.build.variant': 'd1_mini',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -568,7 +568,7 @@
             '.build.variant': 'd1_mini',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dio',
             'flashfreq_40',
             '16M',
@@ -583,7 +583,7 @@
             '.build.variant': 'd1_mini',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dout',
             'flashfreq_40',
             '1M',
@@ -621,7 +621,7 @@
             '.build.variant': 'd1',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -655,7 +655,7 @@
             '.build.variant': 'espinotee',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -696,7 +696,7 @@
             ( '.menu.ESPModule.ESP12.upload.maximum_size', '1044464' ),
         ]),
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_qio',
             'flashfreq_menu',
             '1M',
@@ -724,7 +724,7 @@
             ( '.menu.BoardModel.starottodeved.build.extra_flags', '-DF_CRYSTAL=40000000 -DESP8266' ),
         ]),
         'macro': [
-            'resetmethod_cktmp',
+            'resetmethod_ck',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -739,7 +739,7 @@
             '.build.variant': 'generic',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dio',
             'flashfreq_80',
             '512K',
@@ -783,7 +783,7 @@
             '.build.variant': 'wifiduino',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -798,7 +798,7 @@
             '.build.variant': 'wifi_slot',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashfreq_menu',
             'flashmode_menu',
             '1M', '2M',
@@ -812,7 +812,7 @@
             '.build.variant': 'wiolink',
             },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_qio',
             'flashfreq_40',
             '4M',
@@ -831,7 +831,7 @@
             '.build.variant': 'espectro',
         },
         'macro': [
-            'resetmethod_dtr',
+            'resetmethod_nodemcu',
             'flashmode_dio',
             'flashfreq_40',
             '4M',
@@ -918,10 +918,10 @@
     ####################### menu.resetmethod
 
     'resetmethod_menu': collections.OrderedDict([
-        ( '.menu.ResetMethod.dtr', 'dtr' ),
-        ( '.menu.ResetMethod.dtr.upload.resetmethod', '--before default_reset --after hard_reset' ),
-        ( '.menu.ResetMethod.nodtr', 'no dtr' ),
-        ( '.menu.ResetMethod.nodtr.upload.resetmethod', '--before no_reset --after soft_reset' ),
+        ( '.menu.ResetMethod.nodemcu', 'dtr (aka nodemcu)' ),
+        ( '.menu.ResetMethod.nodemcu.upload.resetmethod', '--before default_reset --after hard_reset' ),
+        ( '.menu.ResetMethod.ck', 'no dtr (aka ck)' ),
+        ( '.menu.ResetMethod.ck.upload.resetmethod', '--before no_reset --after soft_reset' ),
         ]),
 
     'resetmethod_menu_extra': collections.OrderedDict([
@@ -929,42 +929,28 @@
         ( '.menu.ResetMethod.nodtr_nosync.upload.resetmethod', '--before no_reset_no_sync --after soft_reset' ),
         ]),
 
-    ####################### upload.resetmethod (unused, old esptool-ck)
+    ####################### upload.resetmethod (new esptool.py options)
 
     'resetmethod_ck': collections.OrderedDict([
-        ( '.upload.resetmethod', 'ck' ),
+        ( '.upload.resetmethod', '--before no_reset --after soft_reset' ),
         ]),
 
     'resetmethod_nodemcu': collections.OrderedDict([
-        ( '.upload.resetmethod', 'nodemcu' ),
+        ( '.upload.resetmethod', '--before default_reset --after hard_reset' ),
         ]),
     
     'resetmethod_none': collections.OrderedDict([
-        ( '.upload.resetmethod', 'none' ),
+        ( '.upload.resetmethod', '--before no_reset --after soft_reset' ),
         ]),
 
     'resetmethod_dtrset': collections.OrderedDict([
-        ( '.upload.resetmethod', 'dtrset' ),
-        ]),
-
-    ####################### upload.resetmethod (new esptool.py)
-
-    'resetmethod_dtr': collections.OrderedDict([
         ( '.upload.resetmethod', '--before default_reset --after hard_reset' ),
         ]),
 
-    'resetmethod_nodtr': collections.OrderedDict([
-        ( '.upload.resetmethod', '--before no_reset --after soft_reset' ),
-        ]),
-
     'resetmethod_nodtr_nosync': collections.OrderedDict([
         ( '.upload.resetmethod', '--before no_reset_no_sync --after soft_reset' ),
         ]),
-
-    'resetmethod_cktmp': collections.OrderedDict([
-        ( '.upload.resetmethod', '--before no_reset --after soft_reset' ),
-        ]),
-   
+  
     ####################### menu.FlashMode
 
     'flashmode_menu': collections.OrderedDict([

From fb313353ef40791217f49e3ae26cb12abae0f8dc Mon Sep 17 00:00:00 2001
From: Laurent Lalanne <f5soh@free.fr>
Date: Mon, 19 Aug 2019 13:08:51 +0200
Subject: [PATCH 3/4] Workaround - to be reverted in case esptool do
 erase/write_flash in one command

---
 boards.txt          | 120 ++++++++++++++++++++++----------------------
 tools/boards.txt.py |   4 +-
 2 files changed, 62 insertions(+), 62 deletions(-)

diff --git a/boards.txt b/boards.txt
index 78a08bde50..8e893118b0 100644
--- a/boards.txt
+++ b/boards.txt
@@ -29,7 +29,7 @@ generic.build.board=ESP8266_GENERIC
 generic.upload.tool=esptool
 generic.upload.maximum_data_size=81920
 generic.upload.wait_for_upload_port=true
-generic.upload.erase_cmd=version
+generic.upload.erase_cmd=flash_id
 generic.serial.disableDTR=true
 generic.serial.disableRTS=true
 generic.build.mcu=esp8266
@@ -464,7 +464,7 @@ generic.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
 generic.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 generic.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 generic.menu.wipe.none=Only Sketch
-generic.menu.wipe.none.upload.erase_cmd=version
+generic.menu.wipe.none.upload.erase_cmd=flash_id
 generic.menu.wipe.sdk=Sketch + WiFi Settings
 generic.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 generic.menu.wipe.all=All Flash Contents
@@ -495,7 +495,7 @@ esp8285.build.variant=esp8285
 esp8285.upload.tool=esptool
 esp8285.upload.maximum_data_size=81920
 esp8285.upload.wait_for_upload_port=true
-esp8285.upload.erase_cmd=version
+esp8285.upload.erase_cmd=flash_id
 esp8285.serial.disableDTR=true
 esp8285.serial.disableRTS=true
 esp8285.build.mcu=esp8266
@@ -739,7 +739,7 @@ esp8285.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
 esp8285.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 esp8285.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 esp8285.menu.wipe.none=Only Sketch
-esp8285.menu.wipe.none.upload.erase_cmd=version
+esp8285.menu.wipe.none.upload.erase_cmd=flash_id
 esp8285.menu.wipe.sdk=Sketch + WiFi Settings
 esp8285.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 esp8285.menu.wipe.all=All Flash Contents
@@ -779,7 +779,7 @@ espduino.menu.UploadTool.esptool.upload.verbose=--trace
 espduino.upload.tool=esptool
 espduino.upload.maximum_data_size=81920
 espduino.upload.wait_for_upload_port=true
-espduino.upload.erase_cmd=version
+espduino.upload.erase_cmd=flash_id
 espduino.serial.disableDTR=true
 espduino.serial.disableRTS=true
 espduino.build.mcu=esp8266
@@ -940,7 +940,7 @@ espduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAO
 espduino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 espduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 espduino.menu.wipe.none=Only Sketch
-espduino.menu.wipe.none.upload.erase_cmd=version
+espduino.menu.wipe.none.upload.erase_cmd=flash_id
 espduino.menu.wipe.sdk=Sketch + WiFi Settings
 espduino.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 espduino.menu.wipe.all=All Flash Contents
@@ -971,7 +971,7 @@ huzzah.build.variant=adafruit
 huzzah.upload.tool=esptool
 huzzah.upload.maximum_data_size=81920
 huzzah.upload.wait_for_upload_port=true
-huzzah.upload.erase_cmd=version
+huzzah.upload.erase_cmd=flash_id
 huzzah.serial.disableDTR=true
 huzzah.serial.disableRTS=true
 huzzah.build.mcu=esp8266
@@ -1133,7 +1133,7 @@ huzzah.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM
 huzzah.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 huzzah.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 huzzah.menu.wipe.none=Only Sketch
-huzzah.menu.wipe.none.upload.erase_cmd=version
+huzzah.menu.wipe.none.upload.erase_cmd=flash_id
 huzzah.menu.wipe.sdk=Sketch + WiFi Settings
 huzzah.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 huzzah.menu.wipe.all=All Flash Contents
@@ -1164,7 +1164,7 @@ inventone.build.variant=inventone
 inventone.upload.tool=esptool
 inventone.upload.maximum_data_size=81920
 inventone.upload.wait_for_upload_port=true
-inventone.upload.erase_cmd=version
+inventone.upload.erase_cmd=flash_id
 inventone.serial.disableDTR=true
 inventone.serial.disableRTS=true
 inventone.build.mcu=esp8266
@@ -1326,7 +1326,7 @@ inventone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
 inventone.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 inventone.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 inventone.menu.wipe.none=Only Sketch
-inventone.menu.wipe.none.upload.erase_cmd=version
+inventone.menu.wipe.none.upload.erase_cmd=flash_id
 inventone.menu.wipe.sdk=Sketch + WiFi Settings
 inventone.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 inventone.menu.wipe.all=All Flash Contents
@@ -1357,7 +1357,7 @@ cw01.build.variant=xinabox
 cw01.upload.tool=esptool
 cw01.upload.maximum_data_size=81920
 cw01.upload.wait_for_upload_port=true
-cw01.upload.erase_cmd=version
+cw01.upload.erase_cmd=flash_id
 cw01.serial.disableDTR=true
 cw01.serial.disableRTS=true
 cw01.build.mcu=esp8266
@@ -1522,7 +1522,7 @@ cw01.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMD
 cw01.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 cw01.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 cw01.menu.wipe.none=Only Sketch
-cw01.menu.wipe.none.upload.erase_cmd=version
+cw01.menu.wipe.none.upload.erase_cmd=flash_id
 cw01.menu.wipe.sdk=Sketch + WiFi Settings
 cw01.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 cw01.menu.wipe.all=All Flash Contents
@@ -1553,7 +1553,7 @@ espresso_lite_v1.build.variant=espresso_lite_v1
 espresso_lite_v1.upload.tool=esptool
 espresso_lite_v1.upload.maximum_data_size=81920
 espresso_lite_v1.upload.wait_for_upload_port=true
-espresso_lite_v1.upload.erase_cmd=version
+espresso_lite_v1.upload.erase_cmd=flash_id
 espresso_lite_v1.serial.disableDTR=true
 espresso_lite_v1.serial.disableRTS=true
 espresso_lite_v1.build.mcu=esp8266
@@ -1718,7 +1718,7 @@ espresso_lite_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPD
 espresso_lite_v1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 espresso_lite_v1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 espresso_lite_v1.menu.wipe.none=Only Sketch
-espresso_lite_v1.menu.wipe.none.upload.erase_cmd=version
+espresso_lite_v1.menu.wipe.none.upload.erase_cmd=flash_id
 espresso_lite_v1.menu.wipe.sdk=Sketch + WiFi Settings
 espresso_lite_v1.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 espresso_lite_v1.menu.wipe.all=All Flash Contents
@@ -1749,7 +1749,7 @@ espresso_lite_v2.build.variant=espresso_lite_v2
 espresso_lite_v2.upload.tool=esptool
 espresso_lite_v2.upload.maximum_data_size=81920
 espresso_lite_v2.upload.wait_for_upload_port=true
-espresso_lite_v2.upload.erase_cmd=version
+espresso_lite_v2.upload.erase_cmd=flash_id
 espresso_lite_v2.serial.disableDTR=true
 espresso_lite_v2.serial.disableRTS=true
 espresso_lite_v2.build.mcu=esp8266
@@ -1914,7 +1914,7 @@ espresso_lite_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPD
 espresso_lite_v2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 espresso_lite_v2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 espresso_lite_v2.menu.wipe.none=Only Sketch
-espresso_lite_v2.menu.wipe.none.upload.erase_cmd=version
+espresso_lite_v2.menu.wipe.none.upload.erase_cmd=flash_id
 espresso_lite_v2.menu.wipe.sdk=Sketch + WiFi Settings
 espresso_lite_v2.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 espresso_lite_v2.menu.wipe.all=All Flash Contents
@@ -1945,7 +1945,7 @@ phoenix_v1.build.variant=phoenix_v1
 phoenix_v1.upload.tool=esptool
 phoenix_v1.upload.maximum_data_size=81920
 phoenix_v1.upload.wait_for_upload_port=true
-phoenix_v1.upload.erase_cmd=version
+phoenix_v1.upload.erase_cmd=flash_id
 phoenix_v1.serial.disableDTR=true
 phoenix_v1.serial.disableRTS=true
 phoenix_v1.build.mcu=esp8266
@@ -2110,7 +2110,7 @@ phoenix_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROT
 phoenix_v1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 phoenix_v1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 phoenix_v1.menu.wipe.none=Only Sketch
-phoenix_v1.menu.wipe.none.upload.erase_cmd=version
+phoenix_v1.menu.wipe.none.upload.erase_cmd=flash_id
 phoenix_v1.menu.wipe.sdk=Sketch + WiFi Settings
 phoenix_v1.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 phoenix_v1.menu.wipe.all=All Flash Contents
@@ -2141,7 +2141,7 @@ phoenix_v2.build.variant=phoenix_v2
 phoenix_v2.upload.tool=esptool
 phoenix_v2.upload.maximum_data_size=81920
 phoenix_v2.upload.wait_for_upload_port=true
-phoenix_v2.upload.erase_cmd=version
+phoenix_v2.upload.erase_cmd=flash_id
 phoenix_v2.serial.disableDTR=true
 phoenix_v2.serial.disableRTS=true
 phoenix_v2.build.mcu=esp8266
@@ -2306,7 +2306,7 @@ phoenix_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROT
 phoenix_v2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 phoenix_v2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 phoenix_v2.menu.wipe.none=Only Sketch
-phoenix_v2.menu.wipe.none.upload.erase_cmd=version
+phoenix_v2.menu.wipe.none.upload.erase_cmd=flash_id
 phoenix_v2.menu.wipe.sdk=Sketch + WiFi Settings
 phoenix_v2.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 phoenix_v2.menu.wipe.all=All Flash Contents
@@ -2337,7 +2337,7 @@ nodemcu.build.variant=nodemcu
 nodemcu.upload.tool=esptool
 nodemcu.upload.maximum_data_size=81920
 nodemcu.upload.wait_for_upload_port=true
-nodemcu.upload.erase_cmd=version
+nodemcu.upload.erase_cmd=flash_id
 nodemcu.serial.disableDTR=true
 nodemcu.serial.disableRTS=true
 nodemcu.build.mcu=esp8266
@@ -2499,7 +2499,7 @@ nodemcu.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
 nodemcu.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 nodemcu.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 nodemcu.menu.wipe.none=Only Sketch
-nodemcu.menu.wipe.none.upload.erase_cmd=version
+nodemcu.menu.wipe.none.upload.erase_cmd=flash_id
 nodemcu.menu.wipe.sdk=Sketch + WiFi Settings
 nodemcu.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 nodemcu.menu.wipe.all=All Flash Contents
@@ -2530,7 +2530,7 @@ nodemcuv2.build.variant=nodemcu
 nodemcuv2.upload.tool=esptool
 nodemcuv2.upload.maximum_data_size=81920
 nodemcuv2.upload.wait_for_upload_port=true
-nodemcuv2.upload.erase_cmd=version
+nodemcuv2.upload.erase_cmd=flash_id
 nodemcuv2.serial.disableDTR=true
 nodemcuv2.serial.disableRTS=true
 nodemcuv2.build.mcu=esp8266
@@ -2692,7 +2692,7 @@ nodemcuv2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
 nodemcuv2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 nodemcuv2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 nodemcuv2.menu.wipe.none=Only Sketch
-nodemcuv2.menu.wipe.none.upload.erase_cmd=version
+nodemcuv2.menu.wipe.none.upload.erase_cmd=flash_id
 nodemcuv2.menu.wipe.sdk=Sketch + WiFi Settings
 nodemcuv2.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 nodemcuv2.menu.wipe.all=All Flash Contents
@@ -2723,7 +2723,7 @@ modwifi.build.variant=modwifi
 modwifi.upload.tool=esptool
 modwifi.upload.maximum_data_size=81920
 modwifi.upload.wait_for_upload_port=true
-modwifi.upload.erase_cmd=version
+modwifi.upload.erase_cmd=flash_id
 modwifi.serial.disableDTR=true
 modwifi.serial.disableRTS=true
 modwifi.build.mcu=esp8266
@@ -2905,7 +2905,7 @@ modwifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
 modwifi.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 modwifi.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 modwifi.menu.wipe.none=Only Sketch
-modwifi.menu.wipe.none.upload.erase_cmd=version
+modwifi.menu.wipe.none.upload.erase_cmd=flash_id
 modwifi.menu.wipe.sdk=Sketch + WiFi Settings
 modwifi.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 modwifi.menu.wipe.all=All Flash Contents
@@ -2936,7 +2936,7 @@ thing.build.variant=thing
 thing.upload.tool=esptool
 thing.upload.maximum_data_size=81920
 thing.upload.wait_for_upload_port=true
-thing.upload.erase_cmd=version
+thing.upload.erase_cmd=flash_id
 thing.serial.disableDTR=true
 thing.serial.disableRTS=true
 thing.build.mcu=esp8266
@@ -3098,7 +3098,7 @@ thing.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMM
 thing.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 thing.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 thing.menu.wipe.none=Only Sketch
-thing.menu.wipe.none.upload.erase_cmd=version
+thing.menu.wipe.none.upload.erase_cmd=flash_id
 thing.menu.wipe.sdk=Sketch + WiFi Settings
 thing.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 thing.menu.wipe.all=All Flash Contents
@@ -3129,7 +3129,7 @@ thingdev.build.variant=thing
 thingdev.upload.tool=esptool
 thingdev.upload.maximum_data_size=81920
 thingdev.upload.wait_for_upload_port=true
-thingdev.upload.erase_cmd=version
+thingdev.upload.erase_cmd=flash_id
 thingdev.serial.disableDTR=true
 thingdev.serial.disableRTS=true
 thingdev.build.mcu=esp8266
@@ -3291,7 +3291,7 @@ thingdev.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAO
 thingdev.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 thingdev.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 thingdev.menu.wipe.none=Only Sketch
-thingdev.menu.wipe.none.upload.erase_cmd=version
+thingdev.menu.wipe.none.upload.erase_cmd=flash_id
 thingdev.menu.wipe.sdk=Sketch + WiFi Settings
 thingdev.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 thingdev.menu.wipe.all=All Flash Contents
@@ -3321,7 +3321,7 @@ esp210.build.board=ESP8266_ESP210
 esp210.upload.tool=esptool
 esp210.upload.maximum_data_size=81920
 esp210.upload.wait_for_upload_port=true
-esp210.upload.erase_cmd=version
+esp210.upload.erase_cmd=flash_id
 esp210.serial.disableDTR=true
 esp210.serial.disableRTS=true
 esp210.build.mcu=esp8266
@@ -3484,7 +3484,7 @@ esp210.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM
 esp210.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 esp210.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 esp210.menu.wipe.none=Only Sketch
-esp210.menu.wipe.none.upload.erase_cmd=version
+esp210.menu.wipe.none.upload.erase_cmd=flash_id
 esp210.menu.wipe.sdk=Sketch + WiFi Settings
 esp210.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 esp210.menu.wipe.all=All Flash Contents
@@ -3515,7 +3515,7 @@ d1_mini.build.variant=d1_mini
 d1_mini.upload.tool=esptool
 d1_mini.upload.maximum_data_size=81920
 d1_mini.upload.wait_for_upload_port=true
-d1_mini.upload.erase_cmd=version
+d1_mini.upload.erase_cmd=flash_id
 d1_mini.serial.disableDTR=true
 d1_mini.serial.disableRTS=true
 d1_mini.build.mcu=esp8266
@@ -3677,7 +3677,7 @@ d1_mini.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
 d1_mini.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 d1_mini.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 d1_mini.menu.wipe.none=Only Sketch
-d1_mini.menu.wipe.none.upload.erase_cmd=version
+d1_mini.menu.wipe.none.upload.erase_cmd=flash_id
 d1_mini.menu.wipe.sdk=Sketch + WiFi Settings
 d1_mini.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 d1_mini.menu.wipe.all=All Flash Contents
@@ -3708,7 +3708,7 @@ d1_mini_pro.build.variant=d1_mini
 d1_mini_pro.upload.tool=esptool
 d1_mini_pro.upload.maximum_data_size=81920
 d1_mini_pro.upload.wait_for_upload_port=true
-d1_mini_pro.upload.erase_cmd=version
+d1_mini_pro.upload.erase_cmd=flash_id
 d1_mini_pro.serial.disableDTR=true
 d1_mini_pro.serial.disableRTS=true
 d1_mini_pro.build.mcu=esp8266
@@ -3853,7 +3853,7 @@ d1_mini_pro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATERO
 d1_mini_pro.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 d1_mini_pro.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 d1_mini_pro.menu.wipe.none=Only Sketch
-d1_mini_pro.menu.wipe.none.upload.erase_cmd=version
+d1_mini_pro.menu.wipe.none.upload.erase_cmd=flash_id
 d1_mini_pro.menu.wipe.sdk=Sketch + WiFi Settings
 d1_mini_pro.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 d1_mini_pro.menu.wipe.all=All Flash Contents
@@ -3884,7 +3884,7 @@ d1_mini_lite.build.variant=d1_mini
 d1_mini_lite.upload.tool=esptool
 d1_mini_lite.upload.maximum_data_size=81920
 d1_mini_lite.upload.wait_for_upload_port=true
-d1_mini_lite.upload.erase_cmd=version
+d1_mini_lite.upload.erase_cmd=flash_id
 d1_mini_lite.serial.disableDTR=true
 d1_mini_lite.serial.disableRTS=true
 d1_mini_lite.build.mcu=esp8266
@@ -4086,7 +4086,7 @@ d1_mini_lite.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATER
 d1_mini_lite.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 d1_mini_lite.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 d1_mini_lite.menu.wipe.none=Only Sketch
-d1_mini_lite.menu.wipe.none.upload.erase_cmd=version
+d1_mini_lite.menu.wipe.none.upload.erase_cmd=flash_id
 d1_mini_lite.menu.wipe.sdk=Sketch + WiFi Settings
 d1_mini_lite.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 d1_mini_lite.menu.wipe.all=All Flash Contents
@@ -4117,7 +4117,7 @@ d1.build.variant=d1
 d1.upload.tool=esptool
 d1.upload.maximum_data_size=81920
 d1.upload.wait_for_upload_port=true
-d1.upload.erase_cmd=version
+d1.upload.erase_cmd=flash_id
 d1.serial.disableDTR=true
 d1.serial.disableRTS=true
 d1.build.mcu=esp8266
@@ -4279,7 +4279,7 @@ d1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS
 d1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 d1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 d1.menu.wipe.none=Only Sketch
-d1.menu.wipe.none.upload.erase_cmd=version
+d1.menu.wipe.none.upload.erase_cmd=flash_id
 d1.menu.wipe.sdk=Sketch + WiFi Settings
 d1.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 d1.menu.wipe.all=All Flash Contents
@@ -4310,7 +4310,7 @@ espino.build.variant=espino
 espino.upload.tool=esptool
 espino.upload.maximum_data_size=81920
 espino.upload.wait_for_upload_port=true
-espino.upload.erase_cmd=version
+espino.upload.erase_cmd=flash_id
 espino.serial.disableDTR=true
 espino.serial.disableRTS=true
 espino.build.mcu=esp8266
@@ -4475,7 +4475,7 @@ espino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM
 espino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 espino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 espino.menu.wipe.none=Only Sketch
-espino.menu.wipe.none.upload.erase_cmd=version
+espino.menu.wipe.none.upload.erase_cmd=flash_id
 espino.menu.wipe.sdk=Sketch + WiFi Settings
 espino.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 espino.menu.wipe.all=All Flash Contents
@@ -4506,7 +4506,7 @@ espinotee.build.variant=espinotee
 espinotee.upload.tool=esptool
 espinotee.upload.maximum_data_size=81920
 espinotee.upload.wait_for_upload_port=true
-espinotee.upload.erase_cmd=version
+espinotee.upload.erase_cmd=flash_id
 espinotee.serial.disableDTR=true
 espinotee.serial.disableRTS=true
 espinotee.build.mcu=esp8266
@@ -4668,7 +4668,7 @@ espinotee.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
 espinotee.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 espinotee.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 espinotee.menu.wipe.none=Only Sketch
-espinotee.menu.wipe.none.upload.erase_cmd=version
+espinotee.menu.wipe.none.upload.erase_cmd=flash_id
 espinotee.menu.wipe.sdk=Sketch + WiFi Settings
 espinotee.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 espinotee.menu.wipe.all=All Flash Contents
@@ -4716,7 +4716,7 @@ wifinfo.menu.ESPModule.ESP12.upload.maximum_size=1044464
 wifinfo.upload.tool=esptool
 wifinfo.upload.maximum_data_size=81920
 wifinfo.upload.wait_for_upload_port=true
-wifinfo.upload.erase_cmd=version
+wifinfo.upload.erase_cmd=flash_id
 wifinfo.serial.disableDTR=true
 wifinfo.serial.disableRTS=true
 wifinfo.build.mcu=esp8266
@@ -4921,7 +4921,7 @@ wifinfo.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
 wifinfo.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 wifinfo.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 wifinfo.menu.wipe.none=Only Sketch
-wifinfo.menu.wipe.none.upload.erase_cmd=version
+wifinfo.menu.wipe.none.upload.erase_cmd=flash_id
 wifinfo.menu.wipe.sdk=Sketch + WiFi Settings
 wifinfo.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 wifinfo.menu.wipe.all=All Flash Contents
@@ -4963,7 +4963,7 @@ arduino-esp8266.menu.BoardModel.unowifideved.build.variant=arduino_uart
 arduino-esp8266.upload.tool=esptool
 arduino-esp8266.upload.maximum_data_size=81920
 arduino-esp8266.upload.wait_for_upload_port=true
-arduino-esp8266.upload.erase_cmd=version
+arduino-esp8266.upload.erase_cmd=flash_id
 arduino-esp8266.serial.disableDTR=true
 arduino-esp8266.serial.disableRTS=true
 arduino-esp8266.build.mcu=esp8266
@@ -5126,7 +5126,7 @@ arduino-esp8266.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDA
 arduino-esp8266.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 arduino-esp8266.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 arduino-esp8266.menu.wipe.none=Only Sketch
-arduino-esp8266.menu.wipe.none.upload.erase_cmd=version
+arduino-esp8266.menu.wipe.none.upload.erase_cmd=flash_id
 arduino-esp8266.menu.wipe.sdk=Sketch + WiFi Settings
 arduino-esp8266.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 arduino-esp8266.menu.wipe.all=All Flash Contents
@@ -5158,7 +5158,7 @@ gen4iod.build.variant=generic
 gen4iod.upload.tool=esptool
 gen4iod.upload.maximum_data_size=81920
 gen4iod.upload.wait_for_upload_port=true
-gen4iod.upload.erase_cmd=version
+gen4iod.upload.erase_cmd=flash_id
 gen4iod.serial.disableDTR=true
 gen4iod.serial.disableRTS=true
 gen4iod.build.mcu=esp8266
@@ -5320,7 +5320,7 @@ gen4iod.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
 gen4iod.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 gen4iod.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 gen4iod.menu.wipe.none=Only Sketch
-gen4iod.menu.wipe.none.upload.erase_cmd=version
+gen4iod.menu.wipe.none.upload.erase_cmd=flash_id
 gen4iod.menu.wipe.sdk=Sketch + WiFi Settings
 gen4iod.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 gen4iod.menu.wipe.all=All Flash Contents
@@ -5352,7 +5352,7 @@ oak.upload.maximum_size=1040368
 oak.upload.tool=esptool
 oak.upload.maximum_data_size=81920
 oak.upload.wait_for_upload_port=true
-oak.upload.erase_cmd=version
+oak.upload.erase_cmd=flash_id
 oak.serial.disableDTR=true
 oak.serial.disableRTS=true
 oak.build.mcu=esp8266
@@ -5514,7 +5514,7 @@ oak.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDN
 oak.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 oak.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 oak.menu.wipe.none=Only Sketch
-oak.menu.wipe.none.upload.erase_cmd=version
+oak.menu.wipe.none.upload.erase_cmd=flash_id
 oak.menu.wipe.sdk=Sketch + WiFi Settings
 oak.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 oak.menu.wipe.all=All Flash Contents
@@ -5545,7 +5545,7 @@ wifiduino.build.variant=wifiduino
 wifiduino.upload.tool=esptool
 wifiduino.upload.maximum_data_size=81920
 wifiduino.upload.wait_for_upload_port=true
-wifiduino.upload.erase_cmd=version
+wifiduino.upload.erase_cmd=flash_id
 wifiduino.serial.disableDTR=true
 wifiduino.serial.disableRTS=true
 wifiduino.build.mcu=esp8266
@@ -5707,7 +5707,7 @@ wifiduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
 wifiduino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 wifiduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 wifiduino.menu.wipe.none=Only Sketch
-wifiduino.menu.wipe.none.upload.erase_cmd=version
+wifiduino.menu.wipe.none.upload.erase_cmd=flash_id
 wifiduino.menu.wipe.sdk=Sketch + WiFi Settings
 wifiduino.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 wifiduino.menu.wipe.all=All Flash Contents
@@ -5738,7 +5738,7 @@ wifi_slot.build.variant=wifi_slot
 wifi_slot.upload.tool=esptool
 wifi_slot.upload.maximum_data_size=81920
 wifi_slot.upload.wait_for_upload_port=true
-wifi_slot.upload.erase_cmd=version
+wifi_slot.upload.erase_cmd=flash_id
 wifi_slot.serial.disableDTR=true
 wifi_slot.serial.disableRTS=true
 wifi_slot.build.mcu=esp8266
@@ -6010,7 +6010,7 @@ wifi_slot.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
 wifi_slot.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 wifi_slot.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 wifi_slot.menu.wipe.none=Only Sketch
-wifi_slot.menu.wipe.none.upload.erase_cmd=version
+wifi_slot.menu.wipe.none.upload.erase_cmd=flash_id
 wifi_slot.menu.wipe.sdk=Sketch + WiFi Settings
 wifi_slot.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 wifi_slot.menu.wipe.all=All Flash Contents
@@ -6041,7 +6041,7 @@ wiolink.build.variant=wiolink
 wiolink.upload.tool=esptool
 wiolink.upload.maximum_data_size=81920
 wiolink.upload.wait_for_upload_port=true
-wiolink.upload.erase_cmd=version
+wiolink.upload.erase_cmd=flash_id
 wiolink.serial.disableDTR=true
 wiolink.serial.disableRTS=true
 wiolink.build.mcu=esp8266
@@ -6203,7 +6203,7 @@ wiolink.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
 wiolink.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 wiolink.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 wiolink.menu.wipe.none=Only Sketch
-wiolink.menu.wipe.none.upload.erase_cmd=version
+wiolink.menu.wipe.none.upload.erase_cmd=flash_id
 wiolink.menu.wipe.sdk=Sketch + WiFi Settings
 wiolink.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 wiolink.menu.wipe.all=All Flash Contents
@@ -6234,7 +6234,7 @@ espectro.build.variant=espectro
 espectro.upload.tool=esptool
 espectro.upload.maximum_data_size=81920
 espectro.upload.wait_for_upload_port=true
-espectro.upload.erase_cmd=version
+espectro.upload.erase_cmd=flash_id
 espectro.serial.disableDTR=true
 espectro.serial.disableRTS=true
 espectro.build.mcu=esp8266
@@ -6396,7 +6396,7 @@ espectro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAO
 espectro.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 espectro.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 espectro.menu.wipe.none=Only Sketch
-espectro.menu.wipe.none.upload.erase_cmd=version
+espectro.menu.wipe.none.upload.erase_cmd=flash_id
 espectro.menu.wipe.sdk=Sketch + WiFi Settings
 espectro.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 espectro.menu.wipe.all=All Flash Contents
diff --git a/tools/boards.txt.py b/tools/boards.txt.py
index 9d83a876df..93e9bcdbd8 100755
--- a/tools/boards.txt.py
+++ b/tools/boards.txt.py
@@ -853,7 +853,7 @@
         ( '.upload.tool', 'esptool' ),
         ( '.upload.maximum_data_size', '81920' ),
         ( '.upload.wait_for_upload_port', 'true' ),
-        ( '.upload.erase_cmd', 'version'),
+        ( '.upload.erase_cmd', 'flash_id'),
         ( '.serial.disableDTR', 'true' ),
         ( '.serial.disableRTS', 'true' ),
         ( '.build.mcu', 'esp8266' ),
@@ -1077,7 +1077,7 @@
 
     'flash_erase_menu': collections.OrderedDict([
         ( '.menu.wipe.none', 'Only Sketch' ),
-        ( '.menu.wipe.none.upload.erase_cmd', 'version' ),
+        ( '.menu.wipe.none.upload.erase_cmd', 'flash_id' ),
         ( '.menu.wipe.sdk', 'Sketch + WiFi Settings' ),
         ( '.menu.wipe.sdk.upload.erase_cmd', 'erase_region "{build.rfcal_addr}" 0x4000' ),
         ( '.menu.wipe.all', 'All Flash Contents' ),

From fa5c2f0671e5e01182dbe7143e3e0a7a4e3303d3 Mon Sep 17 00:00:00 2001
From: Laurent Lalanne <f5soh@free.fr>
Date: Wed, 6 Nov 2019 00:00:24 +0100
Subject: [PATCH 4/4] Regenerated boards.txt

---
 boards.txt | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/boards.txt b/boards.txt
index d53322dde0..e362408c44 100644
--- a/boards.txt
+++ b/boards.txt
@@ -3328,7 +3328,7 @@ blynk.build.variant=thing
 blynk.upload.tool=esptool
 blynk.upload.maximum_data_size=81920
 blynk.upload.wait_for_upload_port=true
-blynk.upload.erase_cmd=version
+blynk.upload.erase_cmd=flash_id
 blynk.serial.disableDTR=true
 blynk.serial.disableRTS=true
 blynk.build.mcu=esp8266
@@ -3359,7 +3359,7 @@ blynk.menu.ssl.all=All SSL ciphers (most compatible)
 blynk.menu.ssl.all.build.sslflags=
 blynk.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 blynk.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
-blynk.upload.resetmethod=nodemcu
+blynk.upload.resetmethod=--before default_reset --after hard_reset
 blynk.build.flash_mode=qio
 blynk.build.flash_flags=-DFLASHMODE_QIO
 blynk.build.flash_freq=40
@@ -3490,7 +3490,7 @@ blynk.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMM
 blynk.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
 blynk.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
 blynk.menu.wipe.none=Only Sketch
-blynk.menu.wipe.none.upload.erase_cmd=version
+blynk.menu.wipe.none.upload.erase_cmd=flash_id
 blynk.menu.wipe.sdk=Sketch + WiFi Settings
 blynk.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
 blynk.menu.wipe.all=All Flash Contents