Go Backend Release
Complete rewrite of the server in Go. Same WebSocket binary protocol and REST API — client unchanged.
Highlights
- Go backend replaces Node.js: lower CPU, native concurrency, single binary
- All demodulators: FM stereo, NFM, AM, SSB, SAM, CW with DC block + AGC
- Opus codec with WFM stereo (51-tap FIR, decimation, pilot detection)
- Bandwidth filtering per demodulator
- Codec availability control: admin can enable/disable codecs; server signals client at connect
- RTL-SDR serial-based identification for stable multi-dongle setups
- Optional rtl_tcp spawn from server
- Docker image: built with CGO, libopus + librtlsdr from Osmocom source
- Admin panel: dongle management, profiles, codec config
- Race-free hot path (cp.pmu, fanout RWMutex)