|
|
1 kuukausi sitten | |
|---|---|---|
| cmd | 1 kuukausi sitten | |
| docs | 1 kuukausi sitten | |
| examples | 1 kuukausi sitten | |
| internal | 1 kuukausi sitten | |
| libiio | 1 kuukausi sitten | |
| scripts | 1 kuukausi sitten | |
| .gitignore | 1 kuukausi sitten | |
| CHANGELOG.md | 1 kuukausi sitten | |
| PROJECT_PLAN.md | 1 kuukausi sitten | |
| README.md | 1 kuukausi sitten | |
| RELEASE.md | 1 kuukausi sitten | |
| go.mod | 1 kuukausi sitten | |
Go-based FM stereo transmitter with RDS. Supports ADALM-Pluto (PlutoSDR) and any SoapySDR-compatible TX device.
Audio Source → PreEmphasis(50µs) → StereoEncoder(19k+38k) → RDS(57k)
→ MPX Combiner → Limiter → FM Modulator(±75kHz)
→ IQ Resample(228k→528k) → SoapySDR → PlutoSDR RF
# Without hardware (simulation/offline only):
go build ./cmd/fmrtx
go build ./cmd/offline
# With SoapySDR hardware support (requires PothosSDR installed):
go build -tags soapy ./cmd/fmrtx
.\fmrtx.exe --list-devices
.\fmrtx.exe --dry-run --dry-output build/dryrun/frame.json
go run ./cmd/offline -duration 2s -output build/offline/composite.iqf32
# Start with manual TX control via HTTP:
.\fmrtx.exe --tx --config docs/config.plutosdr.json
# Start with auto-TX on launch:
.\fmrtx.exe --tx --tx-auto-start --config docs/config.plutosdr.json
POST http://localhost:8088/tx/start → start transmission
POST http://localhost:8088/tx/stop → stop transmission
GET http://localhost:8088/runtime → engine + driver telemetry
GET http://localhost:8088/status → config status
GET http://localhost:8088/config → full config
POST http://localhost:8088/config → patch config (freq, RDS, etc.)
GET http://localhost:8088/dry-run → dry-run summary
GET http://localhost:8088/healthz → health check
outputDrive 0..1 maps to 0..89 dB)plutosdrcmd/
fmrtx/ main CLI (--tx, --dry-run, --simulate-tx, --list-devices)
offline/ offline IQ file generator
internal/
app/ TX engine (continuous chunk loop) + simulated transmit
audio/ sample types, WAV loader, resampler, tone generator
config/ config schema, validation, PI parsing
control/ HTTP control plane (/tx/start, /tx/stop, /runtime)
dryrun/ JSON dry-run summaries
dsp/ oscillator, pre-emphasis, FM modulator, limiter, Goertzel, IQ resampler
mpx/ MPX combiner
offline/ offline composite generation (full DSP chain)
output/ backend abstractions (file, dummy)
platform/ SoapyDriver interface, SoapyBackend, SimulatedDriver
platform/soapysdr/ CGO SoapySDR native binding (build tag: soapy)
rds/ RDS encoder (IEC 62106, CRC, differential, group scheduler)
stereo/ stereo encoder (19 kHz pilot, 38 kHz DSB-SC)
docs/
config.sample.json default config
config.plutosdr.json PlutoSDR-specific config
scripts/
examples/
This project is intended only for lawful use within relevant license and regulatory constraints. RF output, deviation, filtering, and transmitted power must be validated with proper measurement equipment.