POCSAG Decoder

User Documentation Version 2.00 January 1996

Contents 1. 2. 3. 4. 5. 5.1 5.1.1 5.1.2 5.1.3 5.2 5.3 6. 6.1 6.2 6.3 6.4 Appendix A Introduction Registration Installation Interfacing Configuration PD.INI General Parameters Function Codes Colours PAGERS.INI REJECT.INI Running the program Supported Keys Status Line Normal Mode Debug Mode Version History



PD, together with a receiver or scanner, allows the off-air decoding of POCSAG paging signals at 512, 1200 or 2400 bits/second. This makes it extremely useful for the testing of paging transmitters and systems. Decoding of both numeric and alphanumeric pager data is supported, as is the hex dumping of raw POCSAG codewords. PD runs on an IBM PC or equivalent, anything from an 80286 upwards. It requires 512K of conventional memory and a small amount of hard disk or floppy. Hard disk is recommended. PD runs from DOS, running from Windows is not recommended. 2. Registration

PD is freely distributed as a shareware version. This has a timeout of about 5 minutes, after which a registration message is displayed and the program exits. Also the logging of pager data to disk is disabled. To obtain a fully functional registered copy of PD send a cheque or money order for 20.00 Pounds Sterling to:Peter Baston, 7 Allerton Close, Pen-y-ffordd, Chester, CH4 0NJ, U.K. When ordering please state if the shareware version of PD is already in use, and which version. Please also note that the registered software can be sent out by email, if this is required please give your email address.



In order to install the program copy the following files into a directory on a hard drive, or onto a floppy:PD.EXE PD.INI PAGERS.INI REJECT.INI PD200.TXT 7100MOD.TXT Pocsag Decoder program Configuration file List of pager codes (7 digit RIC's) to be logged List of pager codes to reject This documentation file Notes on modifying Icom R-7100 to bring out the discriminator output.



The PD program requires serial POCSAG data to be applied to the CTS pin of one of the PC's COM ports. RS232 levels are required, ie at least +/- 3v. PD is insensitive to polarity, ie it doesn't matter which way up mark and space are. As POCSAG is transmitted as direct FSK of the VHF/UHF carrier the ideal way is to take the data direct from the discriminator, via a data slicer. The following circuit, however, has been fairly successful, taking audio directly from the receiver's speaker output:0.1 uF |\ +12v ---||-----------------------|- \| AF IN | |741 \ ---| | /--------------------- Data Out | \ ------|+ /| | CTS (pin 5/8) | / 100K | |/-12v | | \ | | GND ------ GND (pin 7/5) GND / ----/\/\/\---| | 100K | \ N.B. Pin Numbers for com port are GND / given as x/y, where x is for a 25 \ 10K way, y for a 9 way. / | GND The above circuit is a Schmitt Trigger, having thresholds of about +/- 1v. If such a large threshold is not required, eg for a discriminator output, then the level of positive feedback may be reduced by either reducing the value of the 10K resistor or by increasing the value of the 100K feedback resistor. The +/- 12v for the op-amp can be derived from unused signals port (gives more like +/- 10v but works fine !):on the COM

TxD (2/3) --------------|<-------------------------------------- -12v | | RTS (4/7) --------------|<-------GND - | | _ + 10uF --------->|------- | Diodes 1N4148 | - + 10uF GND | | DTR (20/4) ------------->|-------------------------------------- +12v

5. 5.1

Configuration PD.INI

The PD.INI file allows the operation of PD to be configured. Any text editor can be used to edit this file. The file is divided up into sections, headed by a name in square brackets, eg [general], [functions]. In each section are parameters, set to a value with an "=" sign, eg:logbeep=100 func1=alpha In PD.INI, and any of the .INI files, comments may be added by starting the line with "#' eg:# This is a comment. 5.1.1 General Parameters These parameters come under the [general] heading. comport

This allows the COM port used by PD to be set. COM port 1,2,3 or 4 may be used, eg:comport=2 The default is COM1 bitrate

This alows the bitrate of POCSAG data to be set. Allowable options are 512, 1200, 2400 or auto. If auto is selected then the bit rate is determined by PD at the beginning of each transmission. Examples:bitrate=1200 bitrate=auto The default is auto. logbeep

This parameter allows the length of the "beep", sounded when a pager message is logged, to be set. It's format is:logbeep=<number> eg:logbeep=100 Where <number> is the length of the beep in milliseconds. A value of zero

turns off the beeping, this is the default.


(Registered Version Only)

This parameter turn on or off logging to a daily log file. It can take the value 0 (no logging), or 1 (enable logging). Example:logging=1 Daily log files have filenames of the form DD-MM-YY.log, or MM-DD-YY.log if U.S. date format is selected. All decoded pages are logged to this file. At midnight the daily log file is closed, and a new one opened. The default is 0, logging off. log_path (Registered Version Only)

This parameter allows the path for the storage of log files to be set. This may be either an absolute path or may be relative to the current directory. The path must always end in a "\". Examples:# Log files stored in subdirectory "logs" off the current PD directory: log_path=logs\ # Log files stored at an absolute location: log_path=C:\logfiles\ Please note that if the directory referenced does not exist then no logging will take place. The default is the current directory. expire (Registered Version Only)

This parameter allows daily log files to be automatically deleted after a given number of days. This will occur either when PD is started, or just after midnight. The format is expire=<number of days> eg:# Expire any daily logs over 5 days old: expire=5 The default is 0 (don't expire).


This option allows special language features to be enabled. it is currently used to enable special "umlaute" characters used in the german language. Eg:language=german When this is enabled the following character translation will take place in received alphanumeric paging messages:Rx Char (decimal) 125 124 123 126 93 92 91 Display Char (decimal) 129 148 132 225 154 153 142 ue oe ae ss UE OE AE � � � � � � Umlaute

The default language is english. accept

This parameter determines whether decoded addresses (RIC's) are allowed to contain corrected errors. This can have two values, 0 (don't accept errors) or 1 (accept errors). Eg:accept=0 The default is 0. This is recommended. date (Registered Version Only)

This parameter allows the format of the date used when writing to log files to be set. Two formats, uk or usa, are allowed, eg:# Use U.K. date format: date=uk # Use U.S. date format: date=usa The U.K. date format is DD/MM/YY, the U.S. date format is MM/DD/YY. The default is the UK format.

5.1.2 Function Codes These parameters come under the [functions] heading. Four parameters are supported - func0, func1, func2 and func3. These allow the decoding of the pager data to be determined by the function code, transmitted in the address codeword. The format for setting these parameters is:funcx=<string> Where <string> is one of:alpha numeric raw auto reject The message will be decoded as alphanumeric ASCII data. The message will be decoded as BCD numeric data.

The message will be dumped in raw form, as hex codewords. PD will attempt to decide whether the message is numeric or alphanumeric, and decode accordingly. Any pages having this function code will be rejected.

eg:func0=raw func1=auto func2=auto func3=alpha The program defaults to decoding all function codes as "alpha" data. 5.1.3 Colours These parameters come under the [colours] heading and may each one of the following values:BLACK BLUE GREEN CYAN RED 4 MAGENTA 5 BROWN WHITE GRAY LIGHTBLUE 9 LIGHTGREEN LIGHTCYAN 11 LIGHTRED 12 LIGHTMAGENTA YELLOW 14 BRIGHTWHITE 0 1 2 3 6 7 8 10 13 15 be set to

These parameters are in pairs, setting the foreground and background colours for a particular screen area:-

status_fore/status_back page_fore/page_back

Set the colours for the status line at the bottom of the screen. Set the colours for the first line of a received page. This line contains the received RIC, function code, bit rate and decoding format.

message_fore/message_back Set the colours for the message part of a received page. Also sets the colours for the debug display, data with no errors. log_fore/log_back Set the colours used to display a RIC code that appears in PAGERS.INI.

corrected_fore/corrected_back Set the colours in debug mode for codewords containing bit errors believed to be corrected. errored_for/errored_back Set the colours in debug mode for codewords containing un-correctable errors. 5.2 PAGERS.INI

This file contains a list of pager addresses to be logged and is simply a list of 7 digit RIC's. Each RIC must begin in the first column and any characters after the 7th are ignored, and may be used for comments. Also lines beginning in "#" may be used for comments. RIC codes may contain wildcards, using the "?" character. Eg:# A few pager numbers.... 1234567 Fred's pager 0012345 Joe's pager 111???? Any pager number beginning "111" This file may contain up to 250 addresses. Every time one of these addresses is encountered it is highlighted on the screen, a beep is sounded if configured, and the page is logged to disk with a date/time stamp. The log filename is <RIC>.LOG, eg 1234567.LOG. Wildcards are translated to underscores in filenames, eg 111____.log. Please note that a page will be logged by the first match found in the file. For example if this file contained 12?????, and then 1234567 further down, then pages to RIC 1234567 would go into 12_____.log and _not_ into 1234567.log. It is therefore best to put any entries containing wildcards towards the bottom of the file so that the individual entries will catch them first.



This file contains a list of pager addresses to be rejected, eg to save screen clutter. This file has the same format as PAGERS.INI, described in 5.2 above.

6. 6.1

Running the Program Starting

PD is run from the DOS prompt by simply typing:PD<Enter> No command line options are supported, if any are given then PD displays the message:***************************************************** *** All PD Configuration is now by editing PD.INI *** *** No Command Line Switches are Supported *** ***************************************************** 6.2 Supported Keys

The following keys are supported whilst PD is running:ESC F1 SPACE BAR Exits the program Toggles between NORMAL and DEBUG modes Toggles PAUSE mode on and off

N.B. PAUSE mode stops the output of paging messages to the screen. Any logging will still carry on and is not affected.


Status Line

After PD starts up it displays a status line along the bottom of the screen, with a data area below. The status line is as shown below:NORMAL � COM1 � 1200 � REJ � PAUSE � 13-01-96.LOG 280890 � 100.0 � \ 13:50:39

The items on the status line are described below, from left to right:* * * * * * * NORMAL/DEBUG indicator - shows which mode PD is currently operating in. COM port currently in use. Current POCSAG bit rate. REJ indicator - appears when a pager address matches one listed in REJECT.INI RUN/PAUSE indicator - indicates when paused by the space bar. Filename of current daily log file, and current file size. Indication of receiving efficiency. 100% indicates that all received codewords contain no errors. Any codewords containing errors, whether corrected or not, will drive this figure down. Rotating signal indicator. Appears to rotate when data is being received on the correct pin of the COM port. This is no indication of good data, just that the levels are correct. The current time from the PC's real time clock.




Normal Mode

In NORMAL mode, as long as good POCSAG data is being received, lines of the following form are displayed:RIC: <RIC code> FUNC: <func code> RATE: <bit rate> <decoding type> [auto] Where:<RIC code> is the 7-digit pager address

<func code> is the single digit function code 0,1,2 or 3 <bit rate> is the data rate at which the page was received: 512, 1200 or 2400 specifies how the message data is being decoded: Tone - only page BCD numeric page ASCII alphanumeric page

<decoding type>

Tone Numeric Alpha [auto]

is appended to the line if PD is making an automatic alpha/numeric decision for this function code.

In the case of numeric or alphanumeric pages then another line or lines of message data follow. eg:RIC: 1234567 FUNC: Please call 1234 RIC: 0345678 FUNC: RIC: 0000123 FUNC: 555-123-1212 3 RATE: 512 Alpha: 5688 1 RATE: 1200 Tone 2 RATE: 2400 Numeric (auto):

Before data is displayed in NORMAL mode the address codeword is checked for errors. If the "accept" parameter in PD.INI is set to 0 then this codeword must be error free, thus ensuring that the correct RIC is always displayed. If "accept" is set to 1 then address codewords will be accepted even if they had correctable errors. This means there is a chance that the wrong RIC will be displayed - if a large number of bit errors are present. Subsequent data codewords are decoded irrespective of any errors. This means that some "garbling" of data will occur in the presence of a lot of errors. All codewords are, however, error corrected. This means that, in the presence of 1 or 2 bit errors, the orignal codeword will be recovered.


Debug Mode.

In Debug mode the batches of raw POCSAG codewords are dumped to the screen in hex form, eg:7A89C197 7A89CI97 7A89C197 7A89C197 7A89C197 7A89C197 7A89C197 7A89C197 7A89C197 7A89C197 14083EE2 7A89C197 7A89C197 7A89C197 7A89C197 7A89C197 Any codewords containing errors will be displayed in different colours, as configured in PD.INI. By default codewords containing corrected errors are displayed as yellow on white whilst codewords containing un-correctable errors are displayed as red on white. The debug mode is very useful for setting up, as it gives an indication of the number of errors currently being received. The shareware version will not time out while in debug mode. Please note that no logging will take place while in debug mode.

APPENDIX A PD Software History VERSION 1.02 VERSION 2.00 * * * * * * * * * * * Initial Released Version Major Release

Now supports 2400 baud and has auto bit-rate detection. Will now attempt to correct up to 2 bit errors in a codeword. Will now attempt to auto-detect numeric or alphanumeric data. Now supports logging of all messages to daily log files. Logging now continues whilst in PAUSE mode. PAGERS.INI and REJECT.INI will now allow comments after pager addresses. PAGERS.INI and REJECT.INI will now allow wildcards in pager addresses. PAGERS.INI and REJECT.INI will now accept up to 250 entries each. Date format may now be configured for the US market. Will now correctly display "umlaute" characters used in German. Screen colours may now be configured. <<<<<=====>>>>>