The Raspberry Pi Pico 2 W features 26 accessible multi-function GPIOs (GP0–GP22, GP26–GP28), 3 dedicated ADC channels, and 4 hardware-reserved pins dedicated to the onboard Infineon CYW43439 WiFi/Bluetooth module. Unlike the original Pico W based on the RP2040, the Pico 2 W utilizes the dual-core RP2350 (Arm Cortex-M33 / RISC-V), which introduces new power-routing behaviors and expanded peripheral mappings. Below is the direct reference you need to wire your next project without shorting the wireless SPI bus or frying the ADC.

The Complete Raspberry Pi Pico 2 W Pinout Reference Table

This table maps the logical GPIO names used in the C/C++ SDK and MicroPython to their primary and alternate functions. Physical pin numbers (1-40) follow the standard DIP footprint, starting from the bottom-left square pad when the micro-USB port is facing upward.

Logical Pin Primary Function Alternate / Peripheral Functions W-Module Status
GP0 - GP3General I/OUART0, I2C0, SPI0, PWMAvailable
GP4 - GP5General I/OI2C0 (SDA/SCL default), SPI0Available
GP6 - GP9General I/OI2C1, SPI0, UART1, PWMAvailable
GP10 - GP13General I/OSPI1 (default mapping), UART1Available
GP14 - GP15General I/OI2C1, SPI1, PWMAvailable
GP16 - GP19General I/OSPI0 (alternate), UART0, I2C0Available
GP20 - GP22General I/OI2C0, SPI0, PWMAvailable
GP23Wireless ControlWL_ON (Wireless chip enable)Reserved
GP24Wireless SPISPI MISO to CYW43439Reserved
GP25Wireless SPISPI CSn to CYW43439Reserved
GP26 (ADC0)Analog / GPIOI2C1 SDA, SPI1 SCKAvailable
GP27 (ADC1)Analog / GPIOI2C1 SCL, SPI1 TXAvailable
GP28 (ADC2)Analog / GPIOSPI1 RX, PWMAvailable
GP29 (ADC3)Wireless VREFADC3 / WL_VREF (1.1V nominal)Reserved
Power & System Pins: VBUS (Pin 40) provides raw USB 5V. VSYS (Pin 39) is the main system input (1.8V–5.5V). 3V3(OUT) (Pin 36) is the regulated output from the RT6154 buck-boost. GND is distributed across pins 3, 8, 13, 18, 23, 28, 33, and 38.

Reserved Pins and 'Rows People Get Wrong'

When migrating from the standard Pico 2 or the older Pico 1 W, developers consistently trip over three specific hardware traps on the Pico 2 W.

1. The GP29 / ADC3 VREF Trap

On a standard Pico 2, GP29 functions as ADC3. On the Pico 2 W, GP29 is hardwired to the CYW43439 wireless chip's internal voltage reference. If you attempt to read an external analog sensor on GP29, your readings will clamp around 1.1V to 1.2V regardless of the actual input voltage. Rule: Never use GP29 for external analog inputs on the W variant; stick to GP26, GP27, and GP28.

2. The Onboard LED is Not a Standard GPIO

On the original non-W Pico, the green LED was on GP25. On both the Pico 1 W and Pico 2 W, the LED is physically routed through the Infineon wireless chip (WL_GPIO0), not the main RP2350. You cannot toggle it with a standard machine.Pin(25) call in MicroPython. You must initialize the wireless driver first:

import network
import machine
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# Toggle LED via the cyw43 driver wrapper
wlan.active(True) # LED usually blinks during active WiFi

3. Backfeeding VSYS vs VBUS

If you are powering the Pico 2 W from an external 5V battery while simultaneously plugging in USB for serial debugging, do not wire 5V into VSYS. The board lacks an ideal diode between VBUS and VSYS. Backfeeding 5V into VSYS while USB is connected will cause current to flow backward through the RT6154 regulator, potentially destroying it. Always use VBUS if you want the board to OR the USB and external power safely via the onboard Schottky diode.

Identifying Pins When Silk Screen Markings Are Faded or Missing

In harsh environments or after rework, the white silk screen on the Pico 2 W can wear off. If you need to identify pins safely without guessing:

  1. Locate Pin 1: Hold the board with the micro-USB port pointing away from you (up). Pin 1 is the bottom-left corner. It is physically distinct: it has a square copper pad instead of the circular plated through-holes used for all other pins.
  2. Verify Grounds: Set your multimeter to continuity mode. Probe the outer metal shield of the micro-USB port (this is tied to system GND). Pins 3, 8, 13, 18, 23, 28, 33, and 38 should all beep continuous.
  3. Identify 3V3(OUT): With the board powered via USB, measure DC voltage relative to the USB shield. Pin 36 (right side, 5th pin down from the top) will read exactly 3.28V to 3.32V.
  4. Find the Reserved SPI Bus: If you need to confirm the wireless SPI lines, GP24 and GP25 will show a slight forward-bias diode drop (approx 0.4V to 0.6V) when measured from GND with the red probe on the pin, due to the ESD protection diodes on the Infineon chip inputs.

Regional Module Variants and SDK Naming Standards

While the physical copper pinout of the Pico 2 W is identical globally, the internal RF module and software standards vary by region and framework.

Hardware Regulatory Variants

Raspberry Pi manufactures the Pico 2 W with region-specific RF certifications to comply with local spectrum laws. You may see different markings on the metal RF can:

  • FCC / IC: US and Canada. Firmware defaults to FCC transmit power limits.
  • CE / UKCA: Europe and UK. ETSI power limits apply.
  • MIC / SRRC: Japan and China. Specific channel restrictions apply (e.g., channels 12-13 behavior).

Practical Impact: The pinout does not change, but you must set the correct country code in your firmware (e.g., wlan.config(country='US') in MicroPython) to unlock the correct WiFi channels and legally comply with local RF emission standards.

Framework Naming Standards (C SDK vs MicroPython)

The RP2350 introduces a new Hardware Abstraction Layer (HAL). When referencing pinouts in code:

  • Pico C/C++ SDK: Uses raw integer definitions. #define LED_PIN CYW43_WL_GPIO_LED_PIN. I2C0 SDA is explicitly mapped via i2c_init(i2c0, 100 * 1000) followed by gpio_set_function(4, GPIO_FUNC_I2C).
  • MicroPython: Uses string or integer aliases. machine.Pin('LED') automatically resolves to the wireless chip's LED pin on the W variant. I2C is initialized as machine.I2C(0, sda=machine.Pin(4), scl=machine.Pin(5)).

Decision Path: Which Interface and Pins Should You Use?

Use this decision tree to select the optimal pins for your peripheral. This terminates in concrete pin picks based on the RP2350's internal PIO and peripheral routing matrices, minimizing trace crossovers on your custom PCB or breadboard.

If your project needs... Then choose this interface... Concrete Pin Pick (GP#) Why this is the optimal pick
I2C Sensors (BME280, MPU6050) I2C0 (Default) GP4 (SDA), GP5 (SCL) Matches the default silicon routing for I2C0; avoids internal pinmux swapping.
SPI Display (ILI9341, ST7789) SPI1 (Default) GP10 (SCK), GP11 (TX), GP12 (RX), GP13 (CS) Leaves SPI0 (GP16-19) free for high-speed DMA or secondary storage.
UART GPS / Cellular Modem UART0 (Default) GP0 (TX), GP1 (RX) Standard debug/primary UART mapping; hardware flow control available on GP2/GP3.
High-Freq PWM (Motor Control) PWM Slice 0-3 GP0-GP7 Maps cleanly to PWM slices 0-3 without overlapping the ADC or wireless SPI pins.
Analog Voltage Reading ADC0, ADC1, ADC2 GP26, GP27, GP28 Dedicated ADC channels. Never use GP29 on the W variant.
Custom Protocol (WS2812B LEDs) PIO (Programmable I/O) GP14 or GP15 Keeps PIO state machines isolated from standard hardware SPI/I2C buses.
Safety & RF Interference Note: When routing wires to GP26-GP28 (ADC), keep them physically separated from the top-right corner of the Pico 2 W where the Infineon CYW43439 antenna is located. High-frequency WiFi transmission bursts can induce microvolt-level noise on high-impedance analog traces, degrading your ADC effective number of bits (ENOB). Use twisted-pair wiring for analog sensors and ensure a solid common ground.

For the most current silicon errata and absolute maximum ratings, always cross-reference your physical board revision with the official Raspberry Pi Pico 2 documentation and the MicroPython RP2 quick reference.