Source: https://mokxi.com/learn/raspberry-pi-pico-w-pinout
Updated: 2026-10-26

Learn

# Raspberry Pi Pico W pinout: what differs from the Pico

Beginner

Written by the Mokxi team, updated October 26, 2026

Start building free Open the editor

Or see every lesson.

- 455 parts on the bench
- 43 boards running now
- 1.00x real time, on every board

Click to open it in the editor

The Pico’s six-LED chaser on GP2 to GP7, unchanged on the W.

The Raspberry Pi Pico W has the Pico’s forty pins, hole for hole, with the same names and the same jobs: GP0 to GP22 and GP26 to GP28, the same PWM slices, the same I2C, SPI and UART defaults and the same power pins. What differs is inside the module. Four of the RP2040’s GPIOs that never reach the header go to the CYW43439 wireless chip instead of to the LED and the power circuit, and the LED moves to the wireless chip. This page is about those differences. The full forty-pin table is on the Raspberry Pi Pico pinout page, and every row of it holds for the W.

The circuit above is a Pico W in Mokxi running the Pico’s chaser on GP2 to GP7: the same sketch on the same pins, because below the wireless chip the two boards are one board. For an Arduino sketch, Mokxi does not model the CYW43439, apart from the one pin the LED is on, and the page says where that matters; under MicroPython and CircuitPython the chip is modeled from its pins, WiFi included.

## What differs from a Pico

GP23, GP24, GP25 and GP29 are inside the module on both boards, which is why the header skips from GP22 to GP26. On a Pico they set the power supply’s mode, sense USB, light the LED and measure VSYS. On a Pico W three of them are the wireless chip’s power, data and chip select, and the fourth is its clock as well as the VSYS divider.

The LED row is the one that catches people, and the next section is about it.

Raspberry Pi Pico and Pico W: the four GPIOs that are not on the header, and the LED
GPIO | On a Pico | On a Pico W | In Mokxi

GP23 | SMPS_MODE: the regulator’s power-save mode. | WL_ON: switches the CYW43439 on. | An ordinary GPIO with nothing on the other end.

GP24 | VBUS_SENSE: high while USB is plugged in. | WL_D: the CYW43439’s data line. VBUS sense moves to the CYW43439’s GPIO 2. | Nothing drives it, so it reads low.

GP25 | The green LED, lit when HIGH. | WL_CS: the CYW43439’s chip select. Not the LED. | Driving it lights nothing, as on a desk.

GP29 | ADC3: VSYS through a divider. | WL_CLK: the CYW43439’s clock, and ADC3 on the same divider. | The divider is not modeled.

LED | GP25. | The CYW43439’s GPIO 0, reached through the wireless chip. | LED_BUILTIN lights it; on and off only, no PWM.

## The LED is on the wireless chip

A Pico’s green LED is on GP25. A Pico W’s hangs off the CYW43439’s own GPIO 0, so digitalWrite(25, HIGH) lights nothing, on a desk and in Mokxi: it drives the wireless chip’s chip select instead. LED_BUILTIN is not a GPIO number on this board. In the Arduino core for the Pico, digitalWrite(LED_BUILTIN, HIGH) goes through the wireless chip’s driver to that pin, and Mokxi takes the same path, so the lamp on the board lights. In MicroPython the LED is Pin("LED"), for the same reason.

That path carries on and off, not a duty cycle, so analogWrite(LED_BUILTIN, 128) does nothing on a Pico W. A breathing LED wants a header pin and a resistor. On a desk the wireless chip has to be started before its LED answers, which the Arduino core does before setup(); Mokxi skips that, and the LED works from the first instruction.

## VSYS, VBUS and measuring the supply

The power pins are the Pico’s. VBUS is the 5 V from the USB socket, VSYS is the board’s main input and takes 1.8 to 5.5 V, 3V3 is the regulator’s output, 3V3_EN turns the regulator off and RUN resets the chip. Batteries on VSYS run a Pico W without USB, as they run a Pico.

What moves is the measuring. On a Pico, GP24 tells a sketch whether USB is plugged in and GP29 reads VSYS through a divider, as ADC3. On a Pico W, VBUS sense is the CYW43439’s GPIO 2, and GP29 is shared with the wireless chip’s clock, so a VSYS reading has to wait until the wireless link is quiet; the Pico W datasheet covers it. Mokxi models neither the divider nor VBUS sense on this board. The board is always on USB here, with 5 V on VBUS and 4.7 V on VSYS.

## The rest of the header, unchanged

Every hole on the header is the Pico’s. GP0 and GP1 are UART0, Wire.begin() puts I2C on GP4 and GP5, SPI is GP18, GP16, GP19 and GP17 for SCK, MISO, MOSI and SS, GP26 to GP28 are ADC0 to ADC2, and every GPIO can do PWM on the slice its number gives it. None is 5 V tolerant. The Raspberry Pi Pico pinout lists all forty pins with the PWM slice of each.

The antenna is etched into the end of the board away from the USB socket. On a desk, keep metal and ground planes clear of it. In Mokxi there is no radio at all: WiFi.h, HTTPClient.h and WebServer.h reach a simulated network, so the connect loop, the status codes and a web page run as written, with no 802.11 behind them, and real internet when you sign in and switch it on. Bluetooth is not simulated.

## Questions

Is the Pico W pinout the same as the Pico?

The header is, hole for hole, so a circuit moves across unchanged. What differs is off the header: GP23, GP24, GP25 and GP29 go to the wireless chip, and the LED moves to it.

Which pin is the LED on a Raspberry Pi Pico W?

None of the RP2040’s. It is the CYW43439’s GPIO 0. Use `LED_BUILTIN` in Arduino code, or `Pin("LED")` in MicroPython, not 25.

Why does GP25 not light the LED on my Pico W?

Because on a Pico W GP25 is WL_CS, the wireless chip’s chip select. Code written for a Pico that drives 25 lights nothing on a W.

Can I use GP23, GP24, GP25 or GP29 on a Pico W?

No. They are not on the header, and the wireless chip uses all four.

Does code written for a Pico run on a Pico W?

Yes, unless it drives GP23, GP24 or GP25 or reads GP29. A sketch that blinks 25 has to blink `LED_BUILTIN` instead, and one that read GP24 to see whether USB is in has to ask the wireless chip. The chaser above is the same sketch on both boards.

Which pins are I2C and SPI on a Pico W?

The Pico’s: I2C on GP4 (SDA) and GP5 (SCL), SPI on GP18 (SCK), GP16 (MISO), GP19 (MOSI) and GP17 (SS).

Does the Pico W have a 5V pin?

VBUS is 5 V from USB and VSYS is about 5 V less a diode drop; both can power a 5 V module. No GPIO is 5 V tolerant.

Related

## Keep going

Raspberry Pi Pico Pinout: GPIO, PWM, ADC and Power Connect a Board to WiFi and Serve a Page Raspberry Pi Pico PWM: Slices, Channels and 1 kHz ESP32 Not Connecting to WiFi: Causes and Fixes Run the Raspberry Pi Pico W in the simulator Help: the Raspberry Pi Pico W model The project page, with the full sketch Beginner

Sources

## Where the facts on this page come from

- Raspberry Pi: the Pico W datasheet (pinout, the CYW43439’s pins, VSYS and GPIO29)
- Raspberry Pi: Pico series documentation (the Pico W’s LED in MicroPython)

## Build this for real

Open the editor, change a value and watch the number move with it. Nothing to install, and no account needed.

Start building free Open the editor
