> ## Documentation Index
> Fetch the complete documentation index at: https://docs.embedder.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PicoScope

> Ask Embedder to drive a USB PicoScope as an oscilloscope, logic analyzer, and signal generator — one device, auto-detected over USB

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

<Steps>
  <Step title="Be in debug mode">
    Run `/debug` or click the Debug button. The instrument tools are unavailable in act and plan modes.
  </Step>

  <Step title="Connect the PicoScope over USB">
    Plug the scope into the host over USB — it's USB-powered, no bench supply or LAN needed.

    <Warning>
      The PicoScope USB device is **single-client**. Quit the PicoScope desktop app before capturing, or Embedder can't claim the device.
    </Warning>
  </Step>

  <Step title="Install Pico's drivers">
    Install **PicoScope 7** or the **PicoSDK** from [picotech.com/downloads](https://www.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.

    <Check>
      Run `hardware_status`. A ready PicoScope shows up under the `picoscope` provider with its model and series.
    </Check>
  </Step>

  <Step title="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.

    <Warning>
      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.
    </Warning>
  </Step>
</Steps>

## 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.

| PicoScope series         | Logic capture (MSO) | Notes                                                                                                     |
| ------------------------ | ------------------- | --------------------------------------------------------------------------------------------------------- |
| 2000A/B (e.g. 2205A MSO) | ✓                   |                                                                                                           |
| 2000 / 3000 (legacy)     | —                   | Name the series in your prompt — legacy scopes can't be auto-detected. No signal generator on legacy 3000 |
| 3000A/B/D                | ✓                   |                                                                                                           |
| 3000E / 5000E            | —                   |                                                                                                           |
| 4000 / 4000A             | —                   |                                                                                                           |
| 5000 (legacy)            | —                   |                                                                                                           |
| 5000A/B/D                | ✓                   | Flexible resolution, 8–16 bit                                                                             |
| 6000 / 6000C/D           | —                   |                                                                                                           |
| 6000E                    | ✓                   |                                                                                                           |

<Note>
  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.
</Note>

## 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:**

```txt embedder theme={"system"}
> connect to the PicoScope, set channel A to 1V/div DC, timebase 1ms/div, trigger on a rising edge of A at 1.5V, capture, and tell me the rise time
```

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:**

```txt embedder theme={"system"}
> capture D0, D1, and D2 for 5ms at 5 MSa/s with a 1.65V threshold and show me the transitions
```

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:**

```txt embedder theme={"system"}
> generate a 1kHz sine at 1V amplitude on the AWG output, then capture channel A and tell me the measured frequency
```

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:**

```txt embedder theme={"system"}
> my scope is a legacy PicoScope 2000 — connect to it and capture channel A for 10ms
```

Legacy 2000 / 3000 scopes can't be auto-detected — name the series so the agent connects directly.

**Fit a longer window into the buffer:**

```txt embedder theme={"system"}
> capture channel A for 200ms — use whatever sample rate keeps it inside the buffer
```

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](/debug-mode/oscilloscope), the same prompts work — with a few USB-specific differences:

|             | PicoScope (USB)                         | Bench scope (LAN/SCPI)           |
| ----------- | --------------------------------------- | -------------------------------- |
| Connection  | USB, auto-detected — no host or IP      | LAN, needs the scope's IP / mDNS |
| Power       | USB-powered                             | Wall-powered                     |
| Screenshot  | — (no display)                          | ✓ (grab the scope screen)        |
| Coupling    | DC / AC                                 | DC / AC / GND                    |
| Bonus roles | Logic analyzer (MSO) + signal generator | Analog only                      |

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

<AccordionGroup>
  <Accordion title="PicoScope not detected">
    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`.
  </Accordion>

  <Accordion title="Detected but won't connect">
    Pico's drivers probably aren't installed — the setup prompt reports this. Install PicoScope 7 or the PicoSDK from [picotech.com/downloads](https://www.picotech.com/downloads), then retry.
  </Accordion>

  <Accordion title="The trace clips flat at the top or bottom">
    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.
  </Accordion>

  <Accordion title="Captured amplitude reads about 10× low">
    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.
  </Accordion>

  <Accordion title="Capture spans less time than I asked for">
    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.
  </Accordion>

  <Accordion title="Legacy scope on an Apple Silicon Mac won't connect">
    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.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Oscilloscope" icon="chart-line" href="/debug-mode/oscilloscope">
    Compare with the LAN/SCPI bench scope — screenshots and GND coupling.
  </Card>

  <Card title="Logic analyzer" icon="wave-square" href="/debug-mode/logic-analyzer">
    Protocol decoding with a Saleae or Digilent when you need decoded frames, not raw transitions.
  </Card>

  <Card title="Combined workflows" icon="diagram-project" href="/debug-mode/combined-workflows">
    Mix the PicoScope with GDB and power profiling in one debug session.
  </Card>

  <Card title="Debug mode overview" icon="bug" href="/debug-mode/overview">
    Back to the Observe → Hypothesize → Probe → Verify loop.
  </Card>
</CardGroup>
