Pico 2: getting started with the RP2350 and MicroPython
Flash MicroPython to a Raspberry Pi Pico 2 (RP2350), connect over the REPL, and see what's new vs the original Pico. The 20-minute Pico 2 setup.
The Pico 2 is the new Raspberry Pi microcontroller, and it landed in 2024 with the usual promise: same price, same form factor, way more headroom. The chip inside (the RP2350) is what changed. Dual-core, a Cortex-M33, a RISC-V option, 520 KB of SRAM, and a hardware video output the original Pico never had.
If you already set up the original Pico (the RP2040), most of this is the same 20 minutes. The part that is different is the chip and the firmware file you flash. Get that wrong and the Pico 2 will sit there doing nothing, which is the trap I want to save you.
This tutorial gets MicroPython installed on the Pico 2 and runs a blink sketch in about 20 minutes. I will cover what is new on the RP2350, the dual-core decision (you do not have to make it for this tutorial), the firmware filename you need, and the one Thonny setting that catches people.
What is new on the RP2350
The original Pico ran a pair of Cortex-M0+ cores at 133 MHz. The Pico 2 swaps that for two Cortex-M33 cores at 150 MHz, and the M33 cores can also run as RISC-V Hazard3 cores if you ask for it at boot (e.g. by setting a flag in the image header). For almost everyone, the Cortex-M33 is the default and the thing you want. RISC-V on the same chip is a “nice to have” for people who care about ISA diversity, not a reason to buy a Pico 2.
The other big jumps:
- 520 KB of SRAM (vs 264 KB on the RP2040). You stop hitting the RAM ceiling on anything that uses a framebuffer or a TLS stack.
- HSTX, which is a high-speed serial transmitter. The Pico 2 can drive a DVI display at 640x480p60. The original Pico could not do video at all without bitbanging. I have a separate tutorial on this.
- TrustZone, which is ARM’s hardware isolation feature. The chip can run a secure world and a non-secure world at the same time, with the secure world holding the boot keys. This matters for production firmware and not at all for blinking an LED.
The pinout is identical to the original Pico. Same labels, same GPIO numbers, same I2C, same SPI, same UART. If you wired a sensor to a Pico, you can move the wires one pin over to a Pico 2 and the code does not change.
The dual-core decision
The RP2350 has two cores, and the original Pico had two cores. You have been able to use both cores on the Pico since 2021. The Pico 2 just gives you stronger cores to run on them.
For this tutorial we ignore the second core. machine.Pin and the REPL all
run on core 0 by default. When you need both cores (e.g. one core running a
DVI display, one core running your game logic), you reach for the _thread
module. The dual-core model on the Pico 2 is the same as on the Pico. Do not
overthink this until you need it.
What you need
- A Raspberry Pi Pico 2 (or Pico 2 W if you want Wi-Fi)
- A USB cable (USB-C, not micro-USB; the Pico 2 dropped micro-USB)
- A computer (Windows, macOS, or Linux)
- Thonny 4.x or newer (older Thonny versions do not know about the Pico 2)
Step 1: download the right MicroPython firmware
Go to https://micropython.org/download/RPI_PICO2/ (or RPI_PICO2_W if you
have the wireless version). Download the latest .uf2 file.
The trap here is the filename. The Pico used RPI_PICO or RPI_PICO_W. The
Pico 2 uses RPI_PICO2 or RPI_PICO2_W. The number is on purpose. If you
flash a RPI_PICO firmware to a Pico 2, the Pico 2 will not boot, because the
firmware is built for the M0+ cores and the Pico 2 has M33 cores. The reverse
also fails: RPI_PICO2 firmware on an original Pico does nothing.
Step 2: flash the firmware
- Hold down the BOOTSEL button on the Pico 2.
- While holding the button, plug in the USB cable.
- Release the button.
The Pico 2 appears as a USB drive called RPI-RP2. Same name as the original
Pico, because the boot ROM is the same protocol.
- Drag the
.uf2file to that drive.
The Pico 2 will reboot and the drive will disappear. The Pico 2 is now running MicroPython.
Step 3: install Thonny
Thonny is the IDE I use for Pico + MicroPython. Download from https://thonny.org/. Make sure you have Thonny 4.x or newer. The earlier 3.x line did not recognize the Pico 2 as a target and would silently connect to nothing.
Open Thonny. Configure the interpreter:
Tools>>Options>>Interpreter- Select
MicroPython (Raspberry Pi Pico)
You should see a >>> prompt in the Shell pane at the bottom. This is the
MicroPython REPL, running on the Pico 2.
If Thonny does not show the REPL, you either have the wrong firmware (the Pico 2 firmware filename issue above) or an old Thonny. Update Thonny first; the firmware is easier to fix than the IDE.
Step 4: blink the onboard LED
Type this at the >>> prompt:
from machine import Pin
import time
led = Pin("LED", Pin.OUT)
while True:
led.toggle()
time.sleep(0.5)
The onboard LED on the Pico 2 should blink at 1 Hz. Press Ctrl+C in the
Shell to stop the script.
The "LED" string is the same on the Pico 2 as on the original Pico. The
MicroPython port for the RP2350 maps the onboard LED to the same string name.
Most of the machine module looks identical to the RP2040 port. A few module
names differ (HSTX, TrustZone, the second core), and those are the ones we
cover in the other Pico 2 tutorials.
What you learned
The Pico 2 is a drop-in upgrade for the original Pico. Same pinout, same MicroPython REPL, same Thonny workflow, same LED name. The differences are:
- The chip is faster (150 MHz Cortex-M33 vs 133 MHz Cortex-M0+)
- The chip has more RAM (520 KB vs 264 KB)
- The firmware filename ends in
RPI_PICO2notRPI_PICO - The board uses USB-C, not micro-USB
For 95% of Pico projects, you move the wires, reflash, and keep going. The new RP2350 features (HSTX, TrustZone, dual-core, RISC-V) are available when you need them, and invisible when you do not.
When something breaks
- The Pico 2 does not appear as
RPI-RP2. Your USB cable is probably a power-only cable. Try a different cable. - The drive appears but the flash does nothing. You dragged the wrong
firmware file. Make sure the filename ends in
RPI_PICO2orRPI_PICO2_W. - Thonny connects but the REPL is empty. You are on Thonny 3.x. Update to 4.x or newer.
- The LED does not blink but there is no error. Make sure you typed the
Pin("LED", Pin.OUT)line and pressed Enter.Pin.OUTis uppercase. - You flashed the firmware but the Pico 2 still shows up as a drive. The flash failed. Hold BOOTSEL, unplug, replug, and try again.
What to build next
- The Pico 2 HSTX tutorial: drive a DVI display at 640x480p60 from the same board you just blinked an LED on. The HSTX peripheral is the headline feature of the RP2350.
- The Pico 2 PIO improvements tutorial: same PIO language, new debugging features and larger FIFOs. If you have written PIO before, most of your code just works.
- The Pico 2 TrustZone tutorial: signed boot, secure vs non-secure worlds. Only relevant if you are shipping a product and need the boot key story.
- The Pico MicroPython SDK book (companion) bundles these four tutorials with the original Pico content in one place.
(these are sample tutorials written for Brian to review on his return. They will not be promoted to “ready” status without his approval.)