# Reported issues for Digilent WaveForms MCP Server

Pod holds 17 of 38 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [Digilent WaveForms MCP Server](/mcp/digilent-waveforms-mcp-server).

## Most discussed

### Add startup diagnostics to detect DWF SDK silent failure conditions

## Summary

Add startup-time environment checks in `server.py` that detect DWF SDK silent failure conditions and emit clear log warnings, instead of letting tools silently produce no physical output.

## Background & Motivation

The DWF SDK has a dangerous failure mode: when certain prerequisites are missing, `FDwfEnum()` returns 0 devices with no error, or API calls succeed but produce no physical signals. This was discovered during Docker USB passthrough debugging (see `docs/debug-docker-silen

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/49) · 2026-03-06 · closed · 2 comments

### AWG output stops immediately after generate_waveform returns (close resets analog_output)

## Problem

Calling `generate_waveform` to start a continuous waveform (`duration=0`) does not produce any signal that survives the tool call. Any follow-up measurement — via `analog_capture`, `measure`, or an external scope — shows no signal at the W1 pin.

## Reproduction

1. Loopback W1 to Scope CH1+ (or attach external scope to W1)
2. Call:

   ```python
   generate_waveform(channel=1, waveform="square",
                     frequency=1000, amplitude=2.5, offset=2.5, duration=0)
   # → retur

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/69) · 2026-04-27 · closed · 1 comment

### Release v0.1.0

## Summary

First release with hardware-validated tools.

## Tasks

- Update `version` in `pyproject.toml` to `0.1.0`
- Update `version` in `server.json` to `0.1.0`
- Final review of `README.md` badges and descriptions
- Create CHANGELOG (optional)
- Push tag `v0.1.0` → GitHub Actions publishes Docker image + MCP Registry

## Files

- `pyproject.toml`
- `server.json`
- `README.md`

## Dependencies

- M0 (environment setup) complete
- M1 (bug fixes) complete
- M2 (power & GPIO) complete
- M3 (SPI

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/27) · 2026-02-27 · closed · 1 comment

### Hardware validation — analog (W1→CH1 loopback)

## Summary

Validate analog tools using a W1 output → CH1 input loopback connection on the AD3.

## Tasks

- Use `generate_waveform` to output each waveform type (sine, square, triangle, ramp-up, ramp-down)
- Use `analog_capture` to capture waveforms and verify correct shape
- Use `measure` to verify all 5 measurement types (frequency, min, max, mean, pk2pk) return reasonable values
- Append results to `docs/hardware-validation.md`

## Files

- `docs/hardware-validation.md`

## Dependencies

- #

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/24) · 2026-02-27 · closed · 1 comment

### Add render_image option to protocol decode tools (SPI/I2C/UART)

## Summary

Extend the `render_image` pattern introduced in PR #88 (analog_capture / digital_capture / measure) to protocol decode tools, so that `spi_transfer` (and future `i2c_transfer` / `uart_transfer`) can return an annotated waveform PNG alongside the decoded frame data.

## Background & Motivation

PR #88 established the dual-output pattern for capture tools: a vision-capable LLM gets a PNG image (overview / pattern recognition) plus `ToolResult.structured_content` JSON (machine-readable 

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/89) · 2026-05-11 · open · 0 comments

### Add waveform image rendering to capture tools

## Summary

Add an opt-in `render_image: bool = False` parameter to `analog_capture`, `digital_capture`, and `measure` so the tools can return a PNG plot of the captured waveform alongside the existing samples / metrics. Vision-capable LLM clients can then "see" the signal directly instead of having to reason over thousands of raw sample values.

## Background & Motivation

When an LLM agent is helping with hardware bring-up or IC debugging, the most useful question is often "does this waveform 

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/85) · 2026-05-09 · closed · 0 comments

### Adopt uv.lock for reproducible builds (Docker + CI)

## Summary

Commit `uv.lock` and migrate Docker and CI from `uv pip install` to `uv sync --frozen` so that dependency versions are pinned per release tag and lock-file drift is detected automatically.

## Background & Motivation

The published image at `ghcr.io/kenosinc/dwf-mcp-server:X.Y.Z` is currently *not* reproducible:

- `Dockerfile` installs dependencies with `uv pip install --system --no-cache .`, which resolves the `>=` constraints in `pyproject.toml` (`fastmcp>=3.0`, `dwfpy>=1.0`) at b

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/71) · 2026-05-09 · closed · 0 comments

### Hybrid device connection lifecycle (auto-connect + explicit close + idle timeout)

## Summary

Replace the per-tool-call open/close device pattern (`with dwf.Device(...)`) with a hybrid persistent session model: auto-connect on first tool use, keep the device open across calls, support explicit `close_device`, and auto-close after idle timeout.

## Background & Motivation

Currently, all 8 tool call sites open and close the device on every invocation via `with dwf.Device(device_id=...) as device:`. This causes three problems:

1. **AWG continuous output stops immediately** — `

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/60) · 2026-03-07 · closed · 0 comments

## Most recent

### Build Docker image without bundled libdwf — install dependencies only

## Problem

The current Dockerfile downloads and installs both the Adept 2 Runtime **and** the WaveForms SDK (which includes `libdwf.so`) at build time. Since `libdwf.so` is proprietary (Digilent/NI), bundling it in a publicly distributed Docker image raises licensing concerns.

## Approach

- **Public image**: Includes only the Adept 2 Runtime (dependency libraries). `libdwf.so` is **not** bundled.
- **User installation**: Users create a derived Dockerfile that installs the WaveForms SDK as an 

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/43) · 2026-02-27 · closed · 0 comments

### Document libdwf installation and verify AD3 connectivity

## Summary

Document the step-by-step procedure to install the WaveForms SDK (libdwf) on the host machine and verify that an Analog Discovery 3 (AD3) is recognized and usable by `dwf-mcp-server`.

## Background

- `libdwf.so` is proprietary and must be installed on the host (never bundled in Docker).
- `dwfpy` depends on `libdwf.so` at runtime; the server fails at startup if it is missing.
- Users with a freshly connected AD3 need a clear, copy-paste-friendly checklist to go from zero to a worki

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/37) · 2026-02-27 · closed · 0 comments

### Release v0.2.0

## Summary

Major update release including all protocol tools and advanced analog features.

## Tasks

- Update `version` in `pyproject.toml` to `0.2.0`
- Update `version` in `server.json` to `0.2.0`
- Update `README.md` (new tool list)
- Update CHANGELOG
- Push tag `v0.2.0` → GitHub Actions publishes Docker image + MCP Registry

## Files

- `pyproject.toml`
- `server.json`
- `README.md`

## Dependencies

- M6 (I2C, UART, CAN) complete
- M7 (advanced analog) complete

## Size: S

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/34) · 2026-02-27 · closed · 0 comments

### Add AM/FM modulation and custom waveform to generate_waveform

## Summary

Extend `generate_waveform` with AM/FM modulation and custom waveform (arbitrary sample array) support.

## Tasks

- Add `modulation` parameter (AM / FM / none)
- Add `modulation_frequency` and `modulation_depth` parameters
- Add `waveform="custom"` + `samples: list[float]` parameter
- Add mock tests
- Update README with parameter descriptions

## Files

- `src/dwf_mcp_server/tools/analog.py`
- `tests/test_server.py`
- `README.md`

## Size: L

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/33) · 2026-02-27 · open · 0 comments

### Add trigger settings to analog_capture / measure

## Summary

Add trigger configuration parameters to `analog_capture` and `measure` for stable waveform acquisition.

## Tasks

- Add `trigger_source`, `trigger_level`, `trigger_slope` parameters
- Use `scope.setup_edge_trigger()`
- Support no-trigger mode (existing behavior) as the default
- Add mock tests
- Update README with parameter descriptions

## Files

- `src/dwf_mcp_server/tools/analog.py`
- `tests/test_server.py`
- `README.md`

## Dependencies

- #17 (analog API fix)

## Size: M

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/32) · 2026-02-27 · open · 0 comments

### Add device_telemetry tool

## Summary

Add an MCP tool to retrieve AD3 internal telemetry (temperature, voltage, current).

## Tasks

- Read AD3 PCB / FPGA temperature
- Read USB voltage/current, AUX voltage/current
- Implement `device_telemetry(device_index)` tool
- Add mock tests
- Update README with tool description

## Files

- `src/dwf_mcp_server/tools/devices.py`
- `tests/test_server.py`
- `README.md`

## Size: S

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/31) · 2026-02-27 · open · 0 comments

### Add can_send / can_receive tools

## Summary

Expose AD3 CAN protocol functionality as MCP tools.

## Tasks

- Use `device.protocols.can`
- Implement `can_send(device_index, bitrate, id, data, extended)` tool
- Implement `can_receive(device_index, bitrate, timeout)` tool
- Add mock tests
- Update README with tool descriptions

## Files

- `src/dwf_mcp_server/tools/protocols.py`
- `tests/test_server.py`
- `README.md`

## Size: M

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/30) · 2026-02-27 · open · 0 comments

### Add uart_send / uart_receive tools

## Summary

Expose AD3 UART protocol functionality as MCP tools.

## Tasks

- Use `device.protocols.uart`
- Implement `uart_send(device_index, baud_rate, data_bits, parity, stop_bits, data)` tool
- Implement `uart_receive(device_index, baud_rate, data_bits, parity, stop_bits, timeout)` tool
- Add mock tests
- Update README with tool descriptions

## Files

- `src/dwf_mcp_server/tools/protocols.py`
- `tests/test_server.py`
- `README.md`

## Size: M

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/29) · 2026-02-27 · open · 0 comments

### Add i2c_read / i2c_write tools

## Summary

Expose AD3 I2C protocol functionality as MCP tools.

## Tasks

- Use `device.protocols.i2c`
- Implement `i2c_read(device_index, address, register, length)` tool
- Implement `i2c_write(device_index, address, register, data)` tool
- Handle NACK (return error response)
- Add mock tests
- Update README with tool descriptions

## Files

- `src/dwf_mcp_server/tools/protocols.py`
- `src/dwf_mcp_server/server.py`
- `tests/test_server.py`
- `README.md`

## Size: M

[Read the thread](https://github.com/KenosInc/dwf-mcp-server/issues/28) · 2026-02-27 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/KenosInc/dwf-mcp-server/issues).
