|
|
2 timmar sedan | |
|---|---|---|
| cmd/sdrd | 2 timmar sedan | |
| docs | 2 dagar sedan | |
| internal | 2 timmar sedan | |
| tools | 2 dagar sedan | |
| web | 2 timmar sedan | |
| .gitignore | 14 timmar sedan | |
| PLAN.md | 7 timmar sedan | |
| README.md | 2 timmar sedan | |
| TODO.md | 16 timmar sedan | |
| build-cuda-linux.sh | 2 dagar sedan | |
| build-cuda-windows.ps1 | 2 dagar sedan | |
| build-gpudemod-dll.ps1 | 2 dagar sedan | |
| build-sdrplay.ps1 | 1 dag sedan | |
| config.yaml | 2 timmar sedan | |
| go.mod | 7 timmar sedan | |
| go.sum | 4 dagar sedan | |
| start-sdr.ps1 | 4 dagar sedan | |
Go-based SDR analysis engine and live spectrum/waterfall UI, evolved from the original sdr-visual-suite into a more scalable foundation for wideband monitoring, candidate-driven refinement, classification, and demod/recording.
/api/gpuCore
go.mod)Optional (real device)
sdrplay_api.h + library)Optional (GPU)
nvcc for kernel build (Linux) or build-gpudemod-dll.ps1 (Windows)Windows build prerequisites (real device + GPU)
C:\msys64\mingw64\bin\gcc.exe / g++.exe) for CGO# From repo root
go run ./cmd/sdrd --mock
Open http://localhost:8080.
Edit config.yaml (autosave goes to config.autosave.yaml).
center_hz, sample_rate, fft_size, gain_db, tuner_bw_khzuse_gpu_fft, agc, dc_block, iq_balancedetector.*recorder.*decoder.*pipeline.mode — operating mode label (legacy, wideband-balanced, ...)pipeline.goals.* — declarative target/intent layer for future autonomous operation
intentmonitor_start_hz / monitor_end_hz / monitor_span_hzsignal_prioritiesauto_record_classesauto_decode_classessurveillance.analysis_fft_size — analysis FFT size used by the surveillance layersurveillance.frame_rate — surveillance cadence targetsurveillance.strategy — currently single-resolution, reserved for future multi-resolution modessurveillance.display_bins — preferred presentation density for clients/UIsurveillance.display_fps — preferred presentation cadence for clients/UIrefinement.enabled — enables explicit candidate refinement stagerefinement.max_concurrent — refinement budget hintrefinement.min_candidate_snr_db — floor for future scheduling decisionsrefinement.min_span_hz / refinement.max_span_hz — clamp refinement window span (0 = no clamp)refinement.auto_span — use mod-type heuristics when candidate bandwidth is missing/oddresources.prefer_gpu — GPU preference hintProfile defaults (wideband)
wideband-balanced: min_span_hz=4000, max_span_hz=200000wideband-aggressive: min_span_hz=6000, max_span_hz=250000resources.max_refinement_jobs — processing budget hintresources.max_recording_streams — recording/streaming budget hintresources.max_decode_jobs — decode budget hintresources.decision_hold_ms — hold time for queue slots before churnprofiles[] — named operating profiles/intent metadataIn phase 1, the engine stays backward compatible, but the config model now reflects the intended separation between:
The long-term target is that you describe what the system should do (for example broad-span monitoring intent, preferred signal families, auto-record/decode priorities), while the engine decides how to allocate surveillance, refinement and decoding budgets.
CFAR modes: OFF, CA, OS, GOSCA, CASO
go build ./cmd/sdrd
.\sdrd.exe --mock
$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
powershell -ExecutionPolicy Bypass -File .\build-cuda-windows.ps1
powershell -ExecutionPolicy Bypass -File .\build-sdrplay.ps1
This path:
gpudemod_kernels.dll (MSVC/nvcc)sdrplay,cufftsdrd.exeNotes:
build-sdrplay.ps1 expects MinGW at C:\msys64\mingw64\binGPUMOD_DLL=C:\path\to\gpudemod_kernels.dllexport 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
./build-cuda-linux.sh
GET /api/configPOST /api/configPOST /api/sdr/settingsGET /api/gpuGET /api/pipeline/policyGET /api/pipeline/recommendationsGET /api/refinement → latest refinement plan/windows snapshot (includes window_stats, queue_stats, decision_summary, decision_items, levels)GET /api/signals → current live signalsGET /api/events?limit=&since= → recent eventsGET /api/recordingsGET /api/recordings/:id (meta.json)GET /api/recordings/:id/iqGET /api/recordings/:id/audioGET /api/recordings/:id/decode?mode=FT8|WSPR|DMR|D-STAR|FSK|PSKGET /api/demod?freq=...&bw=...&mode=...&sec=... → audio/wavWS /ws/audio?freq=...&bw=...&mode=... → live PCM audio streamPut external decoder binaries/scripts under tools/ and configure decoder.* in config.yaml.
Placeholders: {iq}, {audio}, {sr}.
See tools/README.md for examples.
go test ./...
sdrplay support not built → rebuild with -tags sdrplay.CGO_CFLAGS / CGO_LDFLAGS.gpudemod_kernels.dll / cudart64_13.dll next to sdrd.exe (Windows).--mock to run without hardware.