Decoding POCSAG on Ubuntu with a RTL-SDR dongle

POCSAG is an asynchronous protocol used to transmit data to pagers.
The family of POCSAG protocols can operate at three speeds, 512 bits per second (the original specification speed) is the base standard.
POCSAG-decoding

1. Hardware

– One computer running Ubuntu
– 1 DVB-T USB receiver (usually used to receive HD TV on computers)
RTL-SDR-module-USB

2. Software

– OS : Ubuntu 16.04.1 LTS
– Driver : Rtl-sdr
– Software defined radio receiver (SDR) : Gqrx
– Decoder : Multimon-ng

3. Installation

3.1 Preparation

Let’s install first all the tools that we’ll need :

sudo apt-get update
sudo apt-get upgrade
sudo apt-get -y install git cmake build-essential libusb-1.0 libusb-1.0-0-dev qt4-qmake libpulse-dev libx11-dev

3.2 Driver : Rtl-sdr

Clone it from git, compile and install :

git clone git://git.osmocom.org/rtl-sdr.git
cd  rtl-sdr
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
cd ~
sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
sudo reboot

3.3 Software defined radio receiver (SDR) : Gqrx

On Ubuntu, it’s really easy to install Gqrx :

sudo apt-get update
sudo apt-get install gqrx-sdr

3.4 Decoder : Multimon-ng

Clone it from git, compile and install :

sudo apt-get update
mkdir multimon-ng
cd multimon-ng
mkdir build
cd build
qmake ../multimon-ng.pro
make
sudo make install

4. Gqrx

You can start Gqrx and then :
– Start DSP processing (in red)
– Adjust frequency to a POCSAG frequency (in blue)
– Start UDP streaming (in green)
– Adjust parameters as below (in pink)
gqrx-configured-for-POCSAG
The short burst of data are POCSAG data. Let’s decode it !

4. Multimon-ng

Here is the command to decode the POCSAG messages :

nc -l -u 7355 |     sox -t raw -esigned-integer -b16 -r 48000 - -esigned-integer -b16 -r 22050 -t raw - |     multimon-ng -t raw -a SCOPE -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -f alpha -

Then, when you’ll hear a POCSAG data, you should be able to read the decoded data in the terminal :
decoded-POCSAG-data

6 thoughts on “Decoding POCSAG on Ubuntu with a RTL-SDR dongle”

  1. This doesn’t work. When the command is run, a blank screen pops up and nothing is decoded in the terminal. Any ideas?

    1. The standard UDP port has moved at least in the Ubuntu 18.04 GQRX ppa to 65535. If you change the port number it will work.

      1. Change the port number where? I can see waves in the multimon-ng terminal, yet nothing is decoded.

  2. Everything works well but don’t get any data in the terminal.
    I try to receive and decode data sent from my weather station at 868 MHz.
    It there a chance to decode data with multimon?

    Luci

  3. I’m running Kubuntu 19.04 LTS, with 2 terminals open
    terminal 1 has the Gqrx program running with the frquency set to 153,350,000 and in terminal 2 I ran the command:-

    nc -l -u 7355 | sox -t raw -esigned-integer -b16 -r 48000 – -esigned-integer -b16 -r 22050 -t raw – | multimon-ng -t raw -a SCOPE -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -f alpha –

    port set to 7355 in Gqrx and everything is running sweet, a few characters are dropped but you can still make sense of it all.

    Thanks

    Micky B

Leave a Reply to Dave2 Cancel reply

Your email address will not be published. Required fields are marked *