On this page
Overview
Raspberry Pi Pico SDK supplies headers, libraries, and a CMake build system for C, C++, and assembly firmware targeting RP-series microcontrollers such as Pico and Pico 2. Programs use a conventional main() while the SDK covers PIO, timers, synchronization, networking, USB, and multicore features.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Bring the main workload into one foundation
C-level APIs expose RP-series peripherals including PIO without requiring applications to look up register addresses, while fully commented register definitions remain available for low-level control.
Higher-level libraries cover timers, synchronization, Pico W networking, USB, and multicore programming, supporting projects from small firmware to runtimes and bootrom code.
Sources: [1]
Best fit
Where it fits
It fits embedded projects that need an official C/C++ path for Pico or Pico 2, including board selection, hardware access, and ELF/UF2 build outputs.
Sources: [1]
Before adoption
Constraints to check before adoption
The terse command-line path targets Linux and requires CMake 3.13+, Python 3, a native compiler, and an Arm GCC cross-compiler. Other boards require PICO_BOARD, and RP2350 RISC-V uses a separate toolchain and environment settings. The fixed-commit LICENSE.TXT carries BSD-3-Clause terms.
Official sources
- [1]Raspberry Pi Pico SDK README at reviewed commit(2026-10-04)
- [2]Raspberry Pi Pico SDK license at reviewed commit(2026-10-04)
- [3]Raspberry Pi Pico SDK reviewed build or package metadata(2026-10-04)
Supplemental curator note
This is the official C/C++ foundation for RP-series devices. Start with the pico-examples hello_world target for the intended board and verify the generated ELF/UF2 files and toolchain requirements.
Try it in 3 steps
- 1
Clone the reviewed SDK commit
Pin the reviewed SDK commit and initialize its library submodules.
git clone https://github.com/raspberrypi/pico-sdk.git && git -C pico-sdk checkout 079c6f39023649b154152db30f1d781e884879bc && git -C pico-sdk submodule update --init - 2
Configure the reviewed official examples
Change PICO_BOARD to pico2, pico_w, or another supported board when appropriate.
git clone https://github.com/raspberrypi/pico-examples.git && git -C pico-examples checkout 0d62f75bafc2c8120d3276c3343d1a9195e909e9 && PICO_SDK_PATH="$PWD/pico-sdk" cmake -S pico-examples -B pico-examples/build -DPICO_BOARD=pico - 3
Build hello_serial
Build the serial hello-world target and produce its ELF and UF2 outputs.
cmake --build pico-examples/build --target hello_serial
Growth
Growth trends · Last 30 days
4,986 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 5
- Open PRs
- 77
Development activity is still being collected.
Built with
Categories and tags
Categories
Tags
GitHub data
GitHub dataView detailed GitHub data
- Stars
- 4,986
- Forks
- 1,287
- Watchers
- 118
- Open issues
- 246
- Contributors
- 263
- Owner type
- Organization
- Primary language
- C
- License
- BSD-3-Clause
- Repository last updated
- Oct 1, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- libsodium13,973 Stars
1 shared tag(s) · Same language
A portable cryptography library for encryption, signatures, and password hashing through approachable APIs
C - SoftEther VPN13,607 Stars
1 shared tag(s) · Same language
Terminate SSL-VPN, WireGuard, OpenVPN, IPsec, L2TP, SSTP, and other protocols on one cross-platform VPN server
C - Raspberry Pi Linux Kernel13,217 Stars
1 shared tag(s) · Same language
a downstream kernel tree carrying Raspberry Pi-specific hardware support
C - ESP-IDF19,148 Stars
1 shared tag(s) · 1 shared category(s) · Same language
develop Espressif SoC firmware with an official framework integrating FreeRTOS, drivers, networking, security, and build tooling
C - Arduino AVR Boards Core1,507 Stars
1 shared tag(s) · 1 shared category(s) · Same language
provide Arduino APIs, board definitions, and compile/upload recipes for AVR boards such as Uno and Mega
C - Linux kernel251,023 Stars
1 shared tag(s) · Same language
Manage CPUs, memory, processes, filesystems, networking, and devices while exposing system calls to userspace
C
Report incorrect information
Tell us if any listing information is incorrect or outdated.