選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
Jan Svabenik 270ebf3c27 Accumulate IQ samples to match FFT size 5日前
cmd/sdrd Split span zoom from sample rate control 5日前
internal Accumulate IQ samples to match FFT size 5日前
web Invert gain control for SDRplay gain reduction 5日前
.gitignore Add events API and timeline UI 5日前
README.md Add UI controls and runtime SDR settings 5日前
config.yaml Add UI controls and runtime SDR settings 5日前
go.mod Initial SDR visual suite 5日前
go.sum Initial SDR visual suite 5日前

README.md

SDR Visual Suite

Go-based SDRplay RSP1b live spectrum + waterfall visualizer with a minimal event recorder.

Features

  • Live spectrum + waterfall web UI (WebSocket streaming)
  • Event timeline view (time vs frequency) with detail drawer
  • In-browser spectrogram slice for selected events
  • Basic detector with event JSONL output (data/events.jsonl)
  • Events API (/api/events?limit=...&since=...)
  • Runtime UI controls for center frequency, span, FFT size, gain, AGC, DC block, IQ balance, detector threshold
  • Recorded clips list placeholder (metadata only for now)
  • Windows + Linux support
  • Mock mode for testing without hardware

Quick Start (Mock)

# From repo root

go run ./cmd/sdrd --mock

Open http://localhost:8080.

SDRplay Build/Run (Real Device)

This project uses the SDRplay API via cgo (sdrplay_api.h). Ensure the SDRplay API is installed.

Windows

$env:CGO_CFLAGS='-IC:\Program Files\SDRplay\API\inc'
$env:CGO_LDFLAGS='-LC:\Program Files\SDRplay\API\x64 -lsdrplay_api'

go build -tags sdrplay ./cmd/sdrd
.\sdrd.exe -config config.yaml

Linux

export CGO_CFLAGS='-I/opt/sdrplay_api/include'
export CGO_LDFLAGS='-L/opt/sdrplay_api/lib -lsdrplay_api'

go build -tags sdrplay ./cmd/sdrd
./cmd/sdrd/sdrd -config config.yaml

Configuration

Edit config.yaml:

  • bands: list of band ranges
  • center_hz: center frequency
  • sample_rate: sample rate
  • fft_size: FFT size
  • gain_db: device gain
  • agc: enable automatic gain control
  • dc_block: enable DC blocking filter
  • iq_balance: enable basic IQ imbalance correction
  • detector.threshold_db: power threshold in dB
  • detector.min_duration_ms, detector.hold_ms: debounce/merge

Web UI

The UI is served from web/ and connects to /ws for spectrum frames.

Controls Panel

Use the right-side controls to adjust center frequency, span, FFT size, gain, AGC, DC block, IQ balance, and detector threshold. Preset buttons provide quick jumps to 40m/20m/17m.

Event Timeline

  • The timeline panel displays recent events (time vs frequency).
  • Click any event block to open the detail drawer with event stats and a mini spectrogram slice from the latest frame.

Config API

  • GET /api/config: returns the current runtime configuration.
  • POST /api/config: updates center_hz, sample_rate, fft_size, gain_db, and detector.threshold_db at runtime.
  • POST /api/sdr/settings: updates agc, dc_block, and iq_balance at runtime.

Events API

/api/events reads from the JSONL event log and returns the most recent events:

  • limit (optional): max number of events (default 200, max 2000)
  • since (optional): Unix milliseconds or RFC3339 timestamp

Example:

curl "http://localhost:8080/api/events?limit=100&since=1700000000000"

Tests


go test ./...

Troubleshooting

  • If you see sdrplay support not built, rebuild with -tags sdrplay.
  • If the SDRplay library is not found, ensure CGO_CFLAGS and CGO_LDFLAGS point to the API headers and library.
  • Use --mock to run without hardware.