In debug mode, Embedder can drive a Saleae or Digilent logic analyzer to capture digital signals, decode them as protocol frames, and surface the results in the Logic tab of the Console panel (VS Code extension and standalone app). Describe what you want to see — “capture I²C”, “show me the SPI frames” — and the agent handles the rest.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.
Logic analyzer support is in beta. Both vendors are supported through one agnostic API; the prompts you write are the same either way.
Prerequisites
Install host software
- Saleae
- Digilent
Install Saleae Logic 2 and enable the Automation API:
Embedder installs the
- Open Logic 2.
- Edit → Preferences → Automation.
- Enable the API on port
10430.

logic2-automation Python package automatically on first use.Wire your probes
Connect digital channels to your DUT signals. Note which channel index goes to which signal — you’ll mention them in your prompt.
Set up the desktop app correctly
- Saleae: Logic 2 must be running with the Automation API enabled — Embedder talks to the live app over port 10430. Don’t quit Logic 2 before prompting.
- Digilent: WaveForms must be closed. The AD3 only accepts one process at a time; if WaveForms has the device open, Embedder’s
dwfpywill fail to claim it.
Example prompts
Capture and decode I²C:embedder

embedder
embedder
embedder
embedder
embedder
Supported protocols
Saleae offers 23 native decoders; Digilent supports a subset of 11. Most common protocols work on both:| Protocol | Saleae | Digilent | Common options to mention |
|---|---|---|---|
| UART | ✓ | ✓ | bit rate, parity, stop bits |
| SPI | ✓ | ✓ | bits per transfer |
| I²C | ✓ | ✓ | 7-bit / 10-bit address mode |
| CAN | ✓ | ✓ | bit rate (default 500 kbit/s on Digilent) |
| LIN | ✓ | ✓ | bit rate, LIN version |
| 1-Wire | ✓ | ✓ | — |
| I²S / PCM | ✓ | ✓ | — |
| Manchester | ✓ | ✓ | bit rate, edge polarity |
| JTAG | ✓ | ✓ | — |
| Modbus | ✓ | ✓ | — |
| SWD | ✓ | — | — |
| USB | ✓ | — | — |
| HD44780, MIDI, MDIO, SMBus, BiSS-C, DMX512, HDLC, HDMI-CEC, PS/2, Synchronous Parallel, Atmel SWI | ✓ | — | — |
What the agent does for you
The agent writes a Python script that captures the requested channels, attaches a protocol decoder, and exports CSVs (decoded frames in hex) plus a native capture file. Captures auto-publish to the Logic tab of the Console panel (VS Code extension and standalone app) with waveform + decoded frames side by side, and persist under.embedder/captures/<sessionId>/<captureId>/ so you can come back to them later. TUI users get the same persisted files but no interactive chart.
Common gotchas
No data captured
No data captured
Check the threshold. Capturing 1.8 V signals at a 3.3 V threshold (default) gives a flat zero. On Saleae, set it explicitly: “use a 1.8V threshold”. On AD3, use a level shifter.
Decoded frames look like garbage
Decoded frames look like garbage
Wrong baud / clock / bits. UART defaults to 115200 8N1; SPI defaults to 8 bits per transfer. Mention the actual settings in your prompt.
Sample rate auto-snapped
Sample rate auto-snapped
The capture helper auto-snaps unsupported rates to the nearest valid rate and warns. If you need more bandwidth, ask: “use the maximum supported sample rate for this device”.
Capture immediately fails
Capture immediately fails
For Saleae, Logic 2 must be running with the Automation API enabled (Edit → Preferences → Automation, port 10430). For Digilent, the WaveForms desktop app must be closed — the AD3 only accepts one process at a time.
Next steps
Oscilloscope
Probe analog signal integrity when digital decode looks fine.
Combined workflows
Trigger a logic capture from a GDB breakpoint or GPIO edge.