GNURadio@theATA

The Allen Telescope Array (ATA) is a 42-element radio telescope array located in Hat Creek, California, operated by SETI Institute. In an effort to increase accessibility to the array among potential users outside the astronomy community, we are working to integrate the array into GNU Radio software. We plan to start out by connecting USRPs to two ATA antennas and developing control, backend, and beamformer software. In addition to this, we are using a discone antenna connected to a USRP and OmniSig software to analyze radio frequency interference (RFI) at the ATA site.

GNU Radio Testbed
GR-ATA Testbed

Resources on the ATA and friends

 * The Allen Telescope Array, SETI Institute


 * Welch et al, 2009, The Allen Telescope Array


 * SETI Institute


 * Berkeley SETI / Breakthrough Listen


 * Berkeley SETI blog on Open Data


 * Lebofsky et al, 2019 - Breakthrough Listen public data

Useful Radio Astronomy Tools

 * Radial Velocity / VLSR Calculator -- good for determining the V_LSR of spectral lines in your data
 * LAB Survey HI Profile Search -- here you can search for HI data given a source's RA, Dec or galactic coordinates. Good if you want to compare the velocity of the HI line that you measure with some preexisting accurate data to ensure your system is working properly.

GNU Radio / SETI Hackathon
In May 2019, the first step toward collaboration between the GNU Radio community, the ATA, SETI Institute, Breakthrough Listen, and Berkeley SETI communities consisted of a hackathon hosted at the Hat Creek Radio Observatory (home of the ATA). This culminated in, among other things, the beginnings of a GNU Radio module called gr-ata.
 * Here's a link to material from the hackathon: https://github.com/SETIatHCRO/grhack/wiki


 * And here's where you can find the ATA module: https://github.com/SETIatHCRO/gr-ata

Connecting to VNC on ATA gnuradio machines
Below are instructions for connecting to the ATA machines' VNC servers on Windows (note that gnuradio0 machine is connected to the discone, gnuradio1 will be connected to the ATA antennas).

Assuming you are connected to the ATA gnuradio vpn server, you can use PUTTY to connect to gnuradio1 or gnuradio0 machine:


 * Hostname (IP address): 10.1.50.10 for gnuradio0, or 10.1.50.11 for gnuradio1.
 * SSH -> Enable compression
 * SSH -> Tunnels -> Source port: 590x, Destination: localhost:590x

VNC Viewer:


 * Remote Host: localhost:590x
 * Enter password

Setting up the software
The first step in implementing GNU Radio with the ATA is ensuring that we can effectively play back previously-recorded SigMF files taken by the ATA in a GNU Radio flowgraph. We can do this using example code from the gr-ata module discussed above. To get the flowgraphs included in the "examples/original-examples" folder of gr-ata working, here's a recipe of what you'll need (along with some installation tips discovered through trial-and-error). Note that the instructions below are written for Ubuntu users:


 * GNU Radio version 3.8 (ppa for "releases" -- install instructions here).
 * Install liborc-0.4-dev (sudo apt install liborc-0.4-dev)
 * cmake version >= 3.13 (will have to remove the standard cmake version using $ sudo apt remove --autoremove cmake, then follow the instructions here: https://apt.kitware.com/ to install a more recent version. This is necessary for installing gr-osmosdr)

Below is a list of external GNU Radio modules that you can install following the instructions on the linked GitHub pages. One thing to keep in mind -- for the cmake step, in some cases cmake automatically installs the modules to the wrong location, resulting in a ModuleNotFound error. To prevent this, instead of running just cmake .. run the following command: $ cmake -DCMAKE_INSTALL_PREFIX:PATH={prefix} .. where the {prefix} can be found using the command $ gnuradio-config-info --prefix.


 * gr-ata (of course!)
 * gr-osmosdr
 * gr-correctiq -- make sure to clone the branch maint-3.8
 * gr-lfast -- make sure to clone the branch maint-3.8
 * gr-grnet -- branch maint-3.8. Before attempting to install gr-grnet, make sure you've run $ sudo apt-get install zlib1g-dev libpcap-dev
 * gr-filerepeater -- branch maint-3.8
 * gr-gpredict-doppler
 * gr-mesa -- branch maint-3.8
 * gr-fosphor -- before attempting to install gr-fosphor, run the command: $ sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev ocl-icd-opencl-dev freetype2-demos libfreetype6 libfreetype6-dev swig qt5-default
 * gr-compress --branch maint-3.8; follow instructions in README on github for installation prerequisites

All of these modules (excepting gr-fosphor, which requires a GPU) have been installed along with GNU Radio version 3.8 on the gnuradio1 machine at the ATA.

For ATA observing, you will need to install code from the ATA-Utils repository (which I have done on gnuradio1 in my account); run the commands:


 * git clone https://github.com/SETIatHCRO/ATA-Utils
 * cd ATA-Utils/pythonLibs
 * If pip isn't installed, run sudo apt-get install python3-pip
 * Still in the pythonLibs folder, run sudo pip3 install . --user
 * sudo python3 setup.py install

You should be good to go!

Observing with the ATA -- Tutorials linked here
The gr-ata module consists of four blocks:


 * Control Block
 * Track Scan Block
 * On-Off Block
 * IF Switch Block

which can be combined to conduct observations with the ATA. Refer to the GR-ATA Tutorial page for detailed tips on how to use the gr-ata blocks to conduct an ATA observation, and how to collect data with the USRPs onsite.

Public Data
At this link, you can find data from a sample observing run conducted with the USRPs at the ATA: http://blpd0.ssl.berkeley.edu/gnu_ata_workshop/

Some notes on the data:

12aug2020-sourcename2350+646-1420MHz.dat
 * The target source was quasar 2350+646
 * RA = 23.848588 (decimal hours) and Dec. = 64.671619 (decimal degrees)
 * RA = 23 50 54 (hhmmss), Dec. = 64 40 17 (ddmmss)
 * Recorded as spectral -- not raw -- data (float32)
 * The center frequency was 1420 MHz
 * The bandwidth = 50 MHz (complex) / 2 = 25 MHz
 * It was integrated over every 1k samples
 * The FFT size was 16384
 * Antenna = 2h

goes-16_2020-09-15_22_03_37.725663.dat
 * Target = GOES-16, a geosynchronous satellite
 * Az. = 121.956, El. = 23.605
 * Spectral data (float32)
 * Center frequency = 1691.4 MHz
 * Bandwidth = 50 MHz (complex) / 2 = 25 MHz
 * Integration = 10,000
 * FFT size = 4096
 * Total recording time = 1 minute
 * Antenna = 2h

goes-16_raw_2020-09-15_220116.481975.dat
 * Target = GOES-16, a geosynchronous satellite
 * Az. = 121.956, El. = 23.605
 * Raw (complex32) data
 * Center frequency = 1691.4 MHz
 * Bandwidth = 50 MHz (complex) / 2 = 25 MHz
 * Total recording time = 1 minute
 * Antenna = 2h

Sag A -- spectral
 * Target source = Sagittarius A (galactic center region)
 * RA = 17.7611 (decimal hours) and Dec. = -29.0028 (decimal degrees)
 * RA = 17 45 40 (hhmmss), Dec. = -29 00 28 (ddmmss)
 * Recorded as spectral -- not raw -- data (float32)
 * Center Freq = 1420 MHz
 * Bandwidth = 50 MHz (complex) / 2 = 25 MHz
 * Integration = 5000
 * FFT size = 16384
 * Total recording time = ~5 minutes
 * Antenna = 2h

Sag A -- raw
 * Target source = Sagittarius A (galactic center region)
 * RA = 17.7611 (decimal hours) and Dec. = -29.0028 (decimal degrees)
 * RA = 17 45 40 (hhmmss), Dec. = -29 00 28 (ddmmss)
 * Raw (complex32) data
 * Center Freq = 1420 MHz
 * Bandwidth = 50 MHz (complex) / 2 = 25 MHz
 * Total recording time = 1 minute
 * Antenna = 2h