|
|
2 dni temu | |
|---|---|---|
| cmd/sdrd | 2 dni temu | |
| docs | 3 dni temu | |
| internal | 2 dni temu | |
| tools | 3 dni temu | |
| web | 2 dni temu | |
| .gitignore | 3 dni temu | |
| README.md | 3 dni temu | |
| build-cuda-linux.sh | 3 dni temu | |
| build-cuda-windows.ps1 | 3 dni temu | |
| build-gpudemod-dll.ps1 | 3 dni temu | |
| build-sdrplay.ps1 | 2 dni temu | |
| config.yaml | 3 dni temu | |
| go.mod | 5 dni temu | |
| go.sum | 5 dni temu | |
| sdr-visual-suite.rar | 2 dni temu | |
| start-sdr.ps1 | 4 dni temu | |
Go-based SDRplay RSP1b live spectrum + waterfall visualizer with an event recorder, classifier, and demod/recording pipeline.
data/events.jsonl)/api/gpu# From repo root
go run ./cmd/sdrd --mock
Open http://localhost:8080.
This project uses the SDRplay API via cgo (sdrplay_api.h). Ensure the SDRplay API is installed.
$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
The only supported Windows build path in this repository is:
powershell -ExecutionPolicy Bypass -File .\build-cuda-windows.ps1
powershell -ExecutionPolicy Bypass -File .\build-sdrplay.ps1
This path uses:
nvcc + MSVC to build gpudemod_kernels.dllgpudemod pathImportant:
gpudemod_kernels.dll is copied next to sdrd.exe by build-sdrplay.ps1build-sdrplay.ps1 prepares the runtime DLL placement and PATH setup for SDRplay + CUDA DLLs-cudart=hybridSDR_GPU_VALIDATE=1 when debuggingGPUMOD_DLL=C:\path\to\gpudemod_kernels.dll__cdecl redefined warning from CUDA headersexport 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
Edit config.yaml:
bands: list of band rangescenter_hz: center frequencysample_rate: sample ratefft_size: FFT sizegain_db: device gain (gain reduction)tuner_bw_khz: tuner bandwidth (200/300/600/1536/5000/6000/7000/8000)use_gpu_fft: enable GPU FFT (requires CUDA + cufft build tag)agc: enable automatic gain controldc_block: enable DC blocking filteriq_balance: enable basic IQ imbalance correctiondetector.threshold_db: power threshold in dB (fallback if CFAR disabled)detector.cfar_enabled: enable OS-CFAR detectiondetector.cfar_guard_cells, detector.cfar_train_cells, detector.cfar_rank, detector.cfar_scale_db: OS-CFAR window + ordered-statistic parametersdetector.min_duration_ms, detector.hold_ms: debounce/mergerecorder.*: enable IQ/audio recording, preroll, output_dir, max_disk_mbdecoder.*: external decode commands (use {iq}, {audio}, {sr} placeholders)GET /api/configPOST /api/configPOST /api/sdr/settingsGET /api/gpu/api/events reads from the JSONL event log:
limit (optional): max number of events (default 200, max 2000)since (optional): Unix milliseconds or RFC3339 timestampGET /api/signals → current live signals (latest snapshot)GET /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/wavPut external decoder binaries/scripts under tools/ and configure decoder.* in config.yaml.
See tools/README.md for examples.
go test ./...
sdrplay support not built, rebuild with -tags sdrplay.CGO_CFLAGS and CGO_LDFLAGS point to the API headers and library.--mock to run without hardware.