Skip to content

Second call to WiFi.begin() + ArduinoOTA running seems to block forever on RP2040 #3157

@ledereyes

Description

@ledereyes

Hi, I am trying to implement proper WiFi reconnect handling, but it seems the second time I am calling WiFi.begin it blocks forever. This is my logic called from loop:

  if (!WiFi.isConnected())
  {
    Serial.println("connection lost");
    if (WiFi.begin(ssid, pass) != WL_CONNECTED) // seems to block forever
    {
      Serial.println("wifi reconnect failed");
    }
    else
    {
      Serial.println("wifi reconnect success");
    }
  }

I am triggering the disconnect by powering off and on my router. The last message I get over Serial is "connection lost" which makes me believe that WiFi.being blocks.
What I tried so far:

  1. Using the async version WiFi.beginNoBlock but it also never returns.
  2. Adding various delays here and there.
  3. Calling WiFi.disconnect and WiFi.end before the reconnect.
  4. An RP2350

These are my versions:

[env:rpipicow]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git#a4b555a5f29961fd76e278b3c5ba56f0067207d0
framework = arduino
board_build.core = earlephilhower
board_build.filesystem_size = 0.5m
board = rpipicow

Thanks for any help on the issue!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions