An AI-agent-controllable digital-signal instrument and debug probe on a stock Raspberry Pi Pico 2 — no custom board. Drive and measure real signals from Claude Code (or any MCP client), a CLI, a desktop GUI, or Python, and debug STM32 and ESP32 targets with standard tools — all over one USB cable.

Features

Signal instrument

  • 8-channel bidirectional digital I/O with per-channel direction and rate-paced capture up to 200 kHz
  • 3-channel ADC, round-robin scan up to 200 kHz
  • PWM on any digital channel, up to 100 kHz
  • UART with configurable baud and format
  • I2C master and slave (256-byte register map)
  • SPI master and slave, with MOSI capture for sniffing a target's SPI bus

Debug probe (CMSIS-DAP v2)

  • SWD and JTAG, including ARM over JTAG
  • SWO trace capture (UART mode, up to 18.75 Mbaud)
  • Works with OpenOCD, pyOCD and Espressif's OpenOCD — no MCP call needed
  • Runs alongside the instrument: watch a target's buses while you step through its code

Control

  • MCP server for Claude Code and other MCP clients
  • Command-line tool for bench use
  • Desktop GUI with live waveform and analog plots
  • Typed Python library underneath all of them
  • Windows, macOS and Linux; no driver install on Windows (WinUSB)

Safety

  • Digital and PWM outputs need an explicit, time-limited arm lease that expires on its own
  • Outputs drop to a safe state on watchdog timeout, host loss or protocol fault
  • MCP write tools are disabled by default, with an audit log of every call
  • Debug sessions are the one deliberate exception: a debugger drives its pins directly, and sessions are reported to the host

Key specs

Raspberry Pi Pico 2 (RP2350), unmodified
Full-speed composite device: control channel, CMSIS-DAP v2, diagnostic serial console
SWD up to 6.8 MHz, JTAG up to 4.7 MHz
3.3 V

What you need

  • A Raspberry Pi Pico 2 (non-W)
  • A Raspberry Pi Debug Probe (or a Pico running debugprobe) to flash it, or just the Pico's BOOTSEL button and the UF2 file
  • Python 3.10+ for the host tools