This GNU Radio component implements a FLEX radiopager receiver/demodulator.

FLEX pager towers are between 929 MHz and 932 MHz at 25 KHz centers.

Current status (7/16/07):

FLEX receiving is completed except for addition of BCH error correction.

There are three scripts:

usrp_flex.py - Receives and displays pages from a single paging channel. To
               work from recorded data, record from USRP with decimation 256
	       at center frequency.

    Usage: usrp_flex.py [options]

    Options:
      -h, --help                          show this help message and exit
      -f Hz, --frequency=Hz               set receive frequency to Hz
      -R SUBDEV, --rx-subdev-spec=SUBDEV  select USRP Rx side A or B
      -c Hz, --calibration=Hz             set frequency offset to Hz
      -g dB, --gain=dB                    set RF gain
      -l, --log                           log flowgraph to files (LOTS of data)
      -v, --verbose                       display debug output
      -F FROM_FILE, --from-file=FROM_FILE read samples from file instead of USRP

    Example, to receive from 931.95M (a common nationwide channel) with DBSRX in
    side A of USRP:

    $ usrp_flex.py -f 931.95M -g 32 -R A


usrp_flex_band.py - Receives and displays pages from a 1 MHz paging band (40 pager
		    channels.) To work from recorded data, record from USRP with
		    decimation 64 at center frequency.

Usage: usrp_flex_band.py [options]

    Options:
      -h, --help                              show this help message and exit
      -f Hz, --frequency=Hz                   set receive center frequency to Hz
      -R SUBDEV, --rx-subdev-spec=SUBDEV      select USRP Rx side A or B
      -c Hz, --calibration=Hz                 set frequency offset to Hz
      -g dB, --gain=dB                        set RF gain
      -F FROM_FILE, --from-file=FROM_FILE     Read from file instead of USRP
      -l, --log             		      log flowgraph to files (LOTS of data)
      -v, --verbose                           display debug output

    Example, to receive from the lower third of the pager band with DBSRX in side B
    of USRP:

    $ usrp_flex_band.py -f 929.5M -g 32 -R B

usrp_flex_all.py - Receives and displays pages from entire pager band (3 MHz,
                   120 pager channels.)  This does not work in real time due
		   to CPU limitations, but can work from recorded USRP data. To
		   work from recorded data, record from USRP with decimation 20 at
		   center frequency of 930.5M.

    Usage: usrp_flex_all.py [options]

	Options:
          -h, --help             	      show this help message and exit
          -R SUBDEV, --rx-subdev-spec=SUBDEVC select USRP Rx side A or B
          -c Hz, --calibration=Hz             set frequency offset to Hz
          -g dB, --gain=dB                    set RF gain
          -F FROM_FILE, --from-file=FROM_FILE Read from file instead of USRP
          -l, --log                           log flowgraph to files (LOTS of data)
          -v, --verbose                       display debug output

    Example, to receive all pager channels with DBSRX in side A:

    $ usrp_flex_all.py -R A

The demodulator is relatively sensitive to frequency offset and can capture a signal
within 3k of the actual signal.

All three scripts take a 'calibration' parameter, which specifies the frequency offset
of the daughterboard.  This causes the USRP to be tuned to the given center frequency
plus the calibration offset.  For example, if your DBSRX shows 930MHz as 930.001MHz in
usrp_fft.py, then use '-c 1k' in the command line to automatically add this.

Johnathan Corgan
Corgan Enterprises LLC
jcorgan@corganenterprises.com
