Decoding FM subcarrier SCA with GNURadio

Decode SCA broadcast in the 88-108 MHz VHF FM broadcast band with GNU Radio Companion WBFM_SCA.grc along with numerous other GNU Radio examples.

GNU Radio Companion block diagram for FM SCA decode

GRC SCA decode diagram

This article explains SCA decoding as well as modern uses of spectrum adjacent to the main stereo VHF FM broadcast band signal.

How SCA decoding works

Consider the baseband FM diagram below. Do not confuse the abscissa with RF spectrum–this is baseband spectrum that is FM modulated before being transmitted on air. Unfortunately even some technically-oriented websites get this basic and critical fact wrong.

Plain monaural broadcast FM as used prior to 1955/1961, and used wisely by some talk stations today instead of stereo to improve geographic coverage area by reduction of multipath interference, is frequency modulated audio from 50 Hz - 15 kHz. FM multiplexing was employed in the early FM experiments by Armstrong, back to Nov. 1934 to send additional audio channels, faxes, etc. and SCA became generally legal for broadcasters in 1955. The April 1961 selection of the GE / Zenith FM stereo system chose a 19 kHz stereo pilot. 19 kHz is high enough above legacy monaural receivers low-pass filter response to not bother listeners.

year mono % SCA % stereo L-R % stereo pilot %
1948-1955 100
1955-1961 90 10
1961-1984 40 10 2 * 20 10
1984- (typ.) 45 10 2 * 22.5 10
1984- (max.) 40 20 2 * 20 10
  • stereo + SCA permits 110% modulation, deviation: 75 kHz → 82.5 kHz
  • SCA % allowed includes 57 kHz RDS
  • by taking 10 % away from main audio (5% L+R, 5% L-R) a total of 20 % can be SCA
WBFM baseband spectrum elements

WBFM baseband spectra with SCA, RDS, stereo elements.

SCA decode steps

To decode SCA audio:

  1. 88-108 MHz receiver, perhaps direct conversion RTL-SDR, assuming 960 ks/s
  2. bandpass filter say ± 180 kHz before FM demodulation, to block adjacent stations while not making too much distortion. Remember the infinite sidebands of FM–don’t just clip to ± 75 kHz, it will sound badly distorted. OK to decimate down to 480 ks/s.
  3. plain FM demodulation (differentiator) – do not use de-emphasis at this point.
  4. frequency translate and low-pass filter SCA carrier e.g. -67 kHz shift, then low-pass filter 10 kHz or so.
  5. FM demodulate this signal with 150 µs de-emphasis and decimate to sound card rate e.g. 48 ks/s
  6. A normal baseband audio signal is emitted, if one was broadcast at this SCA frequency.


Related: FMeXtra vs. HD Radio digital FM SCA