Configuring SDR for Fire Pager Scanning
A boring post on building a SDR scanning machine based on a cheap RTL dongle and an old emachines computer.
The Project
I’m a volunteer firefighter and currently our method of receiving pages is… outdated. We carry these black Motorola Minitor pagers which audibly alert us when we are needed. This works great most of the time. We need some extra things to happen so I’ve started looking at how SDR can help us.
My goals are:
- Capture ONLY pages meant for my district as an audio file and email/MMS that audio to the department.
- When a page is received do things at the station:
- Turn on the compressor on a timer
- Activate some lights
- Play audio over the speakers
- Send the address to a tablet on the truck
The Hardware
I’m running XUbuntu 14.04 LTS. The processor is an AMD Athlon 64 bit with 865 MB of RAM (wewt). I’m using a cheap RTL based dongle for the RX part of this project. The antenna is a 2 meter J-Pole one of my fellow firefighters built for HAM use. It’s not perfectly tuned but it’s “Good Enough.” To interact with the world I’m using a Phidget 8/8/8 Interface.
The Software
I’m using almost all completely Open Source software.
- RF RX and demodulation: rtl_fm
- Receives on our pager frequency
- Squelch noise until signal received
- Demodulate audio and send to processing script
- Audio Processing: TwoToneDetect
- Audio Plumbing: PulseAudio
- Real World Interface: Custom Python Script (Phidget)
The whole project is on GitHub.
rtl_fm is a demodulator for multiple FM modes but I’m specifically using the Narrowband mode since that is what our pagers use.
rtl_fm -N -f 162.50M -p 60 -o 4 -l 120 | play -t raw -r 24k -e s -b 16 -c 1 -V1 -q -
This command will start rtl_fm tuned to our frequency, using Narrowband, with a correction factor of 60 (since our cheap dongle is… well, cheap), an oversample of 4x and a squelch of 120. We pipe that through sox so it comes out via the speakers (which are connected to the station intercom.)
Once everything is coming through the speakers we can use the monitor device in pulseaudio to pipe that audio back into the listening TwoToneDetect. Oddly, the only version of TTD I could get working in headless mode with PulseAudio was the Raspberry Pi version.
TwoToneDetect is able to call a command script once an alert is received. I’m calling a python script which sends an output lead high and activates the relay which turns on our air compressor. This way when we arrive at the station the air brakes on the fire truck are completely charged and ready but we don’t have to leave the compressor on ALL the time (which burns them out far too fast.)
About the author
Brooks Garrett is a dedicated technologist who specializes in information security. Brooks has spent over 10 years implementing security programs for both the public and private sector including some of the biggest names in the Fortune 500. When he's not managing risk in the corporate environment you can find him at the local firestation where he is a volunteer firefighter.