• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Update error: ERROR[11]: Invalid bootstrapping state, reset ESP8266 before updating

CCat

Member
Использую библиотеку ESP8266HTTPUpdateServer
Немного изменил пример, чтобы заливать файл прямо на ESP, а не через чей-то WiFi.
После захода по адресу http://33.33.33.33/update указываю файл и получаю сообщение "Update error: ERROR[11]: Invalid bootstrapping state, reset ESP8266 before updating".
Поскольку предполагается, что я не буду иметь легкого доступа к кнопке Reset, я вынимаю usb-разъем (У меня NodeMCU V3) и вставляю его обратно, т.е. просто обесточиваю ESP на пару секунд.
Когда после этого захожу на ту же страницу, спокойно могу указать нужный файл и он таки нормально зальется, ESP "перепрошьется" и перезагрузится.

Вопросы.
1) Я читал, что поскольку ресет производится командой -wdt reset, у NodeMCU и подобных с этим проблемы. Ну и? И что делать? Не заморачиваться и передернуть питание в случае заливки нового скетча вышеуказанным способом?
2) Просто интересно. А почему сражузе после перезагрузки путем выдергивания питания все ОК? Каким образом ESP во второй раз благостно принимает апдейт? Что изменилось и как это что-то уцелело после выключения питания? Какой-то временный загрузчик в SPIFFS образовался или что?

Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPUpdateServer.h>

IPAddress apIP(33, 33, 33, 33);
const char *ssid = "MyBox";

ESP8266WebServer httpServer(80);
ESP8266HTTPUpdateServer httpUpdater;

void setup(void) {

  Serial.begin(115200);
  Serial.println();
  Serial.println("Booting Sketch...");
  WiFi.mode(WIFI_AP_STA);
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));   // subnet FF FF FF 00 
 
  WiFi.softAP(ssid);//without pass

  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);

  httpUpdater.setup(&httpServer);
  httpServer.begin();

  Serial.println("HTTPUpdateServer ready!");
}

void loop(void) {
  httpServer.handleClient();
}
 

CCat

Member
Ааа, может, то, что упоминается на англоязычном форуме
The documentation already says that if you upload a sketch through serial, you'll have to reset the board first manually, before OTA will work, ie. upload via serial, reset the board, then use OTA.
я неправильно понимал? Я думал "при чем здесь serial, я ж по воздуху гружу". А надо просто после последней загрузки через USB скетча перезагрузить ESP и дальше все будет ОК любое количество раз?!
 
Сверху Снизу