Connection diagnostics / No board files changed

Get connected. Keep the working setup.

Separate the three paths—USB serial REPL, the dedicated debugger transport and optional wireless WebREPL—before changing firmware or boot scripts. They fail for different reasons.

Start with the connection you need

01

USB serial REPL

Python shell, upload/download and normal script execution. No Wi-Fi or debugger firmware required for compatible boards.

03

WebREPL over Wi-Fi

Optional TCP/WebSocket service on port 8266. Its availability does not determine whether USB REPL and debugging work.

USB shell not opening

01

Check the cable and COM port

Use a data-capable USB cable. Confirm your board appears in Windows Device Manager or as a serial device on macOS/Linux, then choose the board's REPL port in Studio. Different CDC interfaces may appear as separate ports.

02

Avoid two programs owning one port

Close another serial terminal or flasher using the same COM port. If a tool has locked USB, close that tool before retrying. Do not delete boot.py or the debugger to solve a routine port-busy error.

03

Prove the REPL works before debugging

Open MicroPython: Open Device Shell. At the >>> prompt run print(1 + 1); expected result is 2. Only then test upload or debugging.

Separate USB ports: On stable Pico W debugger firmware, CDC0 carries REPL/files and CDC1 carries the debugger. On ESP32-S3 preview hardware the physical connectors/transport differ. Always follow the matching firmware instructions.

WebREPL: can Studio reach the board?

A printed “WebREPL server started” message proves startup was attempted, not that this PC can reach it now. WebREPL is optional and need not start on every boot.

01

Check current board Wi-Fi and IP in USB REPL

These commands read status and do not write to the board's filesystem:

import network
sta = network.WLAN(network.STA_IF)
print("Connected:", sta.isconnected())
print("IP:", sta.ifconfig()[0])

If Wi-Fi is disconnected, follow your board's own Wi-Fi setup; don't assume an old IP address is still valid.

02

Confirm WebREPL is enabled on the board

Use Studio's Wi-Fi Manager or the board's existing configuration. In firmware that supports it, import webrepl makes the module available; it does not by itself start the server. An appropriate webrepl.start(...) call may be needed if no listener is running. Avoid restarting a healthy listener or overwriting user boot.py.

03

Test the TCP port from the computer

On Windows PowerShell, replace the example with the IP printed by the board:

Test-NetConnection <BOARD_IP> -Port 8266

On Linux/macOS with netcat installed:

nc -vz <BOARD_IP> 8266

Successful TCP connection: the service is reachable, but a correct WebREPL password is still needed. Failed TCP connection: investigate stale IP, board Wi-Fi state, routed network connectivity, access-point client isolation or whether a listener is running.

04

Check the PC and board networks

Compare the PC's current IP with the board's. Being on different subnets does not automatically prevent access—routing may exist—but they need a working network path. Joining the same reachable local network can simplify the first test. A failed ping alone does not prove WebREPL is stopped; TCP port 8266 is the relevant test.

Preserve custom boot recovery logic. Some boot.py setups intentionally skip Wi-Fi/WebREPL if USB activity is detected at startup, keeping serial recovery available. Do not remove that safeguard simply to force wireless access. Test in the live USB REPL first and keep a backup before any later boot change.

Debugger connects, but breakpoints or RTA don't behave as expected

01

Verify firmware identity

Stock MicroPython firmware does not include MicroPython Studio's live debugger transport. Check the exact board, firmware image and hardware acceptance status. A GitHub Actions green build is not proof of a working binary on your board.

02

Keep debugger and REPL channels separate

Connect Studio's normal device port to the REPL and use the additional transport required for the debugger. On Pico W's stable dual-CDC image they are different COM ports. On ESP32-S3 preview you may need two cables.

03

Run one small breakpoint test

Use a simple script with a known source line, then test Start Debug → Connect, pause, variables, Continue and disconnect. Only after this passes test RTA On/Off and long-running asynchronous programs.

RTA is not CPU utilisation. Reported observed VM percentages describe measured runtime-segment time share, which can include waiting/sleeping effects. Unresolved code addresses are not automatically a CPU fault.

Frequently asked questions

Do I need WebREPL to use MicroPython Studio?

No. USB serial REPL, file tools and the supported debugger use their own connections. WebREPL is optional wireless access.

Should I delete or overwrite boot.py if WebREPL fails?

No. Existing boot recovery routines may be the reason the USB shell still works. Confirm the board's IP and network route first, then inspect WebREPL configuration without touching flash.

Why do I see two COM ports on my Pico?

Stable Pico W frozen-debugger firmware provides separate USB CDC interfaces for REPL/files and debugging. Select the correct one for each purpose.

Can I flash a Pico W UF2 onto a Pico 2 W?

No. RP2040 and RP2350 targets require their own compatible firmware. Consult the board-specific release matrix.

Is a preview firmware the same as a stable release?

No. Automated test binaries and previews can be useful for hardware experiments but are not substitutes for approved hardware-tested releases.

For bug reports, include your board model, MicroPython/firmware version, OS, port names, Studio version and non-secret logs. Never post Wi-Fi or WebREPL passwords, tokens or private project files.