Skip to content
Alwin edited this page Aug 3, 2026 · 8 revisions

The method to my madness of adding SDR Squelch Mode in an intercom app?

I was frustrated with the lack of squelch options in CubicSDR (the ideal SDR software for me), which ended original development years ago. The best it seems to have is "auto-zero squelch" which sometimes breaks squelch with static, or ends up being so high dynamically that actual transmissions are seen on the waterfall but are squelched. So once I got WebRTC VAD in v0.1.8 just for Bluetooth, the v0.1.8-sdr feature release development flowed from that.

Now a user can filter a raw, un-squelched in any way, radio frequency initially demodulated by their SDR frontend (which, even if recently-released, may still only have crude forms of squelch) and hear it through their system output with either VAD/legacy envelope follower, or CTCSS, squelch.

This is the partial-inverse of PA Mode as originally conceived; instead of the user broadcasting their own microphone signal out any selected output, a non-Bluetooth radio transmitter becomes the PA's wireless microphone and the computer cross-band repeats it, from any analog modulated frequency supported by the SDR, to Bluetooth's 2.4 GHz ISM frequencies.

You may be able to resurrect some old wireless baby monitors & other transmitters without receivers, if you can find their specified operating frequencies, or determine them via RF capture and near-field frequency finding.

And couldn't this also be the squelch component of the receiver stage in a 2-way radio repeater?

CTCSS Auto-Scanning & Squelch (--sdr)

If any transceiver you come across transmits a CTCSS tone, --sdr without -tone will automatically scan for it (as long as you've tuned your SDR to its transmit frequency), print it to the terminal, and allow you to interactively lock it (if you don't just save it for strict --sdr -tone <frequency> entry).

⚠️ Note on Noise & Static: Some repeaters don't pass these tones, so be prepared to hit Esc when you try to lock a non-existent tone. Radio spectrum is so broad-banded, even on silence, that transient "tones" will be detected even when no CTCSS generator is functioning. Only simplex transmissions, with CTCSS generator active, may reliably be scanned.


Funny thing about it, if you...

  1. Set your system input to a non-Bluetooth microphone or line-in, instead of a virtual device (eg. Soundflower)
  2. Set your system output to your Bluetooth speaker
  3. Run ./macintercom --sdr

HFP won't switch on just like it doesn't switch on for Soundflower; it only does for a Bluetooth speaker & its integral mic at once - the Media-Aware & Standalone modes.

In --sdr, non-Bluetooth inputs will form a PA with your Bluetooth speaker, with Voice Activity Detection on by default (unless you debugflag it false to switch to the legacy envelope follower). Although. there is a slight but noticeable digital noise floor, for lack of a better vocabulary, with VAD. Haven't re-compiled to see how a legacy envelope follower PA sounds yet.

PA Mode was roadmapped for v0.2, but maybe it can just be documented here as a side-benefit of --sdr rather than adding a mostly-redundant --pa argument across the codebase, to also switch off the Bluetooth mic (HFP) in favor of A2DP.