chrisjoyce911 / esp32FOTA

Experiments in firmware OTA updates for ESP32 dev boards
The Unlicense
366 stars 89 forks source link

Failure after update from 0.2.3 to 0.2.4 #115

Closed DaliborGuga closed 1 year ago

DaliborGuga commented 1 year ago

I had a fully functional OTA on local web server (https secure, with certificate, with JSON and firmware and spiffs files served) With versión 0.2.3 works like a charm, with 0.2.4 (or 0.2.5) the execution enters in a loop while attemping to connect


CODE:

#include <Arduino.h>
#include <WiFi.h>
#include <FS.h>
#include <SPIFFS.h>

#include <esp32fota.h>
#include <../include/esp32fota.hpp>
#include <esp_task_wdt.h>

// #include <../include/connect.hpp>
// #include <../include/Ota_Guga.cpp>

esp32FOTA FOTA;
CryptoFileAsset *MyRootCA = new CryptoFileAsset( "/root_ca.pem", &SPIFFS );

uint16_t retry_update = 0;
bool ota_returned;
bool updatedNeeded;

// Change to your WiFi credentials
const char *ssidSTA = "ESP";
const char *passwordSTA = "87654321";

void setup_wifi()
{
  delay(10);
  Serial.print("Connecting to ");
  Serial.println(ssidSTA);
  WiFi.begin(ssidSTA, passwordSTA);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
    esp_task_wdt_reset(); //Ver si es necesario ponerlo aquí
  }
  Serial.println("");
  Serial.println(WiFi.localIP());
}

void setup()
{
  SPIFFS.begin(true);
  Serial.begin(115200);
  setup_wifi();

  {
    auto cfg = FOTA.getConfig();    
    cfg.name          = "esp32-fota-http";
    cfg.manifest_url  = "https://192.168.0.30:443/fota.json";
    cfg.sem           = SemverClass( 1, 0, 0 ); // major, minor, patch
    cfg.check_sig     = false; // verify signed firmware with rsa public key
    cfg.unsafe        = false; // disable certificate check when using TLS
    cfg.root_ca       = MyRootCA; //En mem o spiffs funciona ok
    //cfg.pub_key       = MyRSAKey;
    //cfg.use_device_id = false;
    FOTA.setConfig( cfg );
  }  
  retry_update = 0;      
}

void loop()
{
  while(retry_update < 3)
  {
    updatedNeeded = FOTA.execHTTPcheck();
    if (updatedNeeded)
    {
        ota_returned = FOTA.execOTA();  //aca queda atrapado, si entró a OTA y se cae la conexión
    }
    if(ota_returned == true)
    {
        #ifdef VERBOSE_OTA
        Serial.print("Ota succesfully!");
        #endif
        break;
    }
    delay(2000);
    retry_update++;
  }
}

Working code compiling and linking data { Processing esp32dev (board: esp32dev; platform: https://github.com/platformio/platform-espressif32.git; framework: arduino) ----------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via -v, --verbose option CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html PLATFORM: Espressif 32 (5.1.0+sha.bb2d073) > Espressif ESP32 Dev Module HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa) PACKAGES:


With 0.2.4 the execution loops endlessly {Monitor output with debug-level 5}

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:1184 load:0x40078000,len:13132 load:0x40080400,len:3036 entry 0x400805e4 [␀␘␂␂␂��m␑um����2-hal-cpu.c:214] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz Connecting to ESP [ 186][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 0 - WIFI_READY [ 281][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0 [ 279][V][WiFiGeneric.cpp:338] _arduino_event_cb(): STA Started [ 287][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 2 - STA_START
..[ 1330][V][WiFiGeneric.cpp:360] _arduino_event_cb(): STA Disconnected: SSID: ESP, BSSID: 6c:5a:b0:d0:35:f6, Reason: 2 [ 1330][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED[ 1337][W][WiFiGeneric.cpp:950] _eventCallback(): Reason: 2 - AUTH_EXPIRE [ 1344][D][WiFiGeneric.cpp:966] _eventCallback(): WiFi Reconnect Running [ 1352][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0 ..[ 2455][V][WiFiGeneric.cpp:360] _arduino_event_cb(): STA Disconnected: SSID: ESP, BSSID: 6c:5a:b0:d0:35:f6, Reason: 2 [ 2456][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED[ 2462][W][WiFiGeneric.cpp:950] _eventCallback(): Reason: 2 - AUTH_EXPIRE [ 2469][D][WiFiGeneric.cpp:975] _eventCallback(): WiFi AutoReconnect Running [ 2478][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0 ..[ 3581][V][WiFiGeneric.cpp:360] _arduino_event_cb(): STA Disconnected: SSID: ESP, BSSID: 6c:5a:b0:d0:35:f6, Reason: 2 [ 3582][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED[ 3589][W][WiFiGeneric.cpp:950] _eventCallback(): Reason: 2 - AUTH_EXPIRE [ 3595][D][WiFiGeneric.cpp:975] _eventCallback(): WiFi AutoReconnect Running [ 3604][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0 ..[ 4708][V][WiFiGeneric.cpp:360] _arduino_event_cb(): STA Disconnected: SSID: ESP, BSSID: 6c:5a:b0:d0:35:f6, Reason: 2 [ 4709][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED[ 4716][W][WiFiGeneric.cpp:950] _eventCallback(): Reason: 2 - AUTH_EXPIRE [ 4722][D][WiFiGeneric.cpp:975] _eventCallback(): WiFi AutoReconnect Running [ 4731][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0 ...[ 5834][V][WiFiGeneric.cpp:360] _arduino_event_cb(): STA Disconnected: SSID: ESP, BSSID: 6c:5a:b0:d0:35:f6, Reason: 2 [ 5835][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED[ 5842][W][WiFiGeneric.cpp:950] _eventCallback(): Reason: 2 - AUTH_EXPIRE [ 5848][D][WiFiGeneric.cpp:975] _eventCallback(): WiFi AutoReconnect Running [ 5857][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0 ..[ 6960][V][WiFiGeneric.cpp:360] _arduino_event_cb(): STA Disconnected: SSID: ESP, BSSID: 6c:5a:b0:d0:35:f6, Reason: 2 [ 6961][D][WiFiGeneric.cpp:929] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED[ 6968][W][WiFiGeneric.cpp:950] _eventCallback(): Reason: 2 - AUTH_EXPIRE [ 6975][D][WiFiGeneric.cpp:975] _eventCallback(): WiFi AutoReconnect Running [ 6983][V][WiFiGeneric.cpp:97] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0

tobozo commented 1 year ago

fixed in 0.2.6, will propagate soon in the Arduino Library Manager