The Raspberry Pi Pico W features 26 multifunction GPIO pins (GP0-GP22, GP26-GP28), 3 dedicated ground pins, and specialized power/debug headers, all built around the RP2040 dual-core ARM Cortex-M0+ chip and the Infineon CYW43439 wireless module. Unlike the standard Pico, the W variant routes specific internal pins to control the Wi-Fi and Bluetooth radio, which fundamentally changes how you interact with the onboard LED and power management. Below is the complete physical and logical pinout map.
The Complete Pico W Pinout Reference Table
Read this table with the micro-USB port facing upward. Pin 1 is the top-left pin (GP0), and Pin 40 is the top-right pin (VBUS). This reference aligns with the official Raspberry Pi Pico W Datasheet.
| Phys Pin | Name | Primary Function | Alternate / ADC | Notes & Constraints |
|---|---|---|---|---|
| 1 | GP0 | GPIO / UART0 TX / I2C0 SDA | - | 5V tolerant only via series resistor |
| 2 | GP1 | GPIO / UART0 RX / I2C0 SCL | - | Standard 3.3V logic level |
| 3 | GND | Ground | - | Common ground reference |
| 4 | GP2 | GPIO / I2C1 SDA | - | - |
| 5 | GP3 | GPIO / I2C1 SCL | - | - |
| 6 | GP4 | GPIO / SPI0 RX / UART1 TX | - | - |
| 7 | GP5 | GPIO / SPI0 CSn / UART1 RX | - | - |
| 8 | GND | Ground | - | - |
| 9 | GP6 | GPIO / SPI0 SCK | - | - |
| 10 | GP7 | GPIO / SPI0 TX | - | - |
| 11 | GP8 | GPIO / SPI1 RX / I2C0 SDA | - | - |
| 12 | GP9 | GPIO / SPI1 CSn / I2C0 SCL | - | - |
| 13 | GND | Ground | - | - |
| 14 | GP10 | GPIO / SPI1 SCK | - | - |
| 15 | GP11 | GPIO / SPI1 TX | - | - |
| 16 | GP12 | GPIO / SPI1 RX / I2C1 SDA | - | - |
| 17 | GP13 | GPIO / SPI1 CSn / I2C1 SCL | - | - |
| 18 | GND | Ground | - | - |
| 19 | GP14 | GPIO / SPI1 SCK | - | - |
| 20 | GP15 | GPIO / SPI1 TX | - | - |
| 21 | GP16 | GPIO / SPI0 RX / UART0 TX | - | - |
| 22 | GP17 | GPIO / SPI0 CSn / UART0 RX | - | - |
| 23 | GND | Ground | - | - |
| 24 | GP18 | GPIO / SPI0 SCK | - | - |
| 25 | GP19 | GPIO / SPI0 TX | - | - |
| 26 | GP20 | GPIO / SPI0 RX | - | - |
| 27 | GP21 | GPIO / SPI0 CSn | - | - |
| 28 | GND | Ground | - | - |
| 29 | GP22 | GPIO / I2C1 SDA | - | - |
| 30 | RUN | Reset / Enable | - | Pull low to reset the RP2040 |
| 31 | GP26 | GPIO / I2C1 SCL | ADC0 | 3.3V logic, 12-bit ADC capable |
| 32 | GP27 | GPIO / I2C1 SDA | ADC1 | 3.3V logic, 12-bit ADC capable |
| 33 | AGND | Analog Ground | - | Use for precision ADC readings |
| 34 | GP28 | GPIO / I2C1 SCL | ADC2 | 3.3V logic, 12-bit ADC capable |
| 35 | ADC_VREF | ADC Reference Voltage | - | Internally tied to 3.3V via filter |
| 36 | 3V3(OUT) | 3.3V Regulator Output | - | Max draw ~300mA (shared with board) |
| 37 | 3V3_EN | 3.3V Regulator Enable | - | Pull low to disable the RT6154 regulator |
| 38 | GND | Ground | - | - |
| 39 | VSYS | Main System Power Input | - | Accepts 2.0V to 5.0V |
| 40 | VBUS | USB 5V Power | - | Tied to micro-USB VBUS pin |
Rows People Get Wrong (and How to Avoid Bricking Your Board)
When working with the Pico W, three specific pinout traps cause the vast majority of hardware failures and debugging dead-ends on the workbench.
VBUS is strictly the 5V from the USB port. VSYS is the main power input, which feeds the onboard RT6154 buck-boost converter. If you are powering the board from an external battery pack (e.g., a 3.7V LiPo), you must connect it to VSYS. If you accidentally feed 5V into VBUS while also back-feeding 5V into VSYS from an external source, you can damage the power path diode or the USB host port on your PC.
Trap 2: The Missing GP25 LED Pin
On the original Raspberry Pi Pico, the onboard green LED is wired directly to GP25. On the Pico W, GP25 is repurposed internally to communicate with the CYW43439 Wi-Fi chip via SPI. If you try to blink the LED using machine.Pin(25) in MicroPython, nothing will happen, and you may disrupt the wireless stack. The LED on the Pico W is instead connected to WL_GPIO0, an internal pin of the wireless chip. You must use the dedicated network libraries to toggle it (see the FAQ below for the exact code).
Trap 3: ADC_VREF (Pin 35) is Not a Standard GPIO
Pin 35 is often mistaken for an extra analog input. It is actually the ADC reference voltage node, internally tied to the 3.3V rail through a low-pass RC filter. Do not use this pin for digital I/O, and do not inject external voltages into it unless you are specifically designing a precision external reference circuit, which requires bypassing the internal filter.
Wiring Color Standards & Faded Silkscreen Recovery
Unlike mains wiring governed by NEC or IEC 60446, low-voltage embedded systems rely on industry-standard harness color codes. When wiring sensors to your Pico W, adhering to these standards prevents catastrophic VCC-to-GND shorts.
| Protocol | Standard Dupont/JST Colors | Adafruit STEMMA QT / Qwiic Colors | Pico W Default Pins |
|---|---|---|---|
| Power (3.3V) | Red (VCC), Black (GND) | Red (3V), Black (GND) | Pin 36 (3V3), Pin 3/8/etc (GND) |
| I2C | Yellow (SDA), White (SCL) | Blue (SDA), Yellow (SCL) | GP4 (SDA), GP5 (SCL) for I2C0 |
| SPI | Orange (SCK), Green (MOSI), Blue (MISO) | N/A (Usually raw headers) | GP18 (SCK), GP19 (TX/MOSI), GP16 (RX/MISO) |
| UART | Green (TX), White (RX) | N/A | GP0 (TX), GP1 (RX) for UART0 |
Safe Interpretation When Markings are Faded or Missing:
If you are working on a Pico W where the silkscreen is obscured by solder flux, a shield, or wear, use the micro-USB port as your physical anchor. Orient the board so the USB port faces 'up' (away from you). The top-left pin is always Pin 1 (GP0). The top-right pin is always Pin 40 (VBUS). To verify your orientation safely, set your multimeter to continuity mode and probe the suspected GND pins (Pins 3, 8, 13, 18, 23, 28, 33, 38) against the large exposed copper test pads on the bottom edge of the board, which are universally tied to the ground plane.
Pico W Pinout FAQ
Does the Raspberry Pi Pico W have a dedicated 5V output pin?
No. The Pico W does not have a 5V output pin. Pin 40 (VBUS) will read ~5V when the board is plugged into USB, but it is an input/pass-through path protected by a diode. It is not designed to source high current to external 5V peripherals. If your project requires a stable 5V output (e.g., for a strip of WS2812B LEDs or a 5V relay module), you must use an external boost converter powered from the VSYS or 3V3(OUT) pins, or power the 5V peripherals from a separate dedicated power supply sharing a common ground with the Pico.
What are the internal Wi-Fi GPIO pins on the Pico W used for?
The CYW43439 wireless chip has its own internal GPIOs that are not broken out to the external header. According to the MicroPython RP2 Quick Reference, the most critical ones are:
- WL_GPIO0: Controls the onboard green LED.
- WL_GPIO1: Controls the power save mode of the wireless chip (pulling it low can reduce power consumption but increase latency).
- WL_GPIO2: Generally reserved for internal wireless stack operations.
To blink the onboard LED in MicroPython on the Pico W, you cannot use the standard machine.Pin method. You must use the network or rp2 specific LED implementation:
from machine import Pin, Timer
import network
# Initialize the wireless interface to access the LED
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
led = Pin('WL_GPIO0', Pin.OUT)
timer = Timer()
def blink(timer):
led.toggle()
timer.init(freq=2.5, mode=Timer.PERIODIC, callback=blink)
How do I safely identify Pico W pins when the silkscreen is covered by solder or a shield?
Beyond the physical counting method mentioned above, you can use voltage measurements to map the board safely while it is powered via USB. Set your multimeter to DC Voltage. Probe Pin 40 (top right) to confirm ~5.0V (VBUS). Probe Pin 36 (third from bottom on the right side) to confirm ~3.3V (3V3 OUT). Probe Pin 39 (second from top on the right) to confirm ~5.0V (VSYS, back-fed from USB). If your readings match this topography, your orientation is correct. Never use a continuity test on a live board, as the multimeter's internal battery voltage can back-feed into the RP2040's sensitive 3.3V logic gates and cause latch-up.






