Skip to main content
In debug mode, Embedder can drive a USB PicoScope — one device that acts as an oscilloscope, a mixed-signal logic analyzer, and a signal generator. The prompts you write are the same as for a bench scope or a Saleae: describe the measurement, and Embedder picks the right role. Analog captures publish to the Power tab and digital captures to the Logic tab of the Console panel (VS Code extension and standalone app). Reach for a PicoScope when you want scope-grade analog capture without a LAN bench instrument — it’s USB-powered, and MSO models fold digital capture and an arbitrary waveform generator into the same box.

Prerequisites

1

Be in debug mode

Run /debug or click the Debug button. The instrument tools are unavailable in act and plan modes.
2

Connect the PicoScope over USB

Plug the scope into the host over USB — it’s USB-powered, no bench supply or LAN needed.
The PicoScope USB device is single-client. Quit the PicoScope desktop app before capturing, or Embedder can’t claim the device.
3

Install Pico's drivers

Install PicoScope 7 or the PicoSDK from picotech.com/downloads:
  • macOS / Windows: PicoScope 7 T&M Instruments
  • Linux: the libps* packages from Pico’s apt repo
One install covers the whole PicoScope range. Everything else is automatic — when a PicoScope is detected, Embedder offers to finish the setup for you (“A PicoScope is connected. Do you want to install PicoScope support now?”) and confirms the drivers are in place.
Run hardware_status. A ready PicoScope shows up under the picoscope provider with its model and series.
4

Wire your probes

  • Analog: BNC scope probes to inputs A–D. Coupling is DC or AC only — PicoScope inputs have no GND coupling.
  • Digital (MSO models): the D0–D15 flying leads to your DUT signals. Note which channel goes where — you’ll mention them in your prompt.
  • Signal generator: the AWG / Gen output to the node you want to stimulate.
Full scale is ±4 × the per-division scale. A 0–3.3 V logic line needs a 1 V/div scale (±4 V) — at 0.5 V/div (±2 V) it clips flat at the range limit. Using a ×10 probe? Say so (“I’ve got a ×10 probe on channel A”) — a PicoScope can’t read the probe’s switch position, so the agent scales the range and trigger levels for you.

Supported models

Every PicoScope series works, and the scope is auto-detected when you plug it in. MSO models add digital capture on top of analog.
The Logic capture (MSO) column marks series that offer digital pods. Your specific unit still has to be an MSO variant with the pods fitted — a non-MSO scope in the same series captures analog only.

Example prompts

Describe the symptom or the measurement — Embedder picks the analog, digital, or generator path and writes the script. Analog capture on an edge trigger:
embedder
The agent configures the channel and timebase (both snap to the scope’s discrete ranges), arms the trigger, waits for it to fire, and reports the measurement. Because the range and rate are quantized, it reports the achieved sample rate, not the request. Digital capture on an MSO model:
embedder
Digital thresholds are set per 8-channel port (D0–D7, D8–D15), so a 3.3 V bus captures cleanly at a 1.65 V threshold. Stimulus and response with the built-in generator:
embedder
The generator runs independently of capture, so drive-then-measure is a single-device flow. Functions: sine, square, triangle, ramp up/down, and DC. Output limits vary by model (the 2205A MSO is ±2 V). Connect a legacy scope:
embedder
Legacy 2000 / 3000 scopes can’t be auto-detected — name the series so the agent connects directly. Fit a longer window into the buffer:
embedder
The capture buffer is shared across every enabled channel and digital port (about 48 kS on a 2205A MSO), so long windows need a lower sample rate or fewer channels. The agent resolves the trade-off and tells you what it picked.

How it differs from a bench oscilloscope

If you’ve used Embedder’s LAN/SCPI oscilloscope, the same prompts work — with a few USB-specific differences: There’s no screenshot on a PicoScope because there’s no front-panel display — every capture comes back as an interactive chart in the Console panel instead.

What the agent does for you

The agent writes a Python script under .embedder/hardware/ that opens the PicoScope over USB, configures channels, timebase, and trigger (or the digital ports, or the signal generator), runs the capture, and publishes the result — analog traces to the Power tab, digital traces to the Logic tab. You’ll see the script in the tool call before it runs, and you can stop or edit it if needed.

Common gotchas

Check the USB cable — the scope is USB-powered, so a charge-only cable won’t enumerate it. Quit the PicoScope desktop app (the USB device is single-client), then re-run hardware_status.
Pico’s drivers probably aren’t installed — the setup prompt reports this. Install PicoScope 7 or the PicoSDK from picotech.com/downloads, then retry.
The V/div scale is too small — full scale is only ±4 × scale. A 3.3 V line needs 1 V/div; at 0.5 V/div it runs into the range limit. Ask the agent to widen the range.
A ×10 probe is switched to ×10 but the capture assumed ×1. Tell the agent “I’ve got a ×10 probe on channel A” so it corrects the range, reported volts, and trigger levels.
The shared capture buffer clamped the window rather than failing. Lower the sample rate, shorten the window, or disable unused channels and ports to free buffer.
Pico ships the legacy 3000 / 4000 / 5000 / 6000 series drivers as Intel-only. On Apple Silicon, use an Intel Mac, Windows, or Linux for these older scopes.

Next steps

Oscilloscope

Compare with the LAN/SCPI bench scope — screenshots and GND coupling.

Logic analyzer

Protocol decoding with a Saleae or Digilent when you need decoded frames, not raw transitions.

Combined workflows

Mix the PicoScope with GDB and power profiling in one debug session.

Debug mode overview

Back to the Observe → Hypothesize → Probe → Verify loop.
Last modified on July 15, 2026