Raspberry Pi Pico 2 W Pinout, Wi-Fi, Bluetooth and Arduino Setup

Raspberry Pi Pico 2 W pinout and Arduino guide: RP2350 GPIOs, ADC, I2C, SPI, UART, PWM, Wi-Fi, Bluetooth 5.2, BOOTSEL, power pins and wireless setup.

The Raspberry Pi Pico 2 W combines the newer RP2350 microcontroller with the same Infineon CYW43439 wireless chip used on the original Pico W. The result is a compact wireless microcontroller board with dual-core Cortex-M33 or dual-core Hazard3 RISC-V processors, 520 KB SRAM, 4 MB onboard Flash, Wi-Fi, Bluetooth 5.2, USB and Raspberry Pi’s flexible PIO system.

Physically, Pico 2 W deliberately keeps the familiar Pico W layout. The 40-pin edge connector uses the same external pinout as Pico W, so many existing carrier boards and breadboard layouts remain compatible.

The biggest differences are inside: RP2350 runs up to 150 MHz, approximately doubles SRAM compared with RP2040, expands PIO to 12 state machines, adds more PWM resources and includes a much more advanced security architecture.

Pico 2 W Specifications at a Glance

FeatureRaspberry Pi Pico 2 W
MicrocontrollerRP2350A
CPUDual Arm Cortex-M33 or dual Hazard3 RISC-V
Maximum clock150 MHz
SRAM520 KB
Onboard Flash4 MB QSPI
Wi-Fi2.4 GHz 802.11n
BluetoothBluetooth 5.2, Classic + BLE
Wireless chipInfineon CYW43439
User GPIO on headers26
Exposed ADC GPIOs3: GP26, GP27, GP28
UART2 controllers
SPI2 controllers
I²C2 controllers
PWM24 channels
PIO12 state machines
USBUSB 1.1 host/device
Input supplyVSYS approximately 1.8–5.5 V
Board size21 × 51 mm

Pico 2 W Pinout

The external pinout is the same layout used by Pico W. GPIO functions are multiplexed, so most digital pins can serve several peripheral roles.

Physical pinSignalCommon alternate functions
1GP0UART0 TX / I²C0 SDA / SPI0 RX / PWM
2GP1UART0 RX / I²C0 SCL / SPI0 CSn / PWM
3GNDGround
4GP2I²C1 SDA / SPI0 SCK / PWM
5GP3I²C1 SCL / SPI0 TX / PWM
6GP4UART1 TX / I²C0 SDA / SPI0 RX / PWM
7GP5UART1 RX / I²C0 SCL / SPI0 CSn / PWM
8GNDGround
9GP6I²C1 SDA / SPI0 SCK / PWM
10GP7I²C1 SCL / SPI0 TX / PWM
11GP8UART1 TX / I²C0 SDA / SPI1 RX / PWM
12GP9UART1 RX / I²C0 SCL / SPI1 CSn / PWM
13GNDGround
14GP10I²C1 SDA / SPI1 SCK / PWM
15GP11I²C1 SCL / SPI1 TX / PWM
16GP12UART0 TX / I²C0 SDA / SPI1 RX / PWM
17GP13UART0 RX / I²C0 SCL / SPI1 CSn / PWM
18GNDGround
19GP14I²C1 SDA / SPI1 SCK / PWM
20GP15I²C1 SCL / SPI1 TX / PWM
21GP16SPI0 RX / I²C0 SDA / UART0 TX / PWM
22GP17SPI0 CSn / I²C0 SCL / UART0 RX / PWM
23GNDGround
24GP18SPI0 SCK / I²C1 SDA / PWM
25GP19SPI0 TX / I²C1 SCL / PWM
26GP20I²C0 SDA / PWM
27GP21I²C0 SCL / PWM
28GNDGround
29GP22GPIO / PWM
30RUNRP2350 reset / enable
31GP26 / ADC0ADC0 / I²C1 SDA / GPIO
32GP27 / ADC1ADC1 / I²C1 SCL / GPIO
33AGNDAnalogue ground
34GP28 / ADC2ADC2 / GPIO
35ADC_VREFADC reference
363V3(OUT)Regulated 3.3 V output
373V3_ENPull low to disable 3.3 V regulator
38GNDGround
39VSYSMain system input
40VBUSUSB 5 V

Only Three ADC Inputs Are Exposed on the Header

RP2350 has analogue capability on more internal signals, but Pico 2 W exposes the user analogue pins as GP26/ADC0, GP27/ADC1 and GP28/ADC2.

GPIO29 / ADC3 is used internally as part of the wireless-board VSYS monitoring arrangement. The wireless SPI clock and VSYS monitor share internal resources, so reading VSYS has to be coordinated with CYW43439 activity.

For external analogue sensors, treat GP26–GP28 as the normal accessible ADC pins.

GPIO Voltage Is 3.3 V

Pico 2 W GPIO is a 3.3 V logic system. Do not connect ordinary 5 V logic outputs directly to RP2350 GPIO unless the exact interface is level-shifted appropriately.

The board accepting a higher voltage on VSYS does not make the GPIO pins 5 V tolerant.

The Onboard LED Is Not GP25

On the original non-wireless Pico, the LED is connected directly to a microcontroller GPIO. On Pico W and Pico 2 W, the LED is controlled through the CYW43439 wireless device as WL_GPIO0.

That means low-level code which assumes an LED on GP25 will be wrong for Pico 2 W. In Arduino, use LED_BUILTIN rather than hard-coding the LED pin.

Arduino LED Blink

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);
  delay(500);
}

The Arduino core handles the wireless-chip LED path for the Pico 2 W board definition.

Wi-Fi Hardware

Pico 2 W uses the Infineon CYW43439, connected to RP2350 over a board-internal SPI interface that normally runs up to around 33 MHz.

Official Raspberry Pi documentation specifies single-band 2.4 GHz 802.11n wireless networking. This is not a 5 GHz Wi-Fi board.

The wireless subsystem also shares a single onboard antenna between Wi-Fi and Bluetooth.

Keep Metal Away from the Antenna

The antenna sits at the end of the Pico 2 W board. Metal directly under or close to it can significantly reduce gain and bandwidth.

  • Do not mount the antenna end against a metal enclosure wall.
  • Avoid ground planes directly under the antenna area on a carrier PCB.
  • Keep batteries and large cables away from the antenna where possible.
  • If using a metal enclosure, expect range to drop unless RF design is considered.

Bluetooth 5.2

Raspberry Pi specifies Bluetooth 5.2 on Pico 2 W. The wireless subsystem supports both Bluetooth Low Energy and Bluetooth Classic.

The current Arduino-Pico stack supports BLE central/peripheral use as well as Bluetooth Classic functionality including HID, serial-style SPP and A2DP audio features.

Bluetooth is not automatically included in every Arduino build because the stack consumes extra Flash and RAM. Enable the required Bluetooth/IP stack in the Arduino Tools menu.

Arduino-Pico Bluetooth Stack

In the current Arduino-Pico core, Bluetooth support is enabled through Tools → IP/Bluetooth Stack. Enabling Bluetooth adds roughly 80 KB of Flash and around 20 KB of RAM according to the core documentation.

The core currently includes support for:

  • BLE server/peripheral.
  • BLE client/central.
  • Bluetooth Classic HID.
  • BLE HID.
  • Bluetooth HID master.
  • SerialBT / SPP-style serial.
  • Bluetooth audio A2DP source and sink.

Wi-Fi and Bluetooth Share the Same Radio

The CYW43439 contains both radio functions and uses one 2.4 GHz antenna. Wi-Fi and Bluetooth coexistence is handled in the wireless subsystem, but they still share RF airtime and host-interface resources.

For ordinary IoT workloads this is fine. For high-throughput Wi-Fi combined with latency-sensitive Bluetooth, test the real application rather than assuming both radios operate independently.

UART Pins

RP2350 provides two UART controllers and can route them to multiple pin combinations through GPIO alternate functions.

UARTTXRX
UART0GP0GP1
UART1GP4GP5
UART1 alternativeGP8GP9
UART0 alternativeGP12GP13
UART0 alternativeGP16GP17

I²C Pins

Pico 2 W has two hardware I²C controllers. Common pairs include:

ControllerSDASCL
I²C0GP0GP1
I²C1GP2GP3
I²C0GP4GP5
I²C1GP6GP7
I²C0GP8GP9
I²C1GP10GP11
I²C0GP12GP13
I²C1GP14GP15
I²C0GP16GP17
I²C1GP18GP19
I²C0GP20GP21
I²C1GP26GP27

SPI Pins

Two hardware SPI controllers are available. Useful common mappings include:

ControllerRX/MISOCSSCKTX/MOSI
SPI0GP0GP1GP2GP3
SPI0GP4GP5GP6GP7
SPI1GP8GP9GP10GP11
SPI1GP12GP13GP14GP15
SPI0GP16GP17GP18GP19

The wireless chip uses a separate internal SPI connection; it does not consume the user-visible SPI0/SPI1 header mapping in the same way an external module would.

PWM

RP2350 increases the PWM resources compared with RP2040. Raspberry Pi lists 24 PWM channels on Pico 2.

PWM can be used for LED dimming, motor drivers, servo-style signals, audio and other timing tasks, subject to the RP2350 slice/channel mapping.

PIO: One of Pico 2 W’s Biggest Advantages

RP2350 provides 12 Programmable I/O state machines, up from eight on RP2040.

  • WS2812 / NeoPixel output.
  • Custom serial protocols.
  • Precise pulse measurement.
  • I²S-style interfaces.
  • VGA/DVI-style signal generation.
  • Additional UART/SPI-like state machines.

PIO is one of the strongest reasons to choose Pico-class hardware when the project has unusual digital timing requirements.

USB

RP2350 includes USB 1.1 controller and PHY support for both device and host modes. The Pico 2 W board uses a Micro-USB connector for power and USB data.

Arduino-Pico supports serial-over-USB and also provides USB support for HID, storage-style applications and other device classes.

BOOTSEL

The BOOTSEL button gives Pico boards one of the friendliest recovery mechanisms in microcontroller development.

  • Disconnect or reset the board.
  • Hold BOOTSEL.
  • Connect USB or reset while holding it.
  • Release BOOTSEL after the board enters boot mode.

The board appears as a USB drive and accepts a UF2 firmware image. This makes it very difficult to permanently lock yourself out with broken application firmware.

RUN Pin

Physical pin 30 is RUN. Pulling RUN low resets the RP2350. A momentary button between RUN and GND can therefore act as an external reset switch.

Power Pins

PinPurpose
VBUSUSB 5 V from the connector
VSYSMain board system supply input
3V3(OUT)Regulated 3.3 V output
3V3_ENRegulator enable; low disables 3.3 V rail
ADC_VREFADC reference supply
AGNDAnalogue ground

Raspberry Pi specifies Pico 2 series VSYS operation across approximately 1.8–5.5 V. This makes battery and regulated external power straightforward, but the attached circuitry still has to respect 3.3 V I/O levels.

SWD Debugging

Pico 2 W exposes SWD debug pads/signals for SWDIO, SWCLK and GND. With a debug probe or another supported Raspberry Pi debug setup, you can use breakpoints and inspect memory/register state instead of relying only on Serial prints.

Installing Arduino Support

One of the most capable Arduino options for RP2350 is the community-maintained Arduino-Pico core by Earle Philhower. Current documentation supports RP2040 and RP2350 boards including Pico 2 W.

In Arduino IDE, open File → Preferences and add the Boards Manager URL:

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  • Open Boards Manager.
  • Search for the Raspberry Pi Pico / RP2040-RP2350 package.
  • Install the Arduino-Pico core.
  • Select Raspberry Pi Pico 2 W.
  • Choose the required Flash, USB and IP/Bluetooth stack options.

First Arduino Upload

For the first upload, the BOOTSEL method is reliable: enter UF2 boot mode, select the Pico 2 W board and upload.

Once firmware is running, the Arduino-Pico core can normally reset/upload over USB without holding BOOTSEL every time. BOOTSEL remains the recovery method if USB firmware is broken.

Arduino Wi-Fi Example

#include <WiFi.h>

const char* ssid = "YOUR_WIFI";
const char* password = "YOUR_PASSWORD";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(250);
    Serial.print(".");
  }

  Serial.println();
  Serial.print("IP: ");
  Serial.println(WiFi.localIP());
}

void loop() {
}

Arduino-Pico implements Wi-Fi APIs familiar to users of the Arduino WiFi and ESP8266/ESP32 ecosystems, including client/server sockets, scanning, DHCP/static addressing and access-point support.

Wi-Fi Memory Cost

Wireless networking is not free in memory terms. Arduino-Pico documentation notes that enabling Wi-Fi adds more than 220 KB of Flash usage, largely because CYW43 firmware is included, and roughly 40 KB of RAM for the networking stack and buffers.

Pico 2 W’s 520 KB SRAM is therefore a useful improvement over the original Pico W for larger networked applications.

Arduino BLE Example Structure

#include <BLE.h>

void setup() {
  Serial.begin(115200);
  BLE.begin();

  // configure services,
  // characteristics and advertising
}

void loop() {
  // application logic
}

Make sure Bluetooth is enabled in Tools → IP/Bluetooth Stack before compiling a Bluetooth sketch.

Bluetooth Classic

Unlike microcontrollers that support BLE only, the Pico 2 W CYW43439 supports Bluetooth Classic as well as BLE. Arduino-Pico currently exposes useful Classic profiles including HID, serial-style SPP and A2DP audio.

Wi-Fi Access Point Mode

Raspberry Pi’s wireless documentation supports soft-access-point operation with up to four clients, and Arduino-Pico exposes AP functionality through its Wi-Fi API.

This is useful for device setup portals where the Pico creates its own temporary network before joining the user’s normal Wi-Fi.

OTA Updates

Arduino-Pico supports over-the-air firmware updating for wireless Pico boards. The first firmware still has to be loaded physically, but later updates can be delivered over the network if the application includes OTA support.

Pico 2 W vs Pico W

FeaturePico WPico 2 W
MCURP2040RP2350
CPUDual Cortex-M0+ @ 133 MHzDual Cortex-M33 or Hazard3 @ 150 MHz
SRAM264 KB520 KB
Flash2 MB4 MB
PIO state machines812
Wireless chipCYW43439CYW43439
Wi-Fi2.4 GHz 802.11n2.4 GHz 802.11n
Bluetooth5.2 Classic + BLE5.2 Classic + BLE
Header pinoutPico W layoutSame external layout

The wireless capability is broadly similar because both use the CYW43439. Pico 2 W’s advantage is the much stronger RP2350 host MCU and extra memory.

Pico 2 W vs Non-Wireless Pico 2

  • Pico 2 has no onboard Wi-Fi or Bluetooth.
  • Its onboard LED is MCU-connected rather than controlled through the wireless chip.
  • There is no internal CYW43439 SPI traffic.
  • The internal GPIO/resource arrangement is simpler.

Choose Pico 2 W when networking is part of the project. Choose Pico 2 when wireless adds no value.

Common Problem: Onboard LED Does Not Work on GP25

That is expected. On Pico 2 W, the LED is WL_GPIO0 on the CYW43439.

Use LED_BUILTIN or the wireless-aware SDK API rather than writing GP25 directly.

Common Problem: Wi-Fi Sketch Compiles for Pico 2 but Not Pico 2 W

Check the board selection. Pico 2 and Pico 2 W are different Arduino variants. Only the W model includes the CYW43439 wireless hardware.

Select Raspberry Pi Pico 2 W, not the non-wireless Pico 2 target.

Common Problem: ADC Values Change During Wireless Activity

The wireless board internally shares the VSYS ADC-monitoring path with wireless SPI resources. External GP26–GP28 ADC inputs are the normal sensor inputs, while internal VSYS monitoring has special timing constraints.

Common Problem: Poor Wi-Fi or Bluetooth Range

  • Metal or battery directly behind the antenna.
  • Board mounted inside a metal enclosure.
  • Ground plane under the antenna region.
  • No clearance around the antenna end.
  • High local 2.4 GHz interference.

Common Problem: Arduino Upload Stops Working

Hold BOOTSEL while connecting or resetting the board and return to UF2 boot mode. This bypasses the application firmware and gives you a clean recovery path.

If the board still does not enumerate, check the USB cable first; many Micro-USB cables are power-only.

Common Problem: Bluetooth Classes Are Missing

Ensure the Arduino-Pico core is current and that Tools → IP/Bluetooth Stack has a Bluetooth-enabled option selected. Bluetooth support is deliberately optional because it consumes additional Flash/RAM.

Recommended Arduino Setup

  • Install the current Arduino-Pico core.
  • Select Raspberry Pi Pico 2 W.
  • Use BOOTSEL for the first or recovery upload.
  • Use LED_BUILTIN rather than GP25 for the onboard LED.
  • Use GP26–GP28 for normal analogue inputs.
  • Enable Wi-Fi/Bluetooth stack options only when required.
  • Keep the antenna area clear of metal.
  • Use VSYS for suitable external board power and keep GPIO at 3.3 V logic.
  • Use SWD when real debugging is needed.

Final Recommendation

The Raspberry Pi Pico 2 W is the Pico board to buy for a new wireless project if you want the Pico/RP2350 architecture. It keeps the familiar Pico W external pinout while doubling SRAM, doubling onboard Flash, increasing CPU performance and expanding PIO/PWM resources.

Its wireless hardware is mature rather than exotic: the CYW43439 provides 2.4 GHz 802.11n Wi-Fi plus Bluetooth 5.2 Classic and BLE, and current Arduino-Pico releases expose a strong networking and Bluetooth feature set.

For Arduino users, the workflow is straightforward: install Arduino-Pico, select Pico 2 W, use BOOTSEL for the first upload and treat the board as a 3.3 V microcontroller with 26 exposed GPIOs. The two details most worth remembering are that the onboard LED lives on the wireless chip and that the accessible analogue inputs are GP26–GP28.

Related Raspberry Pi Guides

Official and Technical Resources

Share your love