2

I was trying to use nodemcu for a project. No issues when uploading the OTA sample code. Added led blink to test. But when trying to upload the second sketch via OTA getting an error

no response from device.

Tried ping to the Nodemcu IP and no issue there. Have the OTA codes in both sketch. When trying to upload the 2nd second, the led blink will stop for 2,3 seconds and resumes the normal blinking, gets an error in ide after.

How to check if there is any firewall issue?

IDE settings

enter image description here

Attaching code below

const char* ssid = STASSID;
const char* password = STAPSK;

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // Port defaults to 8266
  // ArduinoOTA.setPort(8266);

  // Hostname defaults to esp8266-[ChipID]
  // ArduinoOTA.setHostname("myesp8266");

  // No authentication by default
  // ArduinoOTA.setPassword("admin");

  // Password can be set with it's md5 value as well
  // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
  // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");

  ArduinoOTA.onStart([]() {
    String type;
    if (ArduinoOTA.getCommand() == U_FLASH) {
      type = "sketch";
    } else { // U_FS
      type = "filesystem";
    }

    // NOTE: if updating FS this would be the place to unmount FS using FS.end()
    Serial.println("Start updating " + type);
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("\nEnd");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Error[%u]: ", error);
    if (error == OTA_AUTH_ERROR) {
      Serial.println("Auth Failed");
    } else if (error == OTA_BEGIN_ERROR) {
      Serial.println("Begin Failed");
    } else if (error == OTA_CONNECT_ERROR) {
      Serial.println("Connect Failed");
    } else if (error == OTA_RECEIVE_ERROR) {
      Serial.println("Receive Failed");
    } else if (error == OTA_END_ERROR) {
      Serial.println("End Failed");
    }
  });
  ArduinoOTA.begin();
  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  ArduinoOTA.handle();
  
  digitalWrite(LED_BUILTIN, LOW);   // Turn the LED on (Note that LOW is the voltage level
  delay(100);                      // Wait for a second
  digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
  delay(100);  
  
  Serial.println("Looping");
}
9
  • 1
    Are you calling ArduinoOTA.handle() fast enough in your sketch? Please show your code.
    – Majenko
    Nov 27 '20 at 16:18
  • Hi, added the code I am using.
    – Anandu v t
    Nov 28 '20 at 14:01
  • I suspect it's those delay() calls that are making it time out. You need to learn to write non-blocking code. Examine BlinkWithoutDelay.ino.
    – Majenko
    Nov 28 '20 at 14:15
  • 1
    Tried the BlinkWithoutDelay code, still getting the same error.
    – Anandu v t
    Nov 28 '20 at 14:40
  • You mean you compiled and manually uploaded the code over USB and then found it still wouldn't upload over OTA after that?
    – Majenko
    Nov 28 '20 at 14:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.