Skip to content

Usage with rtl_fm

DJ edited this page May 31, 2020 · 6 revisions

While GQRX seems to give the best results in terms of audio quality (and runs well even on a Raspberry Pi 3B+), if you are using very low-spec hardware like a Raspberry Pi Zero, rtl_fm is much more forgiving and may be your only option. Additionally, rtl_fm has built-in frequency scanning functionality.

These instructions are written for Linux, but it is likely possible to set up on MacOS and Windows.

Note that the standard rtl_fm is not compatible, because it does not zero-pad the UDP output when squelch is enabled. You must install the keenerd fork which allows zero-padding.

  • To install the keenerd rtl_fm fork, there are good instructions found here. Follow steps 3-5: "Install pre-reqs and update", "Install the latest rtl-sdr code", "Blacklist the kernel's bundled RTL drivers".
  • Optional but helpful: Run rtl_test -p, take the ppm error measurement it gives you and provide that to rtl_fm with the -p option.
  • Test out the audio quality on a known frequency (Here's a NOAA weather frequency for example): rtl_fm -E pad -f 162.55M -s 48k | aplay -r 48000 -f S16_LE
    • NOTE: rtl_fm settings have a lot of configuration options, and you can probably do a lot better than this - read the rtl_fm docs. Particularly important:
      • -E pad is necessary for usage with timestampSDR
      • Sample rate provided to timestampSDR must be 48kHz (-s 48k, or -s <input sample rate> -r 48k to resample)
      • You will generally need to set the -l squelch option.
  • Once you have that working, ctrl+c that process and start it again, this time redirecting the output to the UDP port that timestampSDR will be using: rtl_fm -E pad -f 162.55M -s 48k > /dev/udp/127.0.0.1/7355
  • Refer back to the main README to start up timestampSDR