Raspberry Pi Pico2 W - Wifi fails to start if CPU is overclocked #17251
Replies: 5 comments
-
Have you tested against Pico SDK 2.1.1? It has stability fixes for WiFi which might also work here. There's a branch with it bumped (and the small required fix to CMakeLists) here: https://github.com/dpgeorge/micropython/tree/lib-pico-sdk-211 It should probably go without saying; but nothing is guaranteed when you overclock. It's not a MicroPython limitation specifically but the hardware- and thus the SDK on which the Pico port relies- isn't officially supported at anything but the stock clock. MicroPython kinda leaves the guardrails off a bit here and lets you discover your own board's limits, but aiui does not attempt to make any guarantees about overclocking. There is, iirc, also a lower limit at which WiFi breaks down. The CYW43 driver is... spicy. |
Beta Was this translation helpful? Give feedback.
-
I tried out the fork you linked, but I'm still seeing the same |
Beta Was this translation helpful? Give feedback.
-
It’s probably just pushing the CYW43 bus clock out of range then. It might be possible to fix this in MicroPython by proportionally raising the clock divider. IE: the opposite to what is discussed here: raspberrypi/pico-sdk#1392 It’s not a function that is currently exposed, but as part of RM2 support maybe it could be added to the hypothetical CYW43 driver module mentioned here: #16057 (comment) Though it would perhaps make sense for overclocking using “machine.freq()” to take care of this. |
Beta Was this translation helpful? Give feedback.
-
Good news: the new |
Beta Was this translation helpful? Give feedback.
-
This is probably a timing issue, and no bug in micropython. Please close this bug. |
Beta Was this translation helpful? Give feedback.
-
Port, board and/or hardware
RPI_PICO_2_W
MicroPython version
MicroPython v1.25.0-preview.307.g4364d9411 on 2025-02-23; Raspberry Pi Pico 2 W with RP2350
Reproduction
Save the following code onto the Pico 2 W and run it with either
CPU_FREQ = 300_000_000
orCPU_FREQ = 150_000_000
uncommented.When using the overclocked frequency, the following error is printed and the access point is not available to connect to:
[CYW43] Failed to start CYW43
When using the default frequency the access point can be connected to and no errors are printed
[CYW43] Failed to start CYW43
Expected behaviour
WiFi should work if the CPU is overclocked
Observed behaviour
When the CPU is overclocked, the wireless card firmware does not appear to initialize correctly:
Additional Information
My testing setup has 2 I2C devices connected: an OLED display GP0 & GP1 and a battery-backed realtime clock on GP2 & GP3. The code above does not initialize these devices, so I don't think their presence should have any impact; it looks like simply changing the CPU frequency is enough.
Doing a little trial-and-error changing the frequencies in the script above it looks like 270MHz is the upper limit of what the wifi can handle. Is this a known limitation of the firmware?
Code of Conduct
Yes, I agree
Beta Was this translation helpful? Give feedback.
All reactions