Skip to content
On this page

Getting started with the Raspberry Pi Pico

Applies to: the plain Raspberry Pi Pico (first generation, RP2040, no wireless). Pico H (pre-soldered headers) behaves identically; Pico W adds wireless and is out of scope here.

The identity check

The plain Pico is a first-generation board: RP2040, 2 MB flash, micro-USB, castellated DIP. If your board says Pico 2, use the Pico 2 getting-started guide — same BOOTSEL mechanics, but a different volume name (RP2350), firmware file (RPI_PICO2) and build target (PICO_BOARD=pico2).

Pick a language first

Raspberry Pi supports two official paths, and the choice changes which file you drag onto the board:

PathYou dragYou get
MicroPythona MicroPython .uf2 from micropython.organ interpreter; you write Python over USB serial (REPL)
C/C++ SDKyour own compiled .uf2a bare-metal binary; no interpreter on the board

Neither is “the beginner one” officially — MicroPython needs no toolchain, C/C++ needs CMake + the Arm cross-compiler installed before you write a line of code.

MicroPython: drag, drop, REPL

From the official drag-and-drop guide:

  1. Push and hold BOOTSEL, connect USB to the computer, release BOOTSEL when the board appears as a mass-storage device called RPI-RP2.
  2. Drag the Pico MicroPython UF2 onto that volume. The Pico reboots — you are now running MicroPython.
  3. Access the REPL through USB serial (the official book walks both the command line and the Thonny IDE).

Expected: a drive literally named RPI-RP2 appears and disappears after the drag (that reboot is success, not a failure). If nothing appears at all, see USB board not detected.

C/C++ SDK: toolchain, then a UF2 you build

The official quick-start is deliberately terse and Linux-based; summarized faithfully:

  1. Install CMake (≥ 3.13) and the Arm cross-compiler (gcc-arm-none-eabi and its libraries).
  2. git clone https://github.com/raspberrypi/pico-sdk.git and set PICO_SDK_PATH (environment or -DPICO_SDK_PATH= to CMake).
  3. Copy external/pico_sdk_import.cmake from the SDK into your project; include() it before project() in CMakeLists.txt, call pico_sdk_init().
  4. Build a hello_world (single .c, link pico_stdlib, pico_add_extra_outputs produces the UF2), then drag that UF2 over BOOTSEL exactly like the MicroPython file.

Expected: the build emits a .uf2 next to the ELF; stdout defaults to UART — setup_default_uart() prints over GPIO0/1, not USB, unless you use the USB example. For Windows/macOS detail steps the official books are the source of truth, not this page.

What this page cannot tell you

  • We did not run these steps on hardware here. The flow is transcribed from the pinned official documents below; no MCUID device bring-up receipt exists for it.
  • Which MicroPython build you got — the download links track the latest release; this page does not pin a MicroPython version number.
  • Pico W wireless setup — a separate official connectivity document covers it.

Sources