Pico W / Pico 2 W vs the non-W boards — how to tell them apart
The wireless and non-wireless Pico boards look alike; three official differences separate them every time: where the LED lives, where the SWD pads sit, and the radio shield. Plus the volume-name trap.
Question this page answers: "Is my board a Pico W / Pico 2 W or a plain Pico / Pico 2 — and does it matter?"
It matters more than the naming suggests: the wireless boards move the on-board LED off GP25 and consume different internal GPIOs, so firmware and tutorials written for the non-W boards misbehave quietly. The official documentation describes the four variants of each generation together and states the differences explicitly.
Three checks that always separate them
| Check | Non-W (Pico, Pico H, Pico 2, Pico 2 with headers) | Wireless (Pico W, Pico WH, Pico 2 W, Pico 2 W with headers) | Source |
|---|---|---|---|
| On-board LED | on the MCU's GP25 (PICO_DEFAULT_LED_PIN 25) | on the radio chip (WL_GPIO0); the W board headers define no PICO_DEFAULT_LED_PIN | docs layout sections + SDK headers pico.h / pico_w.h |
| SWD pads | along the bottom edge | centrally, just below the microcontroller | docs debug-connector table |
| Radio | none — the PCB is bare around the MCU area | CYW43439 radio chip + on-board antenna near one end | docs wireless-models section |
The printed model name on the board settles it fastest when legible; the three checks above work when the silk is unclear.
The internal GPIO differences (why firmware cares)
Both generations keep the same 40 header positions, but the board-internal GPIOs do different work:
| GPIO | Non-W use | Wireless use |
|---|---|---|
| GP23 | SMPS power-save control | radio enable (WL_REG_ON) |
| GP24 | VBUS sense | radio data out/in + host-wake (shared) |
| GP25 | user LED | radio SPI chip select (WL_CS) — driving it as an LED corrupts radio traffic |
| GP29 | VSYS monitor (ADC) | radio SPI clock and VSYS monitor, sharing the pin |
None of the four reach the headers on either board. What changes is what driving them (or assuming GP25 blinks) does.
The volume-name trap
In BOOTSEL mode the mass-storage volume is named RPI-RP2 on RP2040 boards and RP2350 on RP2350 boards — the W suffix does not appear in the volume name. A Pico 2 W and a Pico 2 show the same "RP2350" drive. The volume tells you the generation, never the wireless variant.
Can software tell which it is running on?
Official answer from the documentation: "There is no direct method for software written in MicroPython to discover whether it is running on a Raspberry Pi Pico or a Pico W by looking at the hardware" — but you can probe indirectly, e.g. by checking whether the firmware's network module includes WLAN support. For C/C++, the SDK board target you build for (pico_w / pico2_w vs pico / pico2) is a build-time fact, not a runtime discovery.
What this page cannot tell you
- Which variant you should buy — that is a project question; start from whether you need Wi-Fi/Bluetooth at all, then see the board pages.
- Pre-soldered-header variants (H / WH / "with headers") only change the header soldering and the SWD connector style (through-hole pads vs keyed JST-style) — same electrical board, same checks above.
Boards
- Raspberry Pi Pico W and Raspberry Pi Pico 2 W — full records with the wireless claims.
- Raspberry Pi Pico and Raspberry Pi Pico 2 — the non-W siblings.
Next: Pico W / Pico 2 W: UF2, BOOTSEL and the on-board LED.
Sources
- Raspberry Pi Pico-series documentation (commit 21d772e7) — variant tables, layout sections (LED wiring), debug-connector table, wireless-models section, MicroPython "which hardware" note.
- pico-sdk board headers (tag 2.3.1) —
pico.hvspico_w.h/pico2_w.h: LED pin presence and CYW43 pin macros.