PyBOMBS (Python Build Overlay Managed Bundle System) is the recommended method for building and installing GNU Radio. Please see https://github.com/gnuradio/pybombs for detailed instructions. Abbreviated instructions are duplicated below.
-
Install PyBOMBS:
$ [sudo] pip install PyBOMBS
or
$ git clone https://github.com/gnuradio/pybombs.git $ cd pybombs $ sudo python setup.py install
-
Add PyBOMBS recipes:
$ pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git $ pybombs recipes add gr-etcetera git+https://github.com/gnuradio/gr-etcetera.git
-
Configure an installation prefix:
$ pybombs prefix init ~/prefix/default/
-
Install GNU Radio:
$ pybombs install gnuradio
-
Run GNU Radio Companion from your new prefix:
$ source ~/prefix/default/setup_env.sh $ gnuradio-companion
or execute it without changing the current environment
$ pybombs run gnuradio-companion
Complete build instructions are detailed in the GNU Radio Build Guide. Abbreviated instructions are duplicated below.
-
Ensure that you have satisfied the external dependencies, see GNU Radio Dependencies.
-
Checkout the latest code:
$ git clone https://github.com/gnuradio/gnuradio.git
-
Build with CMake:
$ cd gnuradio $ mkdir build $ cd build $ cmake [OPTIONS] ../ $ make $ make test $ sudo make install
Useful
[OPTIONS]
include setting the install prefix-DCMAKE_INSTALL_PREFIX=<directory to install to>
and the build type-DCMAKE_BUILD_TYPE=<type>
. Currently, GNU Radio has a"Debug"
type that builds with-g -O2
which is useful for debugging the software, and a"Release"
type that builds with-O3
, which is the default.
- Source GNU Radio env:
$ source ~/prefix/default/setup_env.sh
- Compile and install libyunsdr for gr-yunsdr:
$ git clone https://github.com/v3best/libyunsdr $ cd libyunsdr $ mkdir build $ cd build $ cmake ../ $ make && sudo make install && sudo ldconfig
- Compile and install gr-yunsdr to GNU Radio:
$ git clone https://github.com/v3best/gr-yunsdr $ cd gr-yunsdr $ mkdir build $ cd build $ cmake ../ -DCMAKE_INSTALL_PREFIX=~/prefix/default/ $ make && make install && sudo ldconfig
- Use gr-yunsdr block in GNU Radio Companion:
$ source ~/prefix/default/setup_env.sh $ gnuradio-companion
$git clone https://github.com/v3best/gr-osmosdr-gqrx
$cd gr-osmosdr-gqrx/
$git checkout yunsdr
$mkdir build
$cd build/
$cmake ../ -DCMAKE_INSTALL_PREFIX=<gnuradio install prefix>
$make
$make install
$sudo ldconfig
$sudo apt install libqt5multimedia5-plugins qtmultimedia5-dev qttools5-dev qttools5-dev-tools libqt5opengl5-dev qtbase5-dev
$git clone git://git.osmocom.org/sdrangelove.git
$cd sdrangelove
$mkdir build
$cd build
$cmake ../
$make -j4
$./sdrangelove
$git clone https://github.com/csete/gqrx.git gqrx.git
$sudo apt install libqt5svg5-dev
$cd gqrx.git
$mkdir build
$cd build
$cmake ../
$make -j4
$./src/gqrx
$git clone https://github.com/v3best/gnss-sdr
$cd gnss-sdr/
$git checkout yunsdr
$mkdir build
$cd build/
$cmake ../
$make
$cd ../
$mkdir temp
$cd temp
$../install/gnss-sdr --config_file=../conf/gnss-sdr_GPS_L1_yunsdr_realtime.conf
-
Build and install
$git clone https://github.com/BogdanDIA/gr-dvbt $cd gr-dvbt $mkdir build $cd build/ $cmake ../ -DCMAKE_INSTALL_PREFIX=<gnuradio install prefix> $make && make install && sudo ldconfig
-
Run TX
The simplest way to run DVB-T encoding is to use the gnuradio-companion flowgraphs examples/dvbt_tx_demo.grc. It will start with a MPEG-2 TS file and will eventually generate the 10Msps baseband samples. Open dvbt_tx_demo.grc and run it for transmitting with YunSDR from samples.ts. This specific flowgraph has the parameters set as: 2k OFDM, FEC code 1/2, Modulation 16-QAM, Guard Interval 1/32
-
Run RX
To run DVB-T decoding just run examples/dvbt_rx_demo.grc. It will take the baseband samples and turn them into MPEG-2 TS file.
- Build and install
$sudo apt-get install sqlite3 libsqlite3-dev python-zmq python-numpy python-scipy $git clone https://github.com/bistromath/gr-air-modes $cd gr-air-modes $mkdir build $cd build/ $cmake ../ -DCMAKE_INSTALL_PREFIX=<gnuradio install prefix> $make && make install && sudo ldconfig
- Run modes_gui
$modes_gui
-
After the GUI has started you will need to set the following settings:
- Select Osmocom as Source
- Set Sample Rate
- Set Threshold
- Set Gain
-
Optional
- Set Latitude
- Set Longitude
- Check KML and Set Output Filename
-
After adjusting the above settings, click "Start" to begin capturing ADS-B/Mode-S packets. You will see the Reports/second field fluctuate as packets are decoded; as aircraft are identified, their ID will populate the Visible Aircraft list.
- Once aircraft have populated the Visible Aircraft list, if you highlight an ID, and click on the Dashboard tab, it will display the details of the aircraft including it's Bearing, Range, Heading, Speed, Altitude, Climb Rate, Latitude, Longitude and Signal Strength. Not all aircraft will broadcast every field of data.
- The Azimuth Map tab will display a plot of overall distance of all received packets that have included Latitude and Longitude data.
-
Plotting KML Data
By enabling the KML setting within modes_gui, or with the --KML flag in modes_rx, it will output all aircraft data to a Google Earth compatible KML file. This KML file can be imported into Google Earth and viewed after the capture is complete.
To import the KML data file and auto refresh follow the steps below:
- Start Google Earth
- Select "Add" -> "Network Link" from the menu bar
- Enter a description into the "Name" field such as "ADS-B"
- Click "Browse" and navigate to the location of the KML output file and select it
- Select the "Refresh" tab
- Under the "Time-Based Refresh" select "Periodically" and set a time frame you would like the data to refresh. (e.g. 4 seconds)
- Click "OK"