Adding a 978 Mhz Receiver

If you are interested in adding the capability to receive UAT aircraft on 978 Mhz, here is some information.  This will be primarily of use only in the United States, and even then you should be close to an ADS-B ground station for best results.

This assumes you are using a Raspberry Pi.  I have this configuration running on my Pi2, along with a second dongle to feed 1090 Mhz.

The first step is download “dump978”, which is similar to dump1090, although it does not have a built-in web interface that I can find.  It’s just a basic decoder for UAT formatted packets.  This will download and compile dump978 in a subdirectory on your Pi.  I installed this in the “pi” user home directory – /home/pi.

cd
git clone https://github.com/mutability/dump978
cd dump978
make

Now, dump 978 will be in /home/pi/dump978.

If you are planning to run dump1090 and dump978 on the same Pi2 using two dongles, you may want to specify which dongle each process should listen to, since obviously you may be using different antennas. Use the command “lsusb” and “rtl_test” to determine the “device index” of each RTL/SDR dongle.  For example, if I use the “rtl_test” command on my setup, I see the following:

[email protected] ~ $ rtl_test
Found 2 device(s):
 0: Generic, RTL2832U, SN: 77771111153705700
 1: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U

Kernel driver is active, or device is claimed by second instance of librtlsdr.
In the first case, please either detach or blacklist the kernel module
(dvb_usb_rtl28xxu), or enable automatic detaching at compile time.

usb_claim_interface error -6
Failed to open rtlsdr device #0.

I am running the T2 chipset on the RTL dongle I use for 1090.  For 978, I have line of sight to a ground station, so I just use the basic dongle and stock antenna.

Now, assuming you have dump1090 set to run at startup, it will always try to claim device ID 0 unless otherwise specified.  Just to keep things straight, I added the “device-index” to my parameters when starting dump1090 in the “/etc/rc3.d/S01fadump1090.sh” file.  This is optional, but for me, it avoids confusion.

PROG_ARGS="--quiet --net --device-index 0 --gain -10 --net-fatsv-port 0"

If you are just getting started and you want to see what the heck you’re receiving your 978 dongle, use the following command, which will send text output to your screen.  This command does not specify a specific dongle.  If your other dongle is already in use by dump1090, dump978 will fail over to the next available dongle.  If you want to specify the dongle number add “-d 1” (or whichever # you want to use) right before the -g.

rtl_sdr -f 978000000 -s 2083334 -g 48 - | /home/pi/dump978/dump978 | /home/pi/dump978/uat2text

You will see output based on what you’re receiving.  Some of it may be weather data (TAFs, METARs, NOTAMs, or weather radar blocks), some might be traffic (TIS-B) data, and you might even see aircraft broadcasting on 978 (but there are not a ton of them).  If you are not getting any traffic data, you will find its much more active during the day.  UAT out is only used on aircraft that fly below 18,000 ft.  If you are in-range of a ground station, you should see some occasional weather info come across, and rebroadcast traffic if there is a 978 client aircraft active. Once you’re done looking, go ahead and stop the output with “control-c”, or just logout of your Pi and log back in.

Now, supposing you are receiving 978 traffic and you want to feed it into your dump1090 instance (and in turn onto whatever services you feed from dump1090), run this command.  If you want to feed your 978 data to a dump1090 instance running on another pi, change the 127.0.0.1 to the LAN ip address of your other pi. Also, if you want to specify dongle 1, insert ” -d 1 ” after 2083334 and before the -g (i.e. /usr/bin/rtl_sdr -f 978000000 -s 2083334 -d 1 -g 48 …….)

/usr/bin/rtl_sdr -f 978000000 -s 2083334 -g 48 - | /home/pi/dump978/dump978 | /home/pi/dump978/uat2esnt | /bin/nc -q1 127.0.0.1 30001

However, this will not survive a reboot.  For a permanent solution, do this:

cd /home/pi
sudo wget http://bucket.adsbexchange.com/dump978-maint.sh
sudo chmod 755 ./dump978-maint.sh
sudo nano ./dump978-maint.sh

Change “-d 1” to whatever dongle you will be using. If only one dongle, just remove “-d 1”. Also, if you will be feeding dump1090 running on another pi, change the 127.0.0.1 to the LAN ip of the other pi.  Then hit, (Cntrl-X, Y, Enter)

sudo nano /etc/rc.local

(arrow down and insert the following line just _before_ the last line, which should be “exit 0”):

/home/pi/dump978-maint.sh &

(Hit, Cntrl-X, Y, Enter)

sudo reboot

That’s it.  Dump978 will now feed traffic into your dump1090 instance after every reboot.

If this is not clear, or you have questions, please start a thread in the forums and we can discuss.