RTL-SDR Tutorial: POCSAG Pager Decoding
The RTL-SDR software defined radio combined with SDRSharp, and a POCSAG/Flex capable decoding application can be used to decode pager messages. With this setup you can receive pager messages from all pager users on the system. If you don't know what a pager is, since they are now uncommon, here is a brief explanation from Wikipedia:
A pager is a wireless telecommunications device that receives and displays numeric or text messages, or receives and announces voice messages.
Not many people use pagers these days with mobile phone text messaging being used more, but pagers are still popular with doctors, hospitals in general, some fire and ambulance agencies and various IT companies, as they tend to be more reliable and have greater coverage.
![A Pager](https://www.rtl-sdr.com/wp-content/uploads/2013/05/pager.jpg)
Privacy and Security
Obviously a lot of messages sent through pagers are plain text and contain personal data. Especially messages from hospitals. This is a concern as it is a major breach of patient privacy.
Security concerns also stem from the fact that many IT companies set up systems that forward notices of emails being received with the subject line visible, and system messages that contain IP addresses, email addresses and names, database error messages, and URLs.
Previously an art installation in New York was set up with an SDR to try and highlight some of the privacy and security concerns that pager use brings.
We note that in most countries it is perfectly legal to receive pager messages, as they are plain text unencrypted, but it is illegal to share or act on the information received. In some countries it may be illegal to even set up a receiver. Please research and respect your local laws before attempting this project.
Examples
Here YouTube user nerdymark shows 18 minutes of pager decoding using SDRSharp, PDW and an RTL-SDR.
Tutorial
While directed at the RTL-SDR, this tutorial may also be useful for use with other software defined radios such as the Funcube dongle, Airspy and HackRF, or even traditional hardware radios with a discriminator tap.
Since pager signals are usually transmitted at a very strong power, usually almost any antenna will work to receive them, even the stock antenna that comes with the dongle. Pager frequencies differ among different countries. Usually they will be anywhere from 137 - 160 MHz, around ~450 MHz, or around 900 MHz. Check radioreference.com or Google for frequencies in your area, or just search for them manually - they are usually quite easy to spot. Pagers normally use either the POCSAG or FLEX protocols, and the signals will look on a waterfall something like the signal shown below. They also have a distinctive sound when played with NFM mode. A sound sample is also shown below.
![POCSAG Waterfall Image](https://www.rtl-sdr.com/wp-content/uploads/2013/04/POCSAGWaterfall-80x300.png)
For this tutorial, you will need to have an RTL-SDR dongle set up and working with SDRSharp. We will assume you have this much done already. If you do not, visit the Buy RTL-SDR page, and then the Quickstart guide. You will also need to have an audio piping method installed and set up. Audio piping will allow the audio from SDRSharp to be passed to a decoding program. You can use either windows stereo mix, VB-cable (free) or Virtual Audio Cable (paid with trial version).
Now, to decode the POCSAG or Flex signals, you need need to download and install a free program called PDW, which can be downloaded from this page, then follow these steps.
- Open SDRSharp and set the audio piping method to the one you will use under the Audio Output drop down box and then press Play.
- Tune to a pager POCSAG/Flex signal. Set the receive mode to NFM, filter bandwidth to 12500 Hz, filter order to 10, turn squelch OFF and filter audio OFF. Adjust the RF gain settings under the configure menu until good reception is achieved.
- Open PDW. You may initially receive some errors upon first opening it, but they can be safely ignored. Go to Options -> Options and Click Enable Pocsag Decoding, and ensure the 512, 1200 and 2400 boxes are all checked. Also, ensure Enable Flex Decoding is enabled and that the 1600, 3200 and 6400 boxes are all checked. Press OK.
- Go to Interface -> Setup. Enable the Soundcard checkbox, set the Configuration to Custom, and choose your audio piping method in the Soundcard drop down box. If you only have one audio piping method enabled in the Windows recording properties, it will automatically choose that method. Press OK.
- Go to Monitor, and ensure POCSAG/FLEX is ticked.
- Now, if everything is set up correctly, the pager audio from SDRSharp should be being sent to PDW. In the top right hand corner of PDW, there should be a volume gauge. You will need to adjust the volume settings in SDRSharp, and/or the Windows volume settings so that the volume meter goes up when a pager signal is sent. The percentage shown below the gauge shows the decode error rate. If you are receiving good signals the error rate should be very low and the percentage should be at or near 100%.
Other Decoding Software
MultimonNG is a Linux based decoder which is lightweight enough to run on a Raspberry Pi using rtl_fm.
PagerMon is a app that records and displays all messages from MultimonNG in a nice web page.
Some Tips
- Pager signals are generally very strong, and so almost any antenna can pick them up - even the stock antenna included with many dongle packages. However, if you live far away from the transmitter a better antenna matched to the pager frequency you want to monitor may be required.
- If reception is very poor, you may get some garbled messages in the PDW window.
- Since pagers can be so strong, you may actually need to reduce the RF gain to clearly discern between a real pager and an image. Reducing the gain may also help decoding if it is so strong that it begins overloading in the RF spectrum.
- Sometimes setting the volume too loud can cause the pager audio signal to become distorted. Make sure you do not have the audio set too loud.
![]() The Hobbyist's Guide to the RTL-SDR: Really Cheap Software Defined radio. |
I this system just to decode pager messages in your area or can it be set up to send yourself messages like weather updates?
Running PDW v3.1 on a new Windows 10 machine using SDR# to decode 155.520 mhz. Have an antenna in the attic. Generally get high 80s to low 90s on decode %. Have the volume set on max. Using Virtual Audio Cable.
Besides adjusting RF gain (currently at 12.5 dB) and Sampling Mode (currently 1.024 MSPS), are there other SDR# settings that should be tweaked from the default recommendations?
PDM “Feature>>>Interface/volume…” I click on volume… and interface drop down goes away. No access.
I can’t proceed further than step 2 under the “Decoding Via the Sound card”
VBaudio pipe installed and showing up in win audio settings and bounces the PDM signal needle 2% span.
Win 10 pro 1909 64
RTL-SDR dongle, the silver one.
Sdr# Works well
PDM 3.1Full
Anyone out there know what I’m doing wrong?
I have the same issue.
Worked 100% correctly upon first install, thanks for this guide!
What does ‘Tone Only’ under Messages signify?
Lol, this question betrays your age but its a good one to ask. Tone Only is when you dial the pager number and do not send a message, so the message is “only a tone” with no actual message attached. If you had ever carried a pager you would sometimes get this on the pager itself and it makes more sense.
Unfortunately, PDW simply will not work on Windows 7 for me. Is there anything that is actually being maintained?
Go to http://www.baycom.de/download/poc32/ download poc32, if you have a problem with the 2016 version download the 2015 version in the obsolete directory. Decoding in windows is down to having set your AUDIO volume levels correctly. Do not use squelch , try and set volume levels between 85-100 .
thought it was me ,
seems like the whole rtl sdr doesnt work very well in windows 7
is it just the driver enforcement
What means “UNKNOWN SYNC HEADER :FFFF DDDD AAAA CCCC”?
Mircea
Multimon-ng was not able to decode group messages, its been fixed now (today) it hasn’t been pulled back into EliasOenal’s master branch yet (probably later tonight) but you can download the updated FLEX version at (https://github.com/Zanoroy/multimon-ng)
Small python script that can be used on a RaspberryPi in order to receive pager messages and forward them to a telegram channel (instant messaging). See: https://github.com/stefanmoosbrugger/pager_telegram_forwarder
Just some notes for anyone struggling to get this working:
Around 153-154 MHz
Big signals are best – just need the right settings:
set bandwidth wide enough to capture signal
adjust gain so peaks are just below 0
set filter order to 10
mode: NFM
use a low RF sample rate (e.g. 1.024 MSPS)
I’d been having some trouble myself but now I have data come through loud and clear!
I’ve been decoding POCSAG for a couple years on strong signals. Recently started attempting FLEX on weaker signals with a very low decode percentage. Thanks to your post, I’m now in the 95- 100% range. Thanks for the help!
PDW will not let me change the Soundcard configuration. It lists my microphone and it’s shaded, so I can’t change it
I am having problems with this. I had it set up by someone else and now ahve lost all signals is there anyone that help me asap before i give up.
So I’ve got PDW running in wineskin on OS X and GQRX. So far so good without any problems. Loving this, it’s interesting stuff.
I meant to add, using the windows version, along with wineskin.
I didn’t know filter order mattered, but now that I change it from 1000 to 10 I seem to get better decoding, if only slightly. What is filter order and why does it matter?
Holy cow it works. Been wondering what these sounds were on 929 for over a year. Decodes great. So strong I had to turn gain wayyyy down to like 8db to keep it from distorting the band. RTLs are cheap so their front end isnt as good but this is awesome.
I was able to get it to work using the directions in the above tuorial, BUT the volume slider in SDR# has to be set to the max. Also make sure to turn off FILTER AUDIO. Use a bandwidth appropriate to the signal you are monitoring.
Hi guys
I am new to the decoder and apologize if it’s been asked over and over. I think I have it set up right, but I am getting very low %s, like under 10%. My reception seems to be great in my location. Any help is greatly appreciated
Sam
Can’t get the PDW to decode.
It shows POCSAG-2400 (when a signal comes in) on the title but no message appears…
The signal meter is full scale when the POCSAG beep is in.
I have this exact same phenomenon, the messages are really short, and it just shows POCSAG 2400 in the title but never writes anything to the message log.
Will this method decode Flex 6400?
Does anyone know what the yellow triangle with an exclamation point in it means? It shows up next to the signal meter.
What if POCSAG is send over DMR? Is it still possible?
Is it possible to somehow then forward this messages to external custom application to forward it to SMS?
Thank you!
You can send it directly using the carrier’s email to small addresses.
Sms*
I got it to work! Excellent guide, thank you.
I tried to do the above, but couldn’t get the results. I purchased a USB dongle radio, the R820T. I installed the drivers on a Win XP computer, using zadig. Then installed and fired up SDRSharp and did all the settings as described above. Then I downloaded and installed the Virtual Audio Cable app (while the latest version is not free, their earlier version, V3 is free and I installed that). Finally, I installed the POCSAG decoder, and set it up as described. So, SDRSharp is running and showing the waterfall, and making the funny noises (just for test, I tried to tune to some local radio stations, but got nothing). I have 3 pagers on 3 different frequencies. I tried all 3 of them and always get similar behaviour. I see some changes on the signal when a page is sent to a pager sitting on my desk. The Virtual Audio Cable app also has some sound level monitoring, and those are also moving up and down. But the POCSAG decoder remains silent. It’s not getting (or not showing) anything. The needle on little sound level monitor icon in the upper right corner is constantly moving (even if SDRSharp is not running, so I think it’s just a fake gag), and nothing ever shows up in PDW. There are many settings to play around with, but I don’t even know where to start. For example, how do I know what’s the good setting for RF gain in SDRSharp? And what’s the good setting for AF Gain? Also, SDRShap doesn’t have a setting under sample-rate for 48000. It shows something like 3.2mps as the highest sample rate. Is that OK? Anywasys, if someone could help me on this here…
In PDW, did you set the soundcard to VAC? The image in the article shows Stereo Mix, but if you use another audio pipe like VAC, you’ll need to set it appropriately. Also, it seems like you’re hearing the pager sounds via your speakers. If you’re using VAC, you shouldn’t hear anything. Make sure the output audio device in SDRSharp is set to VAC.
For RF gain, you want adjust it so that the pager signal level is high, but the noise floor (the height of the spectrum when there is no signal) is as low as possible. As you increase the gain there will be a point at which the noise floor starts to rise too much, stop before that point. Also, make sure the pager signal isn’t clipping off the top of the spectrum graph, reduce the gain if it is.
You should be seeing your local radio stations though. If you’re not, either your RF gain was set at zero, your antenna is really bad or you got a bad USB dongle.
There are two sample rates, one for the audio, and one for the RF signal. The one with MSps is the RF sample rate and should be set to 2.8 MSps or below, usually I use 2 MSps. At 3.2 MSps the dongle starts dropping samples, and might cause your decodes to fail. The 48000 one is for the audio, I show how to set it in notepad in the article, but that step can probably be skipped as it seems the windows sample rate settings take higher priority anyway.
As for AF gain, you’ll just have to do some trial and error with it. AF gain is just a volume setting, and it depends on your Windows computer volume and your soundcard.
Finally, you can always test your PDW setup by setting PDW to use stereo mix, and then playing the sample audio on this page. Stereo mix will pass the sample audio to PDW.
Thanks for your help. It’s working now. Being new to the radio part of the technology, I was lacking a lot of knowledge, which you filled me in with your reply. Basically, I was able to properly adjust the RF gain based on what you described. I also noticed that pages were showing up on a different frequency than what’s on the back of the pagers. It’s off by 0.04MHz. I noticed that every time I sent a page, I saw some “wave” activity a little away from where I had my radio tuned. When I tuned to that area, I started seeing stuff showing up. I also changed to virtual audio cable application to the free one (not the V3 of the paid software but another one you mentioned). Between these, I eventually got it working. Thanks for this article and a lot of kudo-s for you 🙂
Glad to hear you got it working. Yeah, the RTL-SDRs aren’t precision instruments and can be off by a few KHz’s. You can correct that either by tuning manually as you did, or by setting the PPM offset which is under the RF gain.
Now that I have it running for the last 2 days, I see that I still need to figure something out about it. When I tune the radio to a frequency where I start seeing my coworkers messages showing up, I do have specific instances where some pagers messages are not showing up. All the pagers I’m monitoring are on the same frequency in theory, but I can’t seem to tune it so that all pagers’ messages show up. Sometimes I see many but missing some pagers. Then I fiddle with the tuning and now I see the pager I was missing, but now some other pagers’ messages are not showing. Any idea about that? Do I have a low quality antenna maybe? Or is it something in PDW?
Try setting the RF sample rate lower, to maybe 1MSps. You might also try increasing or decreasing the filter bandwidth. Try and get the tuning centered on the pager signals as much as possible by zooming in. Check that the volume level is not too loud such that it clips the maximum, or too quiet by looking at the volume level meter in Windows.
Are there any RF noise sources showing up near the pager signal that could be causing trouble? Do all the pagers come in with good signal strength?