OC
OceanRemote
Low-code IoT platform
Back to Troubleshooting Hub

Pico W Serial Monitor No Output

Your Raspberry Pi Pico W compiles and uploads successfully, but the Serial Monitor displays nothing. This guide covers TinyUSB configuration, USB stack selection, baud rate mismatches, and Serial initialization for the Pico W.

Last updated: April 22, 2026 | 10 min read

Symptoms

  • Firmware uploads successfully but Serial Monitor shows nothing
  • Serial Monitor displays garbage characters or random symbols
  • COM port appears but no data received
  • Serial Monitor works for ESP32 but not for Pico W on same computer
  • Pico W not appearing as a serial device in Device Manager
  • Serial Monitor opens but immediately closes or freezes
  • Data appears only after pressing RESET button

Common Causes

  1. Wrong USB Stack Selected Most common issue. Pico W needs "Adafruit TinyUSB" for Serial over USB
  2. Missing USB CDC Serial Initialization Pico W requires different Serial initialization than ESP32; `Serial.begin()` alone may not be sufficient
  3. Baud Rate Mismatch Serial Monitor baud rate doesn't match `Serial.begin()` in code
  4. Wrong Port Selected Multiple COM ports available; wrong one selected in Arduino IDE
  5. USB Cable Issues Charge-only cable or poor connection affects serial communication
  6. Driver Problems Missing or incorrect USB CDC driver for Pico W
  7. TinyUSB Not Enabled in Board Package Older board package versions may not have TinyUSB support

Pico W USB Stack Comparison

USB Stack Serial Support Memory Usage Compatibility Recommendation
Adafruit TinyUSB Full CDC Serial ~8KB RAM Windows, Mac, Linux (all) () RECOMMENDED , USB
Pico SDK () Limited ~4KB RAM Variable Not recommended for Arduino Serial Monitor

Pico W requires Adafruit TinyUSB stack for Serial Monitor to work in Arduino IDE.

Step-by-Step Fixes

1. Select Correct USB Stack

This is the #1 reason Pico W Serial Monitor doesn't work:

  • In Arduino IDE: Tools USB Stack
  • Select "Adafruit TinyUSB"
  • This enables USB CDC serial
  • Re-compile and upload firmware
  • Open Serial Monitor should now see output
// Arduino IDE settings for Pico W Serial:
// Tools  USB Stack  Adafruit TinyUSB  
// Tools  IP/Bluetooth Stack  IPv4 Only
// Tools  Optimize  Small  
//
// After changing USB Stack, re-upload firmware
// Serial Monitor should now work at 115200 baud

2. Add Delay After Serial.begin()

Pico W needs extra time for USB enumeration:

void setup() {
  Serial.begin;
  
  // CRITICAL for Pico W - allow USB to enumerate
  delay;  // Wait 2 seconds for USB CDC to initialize
  // Some Pico W boards need up to 3000ms 
  
  Serial.println;
  Serial.println;
}

void loop() {
  Serial.println));
  delay;
}

3. Verify Board Package Version

Older board packages may lack TinyUSB support:

  • Tools Board Boards Manager
  • Search "Raspberry Pi Pico"
  • Check installed version
  • If older, update to latest version
  • Version 3.x may not have TinyUSB option
  • Restart Arduino IDE after update

4. Check Serial Monitor Baud Rate

Match baud rate in code and Serial Monitor:

  • Check your code: Serial.begin;
  • In Serial Monitor, bottom-right corner, select same baud rate
  • Common rates: 115200, 9600, 74880
  • If mismatch, output will be garbage or nothing
  • Try different rates if unsure

5. Select Correct COM Port

Pico W may create multiple COM ports:

  • In Arduino IDE: Tools Port
  • Look for "Raspberry Pi Pico W" or "USB Serial Device"
  • On Windows, may appear as COM3, COM4, etc.
  • Disconnect Pico W, note which ports disappear, then reconnect
  • Select the port that appears/disappears
  • On Mac/Linux: look for /dev/cu.usbmodem* or /dev/ttyACM*

6. Install USB CDC Drivers

Windows may need drivers for Pico W serial:

  • Open Device Manager
  • Look for "Raspberry Pi Pico W" or "Unknown Device" under Ports
  • If yellow exclamation, right-click Update driver
  • Select "Browse my computer for drivers"
  • Navigate to Arduino IDE drivers folder \Arduino\drivers)
  • Or download Zadic driver installer

7. Test with Minimal Sketch

Isolate the problem with simple test code:

// Minimal Pico W Serial Test
// Tools  USB Stack  Adafruit TinyUSB
// Tools  Board  Raspberry Pi Pico W

void setup() {
  Serial.begin;
  delay;  // Critical for Pico W
  
  Serial.println;
  Serial.println;
  Serial.println;
  Serial.print;
  Serial.println);
}

void loop() {
  static unsigned long last = 0;
  if (millis() - last > 1000) {
    last = millis();
    Serial.print;
    Serial.print(millis() / 1000);
    Serial.println;
  }
  delay;
}

Recommended Arduino IDE Settings for Pico W Serial

Setting Value Why
USB StackAdafruit TinyUSBEnables USB CDC serial
BoardRaspberry Pi Pico WNOT "Raspberry Pi Pico"
IP/Bluetooth StackIPv4 OnlySaves memory, not needed for Serial
OptimizeSmall Reduces firmware size
Debug PortDisabledPrevents serial interference
Debug LevelNoneBetter performance

Prevention Tips

  • Always set USB Stack to Adafruit TinyUSB for Serial Monitor support
  • Add delay after Serial.begin() for USB enumeration
  • Keep Pico W board package updated to latest version
  • Use quality data USB cables
  • Test with minimal sketch first before adding complex code
  • On Windows, install USB CDC drivers if needed

Related Issues

Frequently Asked Questions

Q: Why does my Pico W Serial Monitor work on Mac but not Windows?

A: Windows often requires USB CDC drivers for Pico W. Mac and Linux have built-in support. Install drivers via Zadic or update through Device Manager. Also ensure USB Stack is set to "Adafruit TinyUSB".

Q: Serial Monitor shows data only after I press RESET. Why?

A: The delay after Serial.begin() is too short. Increase delay to 2000-3000ms. Pico W needs time for USB CDC enumeration before sending data. Add `delay;` after `Serial.begin()`.

Q: Can I use Serial1 or Serial2 on Pico W?

A: Yes, Pico W has multiple UARTs. Use `Serial1.begin;` for UART1 on GPIO 9 and 8 . However, for USB Serial, use `Serial` with TinyUSB stack.

Still having Serial issues? Contact Support or return to the Troubleshooting Hub.