Please note, if you are based in the UK please read and understand Section 48 of the UK Wireless Telegraphy Act 2006:
http://www.legislation.gov.uk/ukpga/2006/36/section/48
After purchasing an USB RTL2832 based dongle for use with my RPi to receive ADS-B messages from aircraft I was annoyed that I had purchased one that was unable to tune to the higher frequencies needed, so I looked for something to do with it whilst a E4000 based one turned up.
You can find a list of compatible devices and places to buy them on the rtl-sdr wiki:
http://sdr.osmocom.org/trac/wiki/rtl-sd ... edHardware
From Wikipedia:
SetupPOCSAG is an asynchronous protocol used to transmit data to pagers. The name comes from Post Office Code Standardization Advisory Group, this being the British Post Office which used to run nearly all telecommunications in Britain before privatization.
On the RPI, download and install the rtl-sdr and multimonNG sources. rtl-sdr provides the drivers and narrow band FM demodulator for the USB dongle, whilst multimonNG will be used to decode the resulting POCSAG data.
Code: Select all
# Install dependencies
sudo apt-get update
sudo apt-get -y install git cmake build-essential libusb-1.0 qt4-qmake libpulse-dev libx11-dev
# Fetch and compile rtl-sdr source
mkdir -p ~/src/
cd ~/src/
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
# Fetch and compile multimonNG
cd ~/src/
git clone https://github.com/EliasOenal/multimonNG.git
cd multimonNG
mkdir build
cd build
qmake ../multimon-ng.pro
make
sudo make install
Finding and listening to POCSAG signals
It turns out that where I live there is quite a lot of pager traffic still around, which is found around 137-154MHz, according to a search for POCSAG at the Global Frequencies Database:
http://qrg.globaltuners.com/?q=POCSAG
It's used for all sorts of interesting stuff like railway management,
Fire service & medical despatching:2/2 running: ================= Main Lines amber, reception and arrival roads Double amber Time reported and ETA for response:
Refrigeration system monitoring:INC ALERT No: 7119994 TRAUMA, AT: HOTEL CENTRAL, XX MAIDEN ST, Time of Call: 27/05/2013 Tel: 08456 XXXXXX
Alarm management:26/05/2013 07:32:42 B3AHS1AH1DaMc Status : Discharge Air Moisture Content
HVAC monitoring:ProcessVue Communications WatchDog Message- Comms are working between ProcessVue Server and BMS System
It's also very easy to receive, even with a crappy aerial.NMR_Supply_Air_Hum Status : NMR BUILDING SUPPLY AIR RH
It's a lot easier to find POCSAG frequencies using a waterfall display app and a laptop/desktop PC, I used a Windows laptop with SDRSharp. For Linux desktops, multimode from gnu-radio is also good;
http://sdrsharp.com/index.php/downloads
Set your chosen waterfall app to to 'WFM' mode and have a hunt around until you find something that sounds like POCSAG. A lot of digital signals sound similar, there's a few example audio files here:
http://www.rtl-sdr.com/signal-identification-guide/
It's *possible* to run rtl_tcp on the rpi to transfer the data over a network connection and use the rtl_tcp input on SDRSharp/multimode but I found my wireless card caused pops and dropouts. It's much easier to just plug the dongle into the desktop but if you have a better network situation than me you might want to try:
Code: Select all
rtl_tcp -a $IP_ADDRESS_OF_RPI
Decoding on the RPi
Once you've found a POCSAG channel, you can then plug your RTL dongle back into the Pi and use the following command to send output to the headphone jack. In the following example I'm tuning to 153.350MHz. This also has the side benefit of turning your RPi into an FM radio

Code: Select all
rtl_fm -f 153.350M | aplay -r 24k -f S16_LE -t raw -c 1
Code: Select all
rtl_fm -N -o 4 -A lut -s 22050 -C -f 153.350M - | multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -f alpha /dev/stdin
Ideas & fun things to doPOCSAG2400-: Alpha: 23:09-92 24/05/2013 14:33:05 AR02EH_2 High Alarm 70 AR02 AHU-20 Ext Air Humidity out of Limits Alarm Item Description Ext Air RH Details Status : Ext Air RH<NUL>
It's fairly trivial to setup a webserver to view the decoded data using a webbrowser:
Code: Select all
sudo apt-get -y install lighttpd
sudo mkdir -p /var/www/pager/
sudo chmod 777 /var/www/pager/
rtl_fm -f 153.350M -s 22050 | multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -f alpha /dev/stdin >> /var/www/pager/153-350M.txt
A very cool idea would be to control the Pi via the pager network, but unfortunately I do not have a pager

I would be very interested to hear from anybody using multimonNG to decode something other than POCSAG and ADS-B!
Useful links:
http://en.wikipedia.org/wiki/POCSAG
http://sdr.osmocom.org/trac/wiki/rtl-sdr
http://dekar.wc3edit.net/2012/05/24/multimonng/