← index #17661Issue #7139
Related · high · value 2.811
QUERY · ISSUE

Repeatable OSError: Wifi Internal Error in sta_if.connect

openby robtinkersopened 2025-07-11updated 2026-03-15
bugport-esp32

Port, board and/or hardware

ESP32-C3 and S3

MicroPython version

MicroPython v1.25.0 on 2025-04-15; ESP32C3 module with ESP32C3

Reproduction

Power-cycle the board and run the following code (in my case, in Thonny):

import network, time
sta_if = network.WLAN(network.WLAN.IF_STA)
sta_if.active(True)

print('foo')
sta_if.connect("no-such-network", "password")
time.sleep(5)

print('bar')
sta_if.connect("no-such-network", "password")
time.sleep(5)

print('baz')

Expected behaviour

No response

Observed behaviour

foo
bar
Traceback (most recent call last):
  File "<stdin>", line 10, in <module>
OSError: Wifi Internal Error

(where line 10 is the second connect)

I get similar results when the first connect() is a real network with the wrong password, the second connect() is the same wrong network/password as the first, or the second connect() is a real network with the right password.

In fact, the sleep()s don't seem to be required either.

Additional Information

Power-cycling the board before running the test may be required for reproducibility.

Bug also manifests in the latest preview ESP32_GENERIC_C3-20250709-v1.26.0-preview.364.gdf05caea6.bin

and ESP32_GENERIC_S3-SPIRAM_OCT-20250709-v1.26.0-preview.364.gdf05caea6.bin

Unfortunately I don't have other boards to test with right now.

Code of Conduct

Yes, I agree

CANDIDATE · ISSUE

WLAN.connect() behavior has changed

closedby the-stanelyopened 2021-04-20updated 2024-08-27
port-esp32

This problem is specific to esp32-20210418-v1.15.bin.

When preparing WiFi like,

station = network.WLAN(network.STA_IF)
station.active(True)

And then connecting with,

station.connect("mynet", "mypass")

I used to be able to attempt to reconnect by repeating the above statements, regardless if the station is already connected. In this new version, the third -- not second, but third -- time I say,

station.connect("mynet", "mypass")

If the station is already connected, I get this error,

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: Wifi Internal Error

This can be easily tested from REPL.

The workaround for this is to test for a connection, disconnect, and reconnect as in,

if station.isconnected():
    station.disconnect()
station.connect("mynet", "mypass")

If this was intentional, it will likely break a lot of code -- well... at least a lot of my code. :)

But if it's intentional, why error on 3rd and not 2nd time?

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied