Giter Site home page Giter Site logo

esp32-http-update's Introduction

This library deprecated, since Arduino Framework for ESP32 added this support officially. See: https://github.com/espressif/arduino-esp32/tree/master/libraries/Update

--

ESP32 HTTP Firmware Update (OTA)

Codacy Badge

ESP Clone of https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266httpUpdate (most work done by Markus Sattler).

TL;DR

This is just a quick port of ESP8266httpUpdate for ESP32.

Buildable with Arduino framework for ESP32.

There are things remaining to be solved:

  • Some headers are deprecated (will change for ESP32 anyway)
  • Download to SPIFFS with AES-256 decryption
  • Does not support ESP-IDF.

esp32-http-update's People

Contributors

suculent avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp32-http-update's Issues

How to update?

I did run that on esp it did updated but when I changed that bin file and click reset button it didn't work so. Am I doing something wrong?

Esp32 is restarting ofter OTA

I have implemented OTA using this httpupdate for esp32 , but after OTA update esp32 will restart by internal and updates firmware . ofter this it will continuously restarts , restart reason in debug message is rtcwdt_rtc_reset.

please help me in this .

Compilation error

Thank you for the library, but I get the following error while trying to compile.

I've updated the ESP32 library but it has no effect.

Thank you for your help

C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\HTTPClient\src\HTTPClient.cpp: In member function 'virtual std::unique_ptr<WiFiClient> TLSTraits::create()':

C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\HTTPClient\src\HTTPClient.cpp:64:66: error: no matching function for call to 'std::unique_ptr<WiFiClient>::unique_ptr(WiFiClientSecure*)'

         return std::unique_ptr<WiFiClient>(new WiFiClientSecure());

                                                                  ^

In file included from c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\memory:81:0,

                 from C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiClient.h:28,

                 from C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFi.h:37,

                 from C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\HTTPClient\src\HTTPClient.cpp:29:

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:228:2: note: candidate: template<class _Up, class> std::unique_ptr<_Tp, _Dp>::unique_ptr(std::auto_ptr<_Up>&&)

  unique_ptr(auto_ptr<_Up>&& __u) noexcept;

  ^

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:228:2: note:   template argument deduction/substitution failed:

C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\HTTPClient\src\HTTPClient.cpp:64:66: note:   mismatched types 'std::auto_ptr<_Up>' and 'WiFiClientSecure*'

         return std::unique_ptr<WiFiClient>(new WiFiClientSecure());

                                                                  ^

In file included from c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\memory:81:0,

                 from C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiClient.h:28,

                 from C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFi.h:37,

                 from C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\HTTPClient\src\HTTPClient.cpp:29:

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:220:2: note: candidate: template<class _Up, class _Ep, class> std::unique_ptr<_Tp, _Dp>::unique_ptr(std::unique_ptr<_Up, _Ep>&&)

  unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept

  ^

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:220:2: note:   template argument deduction/substitution failed:

C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\HTTPClient\src\HTTPClient.cpp:64:66: note:   mismatched types 'std::unique_ptr<_Tp, _Dp>' and 'WiFiClientSecure*'

         return std::unique_ptr<WiFiClient>(new WiFiClientSecure());

                                                                  ^

In file included from c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\memory:81:0,

                 from C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiClient.h:28,

                 from C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFi.h:37,

                 from C:\Users\bhaessig\Documents\Arduino\hardware\espressif\esp32\libraries\HTTPClient\src\HTTPClient.cpp:29:

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:205:7: note: candidate: std::unique_ptr<_Tp, _Dp>::unique_ptr(std::unique_ptr<_Tp, _Dp>&&) [with _Tp = WiFiClient; _Dp = std::default_delete<WiFiClient>]

       unique_ptr(unique_ptr&& __u) noexcept

       ^

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:205:7: note:   no known conversion for argument 1 from 'WiFiClientSecure*' to 'std::unique_ptr<WiFiClient>&&'

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:200:17: note: candidate: constexpr std::unique_ptr<_Tp, _Dp>::unique_ptr(std::nullptr_t) [with _Tp = WiFiClient; _Dp = std::default_delete<WiFiClient>; std::nullptr_t = std::nullptr_t]

       constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { }

                 ^

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:200:17: note:   no known conversion for argument 1 from 'WiFiClientSecure*' to 'std::nullptr_t'

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:193:7: note: candidate: std::unique_ptr<_Tp, _Dp>::unique_ptr(std::unique_ptr<_Tp, _Dp>::pointer, typename std::remove_reference<_To>::type&&) [with _Tp = WiFiClient; _Dp = std::default_delete<WiFiClient>; std::unique_ptr<_Tp, _Dp>::pointer = WiFiClient*; typename std::remove_reference<_To>::type = std::default_delete<WiFiClient>]

       unique_ptr(pointer __p,

       ^

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:193:7: note:   candidate expects 2 arguments, 1 provided

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:181:7: note: candidate: std::unique_ptr<_Tp, _Dp>::unique_ptr(std::unique_ptr<_Tp, _Dp>::pointer, typename std::conditional<std::is_reference<_Dp>::value, _Dp, const _Dp&>::type) [with _Tp = WiFiClient; _Dp = std::default_delete<WiFiClient>; std::unique_ptr<_Tp, _Dp>::pointer = WiFiClient*; typename std::conditional<std::is_reference<_Dp>::value, _Dp, const _Dp&>::type = const std::default_delete<WiFiClient>&]

       unique_ptr(pointer __p,

       ^

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:181:7: note:   candidate expects 2 arguments, 1 provided

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:169:7: note: candidate: std::unique_ptr<_Tp, _Dp>::unique_ptr(std::unique_ptr<_Tp, _Dp>::pointer) [with _Tp = WiFiClient; _Dp = std::default_delete<WiFiClient>; std::unique_ptr<_Tp, _Dp>::pointer = WiFiClient*]

       unique_ptr(pointer __p) noexcept

       ^

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:169:7: note:   no known conversion for argument 1 from 'WiFiClientSecure*' to 'std::unique_ptr<WiFiClient>::pointer {aka WiFiClient*}'

c:\users\bhaessig\documents\arduino\hardware\espressif\esp32\tools\xtensa-esp32-elf\xtensa-esp32-elf\include\c++\5.2.0\bits\unique_ptr.h:157:17: note: candidate: constexpr std::unique_ptr<_Tp, _Dp>::unique_ptr() [with _Tp = WiFiClient; _Dp = std::default_delete<WiFiClient>]

       constexpr unique_ptr() noexcept

                 ^

SPIFFS mounting issue

Hi suculent,
thank you so much for the library this is very useful! The firmware OTA works great! I am trying to do a SPIFFS OTA and I face some issues.
I am using the SPIFFS_update.ino example and it seems to be working fine: it find the file, download it and write it.
But when I try to mount a SPIFFS file system to look and read the file that was written it looks like nothing was written.

#include <Arduino.h>

#include <WiFi.h>

#include <HTTPClient.h>
#include <ESP32httpUpdate.h>
#include "FS.h"
#include "SPIFFS.h"
#define USE_SERIAL Serial

void listDir(fs::FS &fs, const char * dirname, uint8_t levels) {
	Serial.printf("Listing directory: %s\n", dirname);

	File root = fs.open(dirname);
	if (!root) {
		Serial.println("Failed to open directory");
		return;
	}
	if (!root.isDirectory()) {
		Serial.println("Not a directory");
		return;
	}

	File file = root.openNextFile();
	while (file) {
		if (file.isDirectory()) {
			Serial.print("  DIR : ");
			Serial.println(file.name());
			if (levels) {
				listDir(fs, file.name(), levels - 1);
			}
		}
		else {
			Serial.print("  FILE: ");
			Serial.print(file.name());
			Serial.print("  SIZE: ");
			Serial.println(file.size());
		}
		file = root.openNextFile();
	}
}

void setup() {

	USE_SERIAL.begin(115200);
	USE_SERIAL.setDebugOutput(true);

	USE_SERIAL.println();
	USE_SERIAL.println();
	USE_SERIAL.println();
	WiFi.begin("SSID", "password");
	/*for (uint8_t t = 4; t > 0; t--) {
		USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
		USE_SERIAL.flush();
		delay(1000);
	}*/

	const esp_partition_t* partition1 = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_SPIFFS, NULL);


	Serial.print("Partition type: ");
	Serial.println(partition1->type);
	Serial.print("Partition subtype: ");
	Serial.println(partition1->subtype);
	Serial.print("Partition size: ");
	Serial.println(partition1->size);
	Serial.print("Partition address: ");
	Serial.println(partition1->address);
	Serial.print("Partition label: ");
	Serial.println(partition1->label);
	Serial.print("Partition encrypted: ");
	Serial.println(partition1->encrypted);

	SPIFFS.begin(true);
	Serial.println("Used Bytes: " + String(SPIFFS.usedBytes()));
	listDir(SPIFFS, "/", 0);
	SPIFFS.end();
	//SPIFFS.format();
}

void loop() {
	// wait for WiFi connection
	if ((WiFi.status() == WL_CONNECTED)) {

		USE_SERIAL.println("Update SPIFFS...");
		t_httpUpdate_return ret = ESPhttpUpdate.updateSpiffs("http://binaries.climate-solutions.net/update_TFT.php", "1.2.9");
		switch (ret) {
		case HTTP_UPDATE_FAILED:
			USE_SERIAL.printf("HTTP_UPDATE_FAILED Error (%d): %s", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
			break;

		case HTTP_UPDATE_NO_UPDATES:
			USE_SERIAL.println("HTTP_UPDATE_NO_UPDATES");
			break;

		case HTTP_UPDATE_OK:
			USE_SERIAL.println("HTTP_UPDATE_OK");
			break;
		}
		if (ret == HTTP_UPDATE_OK) {

			
		}
		SPIFFS.begin(false);
		listDir(SPIFFS, "/", 0);
		Serial.println("Used Bytes: " + String(SPIFFS.usedBytes()));
	}
	delay(20000);
}

I added debug messages in your library and the Updater.cpp file to try to understand what is happening.
Here is the debug I get form the serial port:

Opening port
Port open
ets Jun 8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371
ets Jun 8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_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:1
load:0x3fff0018,len:4
load:0x3fff001c,len:956
load:0x40078000,len:0
load:0x40078000,len:13076
entry 0x40078ad0

Partition type: 1
Partition subtype: 130
Partition size: 1503232
Partition address: 2691072
Partition label: spiffs
Partition encrypted: [D][WiFiGeneric.cpp:265] _eventCallback(): Event: 2 - STA_START
0
Task watchdog got triggered. The following tasks did not reset the watchdog in time:

  • IDLE (CPU 0)
    Tasks currently running:
    CPU 0: ipc0
    CPU 1: IDLE
    Task watchdog got triggered. The following tasks did not reset the watchdog in time:
  • IDLE (CPU 0)
    Tasks currently running:
    CPU 0: ipc0
    CPU 1: IDLE
    Used Bytes: 0
    Listing directory: /
    [D][WiFiGeneric.cpp:265] _eventCallback(): Event: 4 - STA_CONNECTED
    [D][WiFiGeneric.cpp:265] _eventCallback(): Event: 7 - STA_GOT_IP
    Update SPIFFS...
    [V][HTTPClient.cpp:140] beginInternal(): url: http://random-server/update_TFT.php
    [D][HTTPClient.cpp:181] beginInternal(): host: random-server port: 80 url: /update_TFT.php
    [D][HTTPClient.cpp:850] connect(): connected to random-server:80
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'HTTP/1.0 200 OK'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'X-Powered-By: PHP/7.0.27'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Content-Type: application/octet-stream'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Content-Disposition: attachment; filename=Test_TFT.txt'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'x-MD5: f60ce1060c117036ec9aabaa45c3b129'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Content-Length: 186128'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Date: Wed, 28 Feb 2018 14:50:33 GMT'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Accept-Ranges: bytes'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Server: LiteSpeed'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Connection: close'
    [V][HTTPClient.cpp:938] handleHeaderResponse(): RX: ''
    [D][HTTPClient.cpp:968] handleHeaderResponse(): code: 200
    [D][HTTPClient.cpp:971] handleHeaderResponse(): size: 186128
    Starting SPIFFS Update
    Starting tcp
    runUpdate spiffs...
    begin update
    Partition type: 1
    Partition subtype: 130
    Partition size: 1503232
    Partition address: 2691072
    Partition label: spiffs
    Partition encrypted: 0
    check md5
    writting stream
    ending update
    [V][HTTPClient.cpp:244] end(): tcp is closed
    [V][HTTPClient.cpp:244] end(): tcp is closed
    HTTP_UPDATE_OK
    E (36611) SPIFFS: mount failed, -10025
    [E][SPIFFS.cpp:47] begin(): Mounting SPIFFS failed! Error: -1
    Listing directory: /
    [E][vfs_api.cpp:22] open(): File system is not mounted
    Failed to open directory
    Used Bytes: 0

It looks like I can not mount the SPIFFS without reformatting. I tried to mount it before the update and leave it mounted, but it seems nothing is written. And I tried to un-mount it before doing the OTA update. But I then need to reformat to mount it again which would erase any file that would have been written during the OTA update.

Any help would be most welcome!

Code crashes at httpUpdate

Hardware:

Board: ESP32 Dev Module
Core Installation/update date: 11/jul/2017
IDE name: Arduino IDE
Flash Frequency: 40Mhz
PSRAM enabled: no
Upload Speed: 115200
Computer OS: Windows 10

Description:

Describe your problem here
I am trying to integrate http OTA update feature in the ESP32 WROOM board. My code has been perfect uptil now. However, as soon as I add the line for the http, the code crashes at runtime right at the httpUpdate line. The error code shows it is causing some problem with the httpClient code. However, I am not able to debug it.
I was able to reproduce the error with the below sketch.

Sketch: (leave the backquotes for code formatting)

/**
   httpUpdate.ino

    Created on: 27.11.2015

*/

#include <Arduino.h>

#include <WiFiMulti.h>

#include <HTTPClient.h>
#include <ESP32httpUpdate.h>

#define FIRMWARE_UPDATE_VERSION "2001"

String updateURL = "XYZ.php";

WiFiMulti wifiMulti;
WiFiClientSecure client;


void setup() {

  Serial.begin(115200);
  // Serial.setDebugOutput(true);

  Serial.println();
  Serial.println();
  Serial.println();

//  for (uint8_t t = 4; t > 0; t--) {
//    Serial.printf("[SETUP] WAIT %d...\n", t);
//    Serial.flush();
//    delay(1000);
//  }

  WiFi.begin("xxxxxxxxxx", "xxxxxxxxxx");
}

void loop() {

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("");
    Serial.println("WiFi connected.");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
  }
  // wait for WiFi connection
  if ((WiFi.status() == WL_CONNECTED)) {

    t_httpUpdate_return ret1 = ESPhttpUpdate.update(updateURL, FIRMWARE_UPDATE_VERSION);

    switch (ret1) {
      case HTTP_UPDATE_FAILED:
        Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
        break;

      case HTTP_UPDATE_NO_UPDATES:
        Serial.println("HTTP_UPDATE_NO_UPDATES");
        break;

      case HTTP_UPDATE_OK:
        Serial.println("HTTP_UPDATE_OK");
        break;
    }
  }
}

Debug Messages:


PC: 0x400d3eb0: HTTPClient::connect() at C:\Users\Steiner\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2-rc1\libraries\HTTPClient\src\HTTPClient.cpp line 959
EXCVADDR: 0x00000000

Decoding stack results
0x400d3eb0: HTTPClient::connect() at C:\Users\Steiner\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2-rc1\libraries\HTTPClient\src\HTTPClient.cpp line 959
0x400d3f3d: HTTPClient::sendRequest(char const*, unsigned char*, unsigned int) at C:\Users\Steiner\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2-rc1\libraries\HTTPClient\src\HTTPClient.cpp line 512
0x400d3ffb: HTTPClient::GET() at C:\Users\Steiner\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2-rc1\libraries\HTTPClient\src\HTTPClient.cpp line 458
0x400d4ebb: ESP32HTTPUpdate::handleUpdate(HTTPClient&, String const&, bool) (C:\Program Files at x86)\Arduino\libraries\esp32-http-update-master\src\ESP32httpUpdate.cpp line 199
0x400d509b: ESP32HTTPUpdate::update(String const&, String const&) (C:\Program Files at x86)\Arduino\libraries\esp32-http-update-master\src\ESP32httpUpdate.cpp line 48
0x400d1def: loop() at C:\Users\Steiner\AppData\Local\Temp\arduino_modified_sketch_277684/httpUpdate.ino line 63
0x400d793d: loopTask(void*) at C:\Users\Steiner\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2-rc1\cores\esp32\main.cpp line 25
0x4008ef29: vPortTaskWrapper at /Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/freertos/port.c line 143

HTTP_UPDATE_FAILD Error (6): Update error: Stream Read Timeout

Hi, i am getting this error:

HTTP_UPDATE_FAILD Error (6): Update error: Stream Read Timeout[V][HTTPClient.cpp:140] beginInternal(): url: http://xxx.xx.xxx.xxx:5555/firmware.bin
[D][HTTPClient.cpp:181] beginInternal(): host: xxx.xx.xxx.xxx port: 5555 url: /firmware.bin
[D][HTTPClient.cpp:850] connect(): connected to xxx.xx.xxx.xxx:5555
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'HTTP/1.1 200 OK'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Server: nginx/1.10.3'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Date: Tue, 13 Nov 2018 18:46:56 GMT'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Content-Type: application/octet-stream'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Content-Length: 851648'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Last-Modified: Tue, 13 Nov 2018 18:46:35 GMT'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Connection: close'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'ETag: "5beb1c0b-cfec0"'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Accept-Ranges: bytes'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: ''
[D][HTTPClient.cpp:968] handleHeaderResponse(): code: 200
[D][HTTPClient.cpp:971] handleHeaderResponse(): size: 851648
[D][Updater.cpp:129] begin(): OTA Partition: app1
[D][HTTPClient.cpp:240] end(): tcp stop
HTTP_UPDATE_FAILD Error (6): Update error: Stream Read Timeout[V][HTTPClient.cpp:140] beginInternal(): url: http://xxx.xx.xxx.xxx:5555/firmware.bin
[D][HTTPClient.cpp:181] beginInternal(): host: xxx.xx.xxx.xxx port: 5555 url: /firmware.bin
[D][HTTPClient.cpp:850] connect(): connected to xxx.xx.xxx.xxx:5555
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'HTTP/1.1 200 OK'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Server: nginx/1.10.3'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Date: Tue, 13 Nov 2018 18:47:00 GMT'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Content-Type: application/octet-stream'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Content-Length: 851648'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Last-Modified: Tue, 13 Nov 2018 18:46:35 GMT'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Connection: close'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'ETag: "5beb1c0b-cfec0"'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: 'Accept-Ranges: bytes'
[V][HTTPClient.cpp:938] handleHeaderResponse(): RX: ''
[D][HTTPClient.cpp:968] handleHeaderResponse(): code: 200
[D][HTTPClient.cpp:971] handleHeaderResponse(): size: 851648
[D][Updater.cpp:129] begin(): OTA Partition: app1
[D][HTTPClient.cpp:240] end(): tcp stop

can anybody help me please?

I am using ESP32 with 16MByte flash memory with Arduino IDE set to "Minimal SPIFFS (Large apps with OTA"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.