Skip to content

Hardware Validation

This page prepares live lab work. It does not claim that lab validation has already happened.

Status labels: - Verified now: backed by repository-local, hardware-free evidence. - Prepared for validation: commands, templates, and protocols are ready. - Pending lab validation: real device evidence still required. - Experimental: available in code but not mature enough to describe as stable.

Current Status

Backend Status Evidence
simulator Verified now deterministic tests, demo smoke, GUI smoke
replay Verified now committed fixtures, replay regression tests, CLI export tests
rtl_tcp Verified now for the repo code path mock transport test, deterministic disconnect/error handling
uhd Prepared for validation, Pending lab validation build-time integration, backend-unavailable tests, lab protocol below
soapy Prepared for validation, Pending lab validation build-time integration, lab protocol below

What Counts As Validation Evidence

Acceptable evidence for moving uhd or soapy to verified: - exact command lines used - attached logs from --log-level info or debug - saved JSONL measurement export from the same session - hardware metadata: device model, firmware/FPGA, SDK/driver version, antenna/cabling notes - a short stability run with clean startup and shutdown - replay comparison against a saved capture where possible

Not enough on its own: - “it seemed to work” - screenshots without commands or metadata - code compiles with the SDK installed - a simulator or replay run

Lab Command Templates

CLI startup smoke:

./build/sdr-analyzer-cli \
  --source uhd \
  --device-args "type=b200" \
  --channel 0 \
  --center-hz 100000000 \
  --sample-rate 2000000 \
  --gain-db 20 \
  --frames 20 \
  --log-level info \
  --log-file quality-artifacts/lab/uhd-startup.log

CLI short stream plus JSONL export:

./build/sdr-analyzer-cli \
  --source soapy \
  --device-string "driver=rtlsdr" \
  --channel 0 \
  --center-hz 433920000 \
  --sample-rate 2400000 \
  --gain-db 20 \
  --frames 200 \
  --log-level info \
  --log-file quality-artifacts/lab/soapy-stream.log \
  --export-jsonl quality-artifacts/lab/soapy-stream.jsonl \
  --export-interval 5

GUI lab smoke:

QT_QPA_PLATFORM=xcb PYTHONPATH=python python -m sdr_signal_analyzer

Replay comparison after a captured run:

./build/sdr-analyzer-cli \
  --source replay \
  --input captures/lab.sigmf-data \
  --meta captures/lab.sigmf-meta \
  --frames 50 \
  --log-level info \
  --log-file quality-artifacts/lab/replay-compare.log \
  --export-jsonl quality-artifacts/lab/replay-compare.jsonl

UHD Checklist

Status: Prepared for validation, Pending lab validation

Prerequisites: - UHD SDK installed before configure time - device visible to UHD tooling - known-good --device-args

Matrix to cover: - sample rate: 1 Msps, 2 Msps, 5 Msps if the device supports it - center frequency: one FM-broadcast-like target, one quieter band, one device-specific high-frequency target - gain: low, medium, and high gain values that the device accepts

Checks: 1. confirm the device enumerates outside this repo 2. start a short stream and confirm frames arrive 3. tune center frequency and verify visible spectrum movement 4. vary sample rate and gain and confirm the session remains stable 5. save diagnostics log and JSONL export 6. record a capture and replay it 7. document clean shutdown behavior

Failure capture: - exact command - last_error() text - diagnostics log path - environment metadata

SoapySDR Checklist

Status: Prepared for validation, Pending lab validation

Prerequisites: - SoapySDR core and device driver installed before configure time - known-good --device-string - device visible to Soapy tooling outside this repo

Matrix to cover: - sample rate: device-appropriate low/medium/high rates - center frequency: at least one strong known signal and one quieter range - gain: minimum, midpoint, and a high but not clipping-prone setting

Checks: 1. confirm the device is visible to Soapy tooling 2. run startup smoke and short streaming run 3. change center frequency and gain while observing motion 4. save logs and JSONL export 5. compare a recorded capture through replay 6. document driver-specific warnings or quirks

Acceptance Criteria For Future Verification

Before marking uhd or soapy as verified in README/docs: - startup succeeds on attached hardware - at least one short stream is stable - meaningful spectrum motion is visible - shutdown is clean - exact commands are preserved - logs and JSONL exports are attached - environment and hardware metadata are recorded - at least one report based on the hardware validation report template is committed or linked