Brand new README file.

This commit is contained in:
Nick Foster 2012-06-15 18:50:56 -07:00
parent da41dd3c84
commit f9026feb7f

183
README
View File

@ -1,50 +1,149 @@
# ========================================================================
# Copyright 2005, 2006 Free Software Foundation, Inc. Copyright 2010, 2011, 2012 Nick Foster
#
# This file is part of GNU Radio
#
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Radio; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
#
This directory (and the resulting tarball) contains a build tree with Quaternion.py copyright 2009 Smithsonian Astrophysical Observatory
examples, Makefiles, etc that demonstrate how to write signal Released under New BSD / 3-Clause BSD License
processing blocks for the GNU Radio system. This directory is All rights reserved
intentionally distributed separately from the unified tarball of the
rest of GNU Radio in order to avoid problems for people who have begun
to write blocks with a modified copy of gr-howto-write-a-block.
This package requires that gnuradio-core is already installed. It This file is part of gr-air-modes
also depends on some GNU Radio prerequisites, such as boost.
gr-air-modes is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
gr-air-modes is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with gr-air-modes; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street,
Boston, MA 02110-1301, USA.
To build the examples from the tarball use the normal recipe: ========================================================================
AUTHOR
$ ./configure Nick Foster <bistromath@gmail.com>
$ make
$ make check
If you're building from CVS, you'll need to use this sequence, since ========================================================================
CVS doesn't contain configure or the generated Makefiles. OVERVIEW
$ ./bootstrap gr-air-modes implements a software-defined radio receiver for Mode S
$ ./configure transponder signals, including ADS-B reports from equipped aircraft.
$ make
$ make check
Mode S is the transponder protocol used in modern commercial aircraft.
A Mode S-equipped aircraft replies to radar interrogation by either
ground radar (secondary surveillance) or other aircraft ("Traffic
Collision Avoidance System", or TCAS). The protocol is an extended
version of the Mode A/C protocol used in transponders since the 1940s.
Mode S reports include a unique airframe identifier (referred to
as the "ICAO number") and altitude (to facilitate separation control).
This receiver listens to the 1090MHz downlink channel; interrogation
requests at 1030MHz are not received or decoded by this program.
The doc directory is not built by default. This is to avoid spurious Automatic Dependent Surveillance-Broadcast (ADS-B) is a communication
build problems on systems that don't have xmlto installed. If you protocol using the Extended Mode S transport layer. There are other
have xmlto and its dependencies installed, you can build the html implementations (VDL Mode 2 and UAT, for instance) but Mode S remains
version of the howto article by cd'ing to doc and invoking make. the primary ADS-B transport for commercial use. The protocol is:
* Automatic: it requires no pilot input
* Dependent: it is dependent on altimeter, GPS, and other aircraft
instrumentation for information
* Surveillance: it provides current information about the transmitting
aircraft
* Broadcast: it is one-way, broadcast to all receivers within range.
ADS-B-equipped aircraft broadcast ("squitter") their position, velocity,
flight number, and other interesting information to any receiver within
range of the aircraft. Position reports are typically generated once per
second and flight indentification every five seconds.
Implementation of ADS-B is mandatory in European airspace as well as
in Australia. North American implementation is still voluntary, with
a mandate arriving in 2020 via the FAA's "NextGen" program.
The receiver uhd_modes.py is written for use with Ettus Research USRP
devices, although the "RTLSDR" receivers are also supported via the
Osmocom driver. In addition, any receiver which outputs complex
samples at at least 2Msps should work via the file input or UDP input
options, or by means of a Gnuradio interface. Multiple output formats
are supported:
* Raw (or minimally processed) output of packet data
* Parsed text
* SQLite database
* KML for use with Google Earth
* SBS-1-compatible output for use with e.g. PlanePlotter or Virtual
Radar Server
* FlightGear multiplayer interface for real-time display of traffic
within the simulator
Most of the common ADS-B reports are fully decoded per specification.
Those that are not are generally ones which are not commonly used.
In particular, should you receive a large number of reports which result
in "not implemented" or "No handler" messages, please use the -w option
to save raw data and forward it to the author. To save time, note that
receiving a small number of spurious reports is expected; false reports
can be excluded by looking for multiple reports from the same aircraft
(i.e., the same ICAO 6-digit hexadecimal number).
========================================================================
REQUIREMENTS
gr-air-modes requires:
* Python >= 2.5 (written for Python 2.7, Python 3.0 might work)
** NumPy and SciPy are required for the FlightGear output plugin.
* Gnuradio >= 3.5.0
* Ettus UHD >= 3.4.0
* SQLite 3.7 or later
========================================================================
USAGE
The main application is apps/uhd_modes.py. For a complete list of
options, run:
$ apps/uhd_modes.py --help
For use with Ettus UHD-compatible devices, the defaults should suffice
to receive reports and print to the screen.
In particular, the --location option should be used to set the receiving
location's GPS coordinates. This provides better decoding of position
reports and enables range and bearing calculations.
========================================================================
FILES
Interesting files and libraries included with the package:
* apps/uhd_modes.py: The main application.
* apps/get_correlated_records.py: Demonstration program for computing
multilaterated time error for two unsynchronized receiver stations.
* lib/air_modes_int_and_dump.cc: Unused integrate-and-dump filter for
demodulating Mode S waveforms.
* lib/air_modes_preamble.cc: Mode S preamble detector.
* lib/air_modes_slicer.cc: Bit slicer (1 vs 0) and packet aggregator.
* lib/modes_crc.cc: Computes parity check for Mode S packets.
* python/altitude.py: Mode S altitude encoding/decoding routines
* python/cpr.py: Compact Position Reporting encoder/decoder
* python/modes_flightgear.py: FlightGear (open-source flight simulator)
plugin which inserts live traffic into the simulator via the
multiplayer interface.
* python/mlat.py: Multilateration algorithms for determining position of
non-ADS-B-equipped or non-cooperative aircraft using multiple
receivers.
* python/modes_kml.py: KML output plugin for Google Earth.
* python/modes_parse.py: Mode S/ADS-B packet parsing routines.
* python/modes_print.py: Human-readable printout plugin
* python/modes_raw_server.py: UDP output plugin for raw data output
* python/modes_sbs1.py: SBS-1-compatible output plugin for use with
Virtual Radar Server, PlanePlotter, or other compatible programs.
* python/modes_sql.py: SQLite interface for storing reports in a
database.
* python/Quaternion.py: Quaternion library used to calculate
orientation of aircraft for FlightGear plugin.