Added Silent Disco HackRF Tool using Liquid DSP - #9
Open
daltoncox wants to merge 1 commit into
Open
Conversation
Member
|
Come up to the CTF table and show us it works. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Silent Disco multi-channel receiver (HackRF + liquid-dsp) — simultaneous multi-channel monitoring & live audio
Challenges addressed:
What this adds
A standalone C application (build/sdisco) that captures the entire 908–927.5 MHz Silent Disco band with a single HackRF One and FM-demodulates up to 10 channels simultaneously in software on one stream, mixing them into a single live stereo audio output. No GNU Radio / flowgraph required — pure C, built with CMake.
Demo-able without hardware
./build/sdisco -s -c A1,B3,E5 synthesizes FM transmitters at true RF frequencies carrying unique 400 Hz-spaced tones — verifies per-channel mixing, routing, and simultaneous multi-channel decode by ear or with tests/sim_test.c.
Signal chain (per channel)
NCO mix-down → Kaiser-windowed-sinc FIR channel-select/decimator (60 dB stopband, ±110 kHz) → FM discriminator (kf from --dev) → de-emphasis (0/50/75 µs) → resample 500 kHz → 48 kHz → 15 kHz audio LPF → peak-envelope AGC → per-chain gain → summed stereo output via PortAudio.
Files
CMakeLists.txt build setup (sdisco + sim_test)
src/main.c CLI, sim source, runtime keys, diagnostics
src/channel.c/h TX1345 A-E + Ultra-900 channel maps
src/hackrx.c/h HackRF int8 I/Q capture ring
src/dsp.c/h multi-channel FM demod DSP engine (parallel chains)
src/audio.c/h PortAudio playback (priming, underrun stats)
src/ring.c/h SPSC rings
tests/sim_test.c offline DSP validation (1/2/3/5+ chains)
tools/ dsp_from_file.c, iqdump_analyze.py (debug aids)
README.md usage, channel maps, architecture, bug log
Tested