Also known as: multimon-ng, multimon
multimon-ng is an open-source, command-line decoder for a grab-bag of legacy digital signalling modes carried in audio, most famously the POCSAG and FLEX pager protocols, along with AFSK packet, DTMF, and several others.1 It takes demodulated audio — typically FM discriminator or receiver audio — and prints the decoded messages as text, making it the usual back end for pager and low-speed data monitoring on an SDR.
How it works
multimon-ng expects demodulated audio, not raw IQ: a stream of 22050 Hz samples fed from a
pipe (commonly from an FM demodulator such as rtl_fm or an SDR application’s audio output),
a WAV file, or the sound card. The user selects one or more decoders on the command line, and
each runs on the same audio in parallel.
Each decoder implements its mode’s low-level recovery. For POCSAG it tracks the two-level FSK at 512, 1200, or 2400 bit/s, finds the preamble and frame-sync word, groups the interleaved code words, applies the BCH error-correcting code, and reassembles numeric or alphanumeric pages. FLEX decoding handles its 1600/3200/6400 bit/s multi-level FSK framing similarly. The AFSK decoders recover 1200-baud (Bell 202) and related tones and hand off frames that can be AX.25/APRS packets, and there are decoders for DTMF, ZVEI and other selective-calling tones, and more. Output is plain text lines, one per decoded message, easily logged or piped into other programs.
Because it works from audio, multimon-ng is front-end agnostic — anything that can produce the right demodulated audio can feed it, which is why it pairs naturally with cheap SDR dongles.
Relevance to SDR
multimon-ng is a mainstay for monitoring pagers and simple data bursts on an SDR: a common
recipe pipes rtl_fm audio straight into multimon-ng to read POCSAG/FLEX traffic in real
time. Its breadth of legacy modes makes it a handy utility for utility-signal hunting and for
teaching how these older FSK/AFSK protocols are framed and error-corrected. It is strictly a
decoder of the payload once a signal is demodulated; tuning, filtering, and demodulation are
the SDR front end’s job.
GopherTrunk is a separate project with different scope. GopherTrunk decodes IQ directly and concentrates on trunked-radio and digital-voice systems (P25, DMR, NXDN, TETRA, and more), handling its own channelization and demodulation rather than consuming pre-demodulated audio. Their coverage overlaps only at the edges — GopherTrunk’s protocol list does include some of the data/paging modes multimon-ng handles (such as POCSAG) — but the tools take different inputs and serve different workflows: multimon-ng is a lightweight audio-in, text-out decoder for legacy signalling, while GopherTrunk is an integrated IQ scanner. They can share hardware, and multimon-ng remains the simplest route to reading classic pager traffic.
Sources
-
multimon-ng — the source repository listing the supported decoders and audio input methods; background on the flagship mode is in the POCSAG Wikipedia article. ↩