From 8f360d352aec0db6ee58bcb0edb4d7216b74648d Mon Sep 17 00:00:00 2001 From: Natxo1000 Date: Tue, 2 Jun 2026 15:05:03 +0200 Subject: [PATCH] =?UTF-8?q?firmware:=20v12=20=E2=80=94=20quitar=20setBuffe?= =?UTF-8?q?rSizes=20ESP8266=20OTA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit setBufferSizes(512,512) rechazaba records TLS > 512 bytes durante la descarga del binario. La primera OTA exitosa no usaba setBufferSizes. Eliminadas todas las llamadas — buffers por defecto de BearSSL. Se mantiene el scope block que libera el cliente de version.txt antes de crear el cliente de descarga. Co-Authored-By: Claude Sonnet 4.6 --- ESP8266/ESP8266.ino | 11 ++++------- Esp32Cam/Esp32Cam.ino | 2 +- firmware/esp32cam/firmware.bin | Bin 1309296 -> 1309296 bytes firmware/esp32cam/version.txt | 2 +- firmware/esp8266/firmware.bin | Bin 411920 -> 411888 bytes firmware/esp8266/version.txt | 2 +- 6 files changed, 7 insertions(+), 10 deletions(-) diff --git a/ESP8266/ESP8266.ino b/ESP8266/ESP8266.ino index 2d37426..3cde5bb 100644 --- a/ESP8266/ESP8266.ino +++ b/ESP8266/ESP8266.ino @@ -7,7 +7,7 @@ // ================================================================ // OTA CONFIG // ================================================================ -#define FW_VERSION 11 +#define FW_VERSION 12 #define GITEA_HOST "https://git.nacho.myds.me" #define GITEA_OWNER "Natxo" #define GITEA_REPO "Arduino-Car" @@ -64,11 +64,12 @@ static void checkOTA() { // ── Bloque de scope: libera el cliente BearSSL antes de la descarga ── // BearSSL ocupa ~20KB de heap. Si los dos clientes coexisten el heap // se agota y ESPhttpUpdate falla silenciosamente. + // Scope block: destruye el cliente BearSSL antes de crear el de descarga + // Libera ~20KB de heap (BearSSL con buffers por defecto) para la descarga int remoteVer = 0; { BearSSL::WiFiClientSecure client; client.setInsecure(); - client.setBufferSizes(512, 512); // buffers mínimos — suficiente para la respuesta HTTPClient http; http.begin(client, base + "version.txt" + token); http.setTimeout(10000); @@ -79,7 +80,7 @@ static void checkOTA() { remoteVer = body.toInt(); } http.end(); - } // ← client y http se destruyen aquí, ~20KB liberados + } // client destruido aquí — heap recuperado if (remoteVer > FW_VERSION) { // 4 pitidos = ESP8266 actualizando @@ -99,10 +100,6 @@ static void checkOTA() { BearSSL::WiFiClientSecure updateClient; updateClient.setInsecure(); - // 4096 bytes de entrada: necesario para records TLS de datos grandes. - // 512 bytes de salida: suficiente para peticiones HTTP. - // El scope block anterior liberó ~10KB del primer cliente — hay heap. - updateClient.setBufferSizes(4096, 512); ESPhttpUpdate.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS); ESPhttpUpdate.rebootOnUpdate(true); ESPhttpUpdate.update(updateClient, base + "firmware.bin" + token); diff --git a/Esp32Cam/Esp32Cam.ino b/Esp32Cam/Esp32Cam.ino index 588e836..4813714 100644 --- a/Esp32Cam/Esp32Cam.ino +++ b/Esp32Cam/Esp32Cam.ino @@ -10,7 +10,7 @@ // ================================================================ // OTA CONFIG // ================================================================ -#define FW_VERSION 11 +#define FW_VERSION 12 #define GITEA_HOST "https://git.nacho.myds.me" #define GITEA_OWNER "Natxo" #define GITEA_REPO "Arduino-Car" diff --git a/firmware/esp32cam/firmware.bin b/firmware/esp32cam/firmware.bin index fb07ea028d8259f0e892a7a51b859cecd2366eea..462c816a3aae9da094f3681e6b118ca8af4030e0 100644 GIT binary patch delta 159 zcmezH#s9+>{|Oru44kiKCTG~G2yJ`#?S}P(n~n5#yM3FORw%@NUE)8RPZIz*LrP!( delta 159 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 diff --git a/firmware/esp8266/version.txt b/firmware/esp8266/version.txt index 9d60796..3cacc0b 100644 --- a/firmware/esp8266/version.txt +++ b/firmware/esp8266/version.txt @@ -1 +1 @@ -11 \ No newline at end of file +12 \ No newline at end of file