FlightAware Discussions

UAT 978


Well, I thought I would run my Dongle receiver on 978 for a few days with a high gain antenna up high.

Pretty boring. I played around with gain setting and auto agc seemed to be the best. I did get a couple uplink targets every now and then, but very rarely. Very few aircraft squawking as well.

Looks like another mult-billion dollar FAA fiasco. Anyway, I’m done with that. I wouldn’t try it again without a full-blown receiver like say the Mode-S beast for 1090. It would be nice if they made one for 978, but it doesn’t seem worthwhile when general aviation is resisting an upgrade.


Let’s see how it goes in 2020.
(The higher accuracy Galileo GNSS satellites are scheduled to be online around 2020 too).

I see only a few contacts in NYC a day. I need to put that antenna outside and high to get a decent range.

I would like to see a receiver like a beast but don’t expect one.
The trilby Hat could do the job, I think. It just needs someone to program the FPGA

An Airspy decoder is the next best thing, however, it generally requires more CPU and USB bandwidth than an RPI3 can do(to decode such a wide signal). I am about to move an Odroid4 to the attic (POE+ needed) and will see how it goes with a higher antenna(1090Mhz only).

(978)It is kind of needed as 1090 Mhz will get very crowded very soon.


I picked up an rpi3 & the 49" FA antenna to try dump978, down in the hole in the valley where I live.
I pick up one now and then - it feels sort of like fishing in the swimming pool - doing everything right without result. I thought I’d try to tee the output to a file and get a better idea of traffic (if any)
Code that occasionally sees something:

sudo rtl_sdr -f 978000000 -s 2083334 -g 48 -  | sudo /home/pi/build/dump978/dump978 sudo /home/pi/build/dump978/uat2json  /var/www/html/dump978/data

Code that hasn’t had a hit yet:

sudo rtl_sdr -f 978000000 -s 2083334 -g 48 - | sudo /home/pi/build/dump978/dump978 | sudo tee  >> dump978-t.log - |sudo /home/pi/build/dump978/uat2json  /var/www/html/dump978/data

An earlier iteration (without forcing sudo at each step) failed on permissions in /var/www… when I launched the script using sudo. So as a matter of brute force and awkwardness I gave it a liberal dose of sudo.
Still waiting to see if it does anything… There may be an error in the tee step. :confused:


The gain of 48 will almost certainly fail. I tried all sorts of numbers and only when I select 0 (automatic agc) did targets come in regular. Well, I mean the four targets in two days :slight_smile:

They seemed to track well for 50 miles or so, then faded fast. Also lost them in a turn, so I assumed the antenna was facing away from me.


I found that RPi3 coped with an Airspy with no problem, I set “-w 3” to resolve MLAT issues. I ran the Airspy on a separate Odroid for a while but found no advantage over a RPi3. I live in a busy area 200-300 aircraft most of the day.
(I have gone back to a FA Pro Stick as it just outperforms the Airspy and Beast at my location.)


Hi Boab,
As we speak, we are both at about the same 30 day ranking level(in the 30s).
You get about 20-30% more position reports and have better coverage.
I am in a busy area but have severe terrain blocking to my south and east.
I also have a really busy heliport, the Hudson river corridor and tourist helicopters that generate a lot of chatter.

My RPI3s didn’t cope well with the airspy(full or mini) with a decent antenna location or running it with UAT978(too much cpu). MLAT died or died when I used the GUI.

I agree that the Pro stick out performs the beast and airspy(in my busy area).
It seems to be close to the radarcape, if not better. It certainly is the best value for money.
I do have better cavity filters. They seem to help a lot. Lots of GSM(I can see several on nearby apartments) and radar near me(JFK, LGA and EWR, not sure if TEB has one).

This is what I used for a while
(run as root)
/usr/bin/rtl_sdr -d 1 -f 978000000 -s 2083334 -g 48 - | /home/pi/adsb-receiver/build/dump978/dump978 | tee -a /var/log/dump978.log | /home/pi/adsb-receiver/build/dump978/uat2json /var/www/html/dump978/data/ | /home/pi/adsb-receiver/build/dump978/uat2esnt | nc -q1 30001

Are you using a STD dongle or the FA one? You may need a filter for UAT 978 for the FA dongle, unless the gain is turned down. I tried my FA dongle without a filter one day. at 48db I got 2 aircraft when I normally get 200.

I have the uputronincs 978 amp/filter that I need to get running some day. I’ll pair it with one of the STD dongles running bias-T. It would be nice to use a cavity filter, but not until there is more traffic. I see about 1 aircraft a day.


Would rebroadcast traffic from TIS-B be sent up to FA and count towards my aircraft? Looking at it, perhaps not as the callsign is empty and i’m not sure the address in the header is the ICAO address. So there wouldn’t be much to associate that traffic with.

I’m close enough that my attic antenna gets two towers.


Gain of 48 is what I use. I’ve been picking up UAT for close to a year maybe?


I would depend on the location, antenna system and dongle.
With no filter, I get 2 A/C at a time with the FA dongle, 48db gain setting and DPD antenna. Add a filter and it goes up to 100-200 at a time. Lower the gain to 38(for me) and it gets a lot better.
A nooelec or rtlsdr works happily at 48db(no inbuilt amp). Gain adjustment could make it better.
An Airspy is useless without a pre-amp. Well, not quite useless, but it gets about 70-80% more traffic with one.
(these are dump1090 stats, not dump978. 978 should be similar, maybe a little better as it doesn’t get splattered with Mode 3A/C/TCAS/Military 1090Mhz traffic).
The Mode S beast and radarcape don’t even have gain settings.

Hopefully we will get more decoders in the future. It is possible for an FPGA to decode 978 and 1090 using the same antenna. Some of the flight feeders receive GPS and 1090Mhz using the same antenna(they use an internal isolator, I believe, so not quite the same as an FPGA decoding both signals.)


So I finally have a UAT978 decoder running on a decent (height) antenna. It is only a directional (pointing northeast) until I buy a 24’ ladder as the loaner recently went back to its owner. My shoulder is also playing up, so I shouldn’t use a ladder.

Now I see a few more aircraft and lots more position reports. I think a see a 1/2 dozen per day.
pi@odroidxu4:~ cat /var/log/dump978.log | wc -l 9762 pi@odroidxu4:~
The logs are rotated at 4AM daily.

Just using an RTL-SDR dongle with no filter. I have an amp/filter I will install when I get around to soldering the bias-t link on the dongle. Wish I could find a 978Mhz cavity filter as they work really well for me on 1090Mhz.
It sucks a bit of cpu so I am using an odroid XU4. It is also fed by a radarcape and airspy(offset antenna to get around an obstacle, tree).


I’m using a FA Pro for UAT, with the FA filter and the unmodified $10 Groundplane sitting in the window.

978 is right on the bottom edge of the FA filter skirt and it seems to work OK. I get 4-6 planes/copters at once sometimes during the day.


thanks. I would prefer a cavity filter as there is so much noise in NYC. Also plenty of radars and 978Mhz is only 2Mhz further from 1030Mhz radar than 1090Mhz.
I got the Hab/Nevis 978Mhz amp/filter working with Bias-t and an 1ppm TXCO RTL-SDR. It seems to be working well.
I have over 22,000 position hits since I rotated the logs at 3:46AM (It is now 3:35PM).
pi@odroidxu4:~ cat /var/log/dump978.log | wc -l 22140 pi@odroidxu4:~

Not sure how many aircraft I see directly as the website seems to display ads-r traffic too.
I can tell on the dump978 webpage as US aircraft ICAO IDs start with A and the ADS-Rs seem to start with 2. I see a few 2acxxx aircraft at the moment. I have seen 3-5 real aircraft and up to 20 or 30 ADS-R aircraft.

I dialed the gain back to 37db. Trying to work out how to optimise the gain setting.
It would be nice if dump978 provided signal level information to the JSON or log file.

Looking at the github files, it seems that RS=?? is a corrected error level.
// Demodulate an ADSB (Long UAT or Basic UAT) downlink frame
// with the first sync bit in ‘phi’, storing the frame into ‘to’
// of length up to LONG_FRAME_BYTES. Set ‘*rs_errors’ to the
// number of corrected errors, or 9999 if demodulation failed.
// Return 0 if demodulation failed, or the number of bits (not
// samples) consumed if demodulation was OK.


Also trying to work out how to get a log file, feed the webpage with a JSON file and send to dump1090 on 30001.
The first two are working well. I could live without logging if I could get JSON and tcp 30001 working.

I ordered a ladder so should be able to put the FA Dual band antenna on the chimney in a few weeks.


I think the Stratux fork does something with signal levels.

Looking at the github files, it seems that RS=?? is a corrected error level.

Yes, it is the number of errors corrected. (RS = Reed-Solomon, the type of error-correcting code used)


I had another thought about the UAT, and that is there seems to be no development for TCAS to implement it, and thus general aviation will have to keep their transponders. I guess a transponder + UAT is cheaper than a Mode-S transponder, otherwise why not just upgrade to Mode-S and be done.

I notice the UAT does transmit the squawk and altitude, so there is nothing special about the old Mode-A/C transponder, except that TCAS can’t interrogate a UAT. It could only listen to the squitters. I know TCAS listens to Mode-S squitters, so I would guess it just needs a UAT receiver to work.

Yea, that’s it, have airlines add UAT TCAS receivers! I guess I don’t understand the huge waste of infrastructure. Plus the fact that Mode-A/C transponders pollute the spectrum. Sending out 100 replies when only two or three are needed.

I would have made UAT just a data link for aviation, and left radar to Mode-S.

If I was in charge, I’d probably just equip the FAA with European ATC equipment and be done :slight_smile:


I think that there are a number of issues.

  1. backwards compatibility. Mode 3A/C transponders need to be kept after 2020. As Edgy stated for TCAS if nothing else.
  2. One of the reasons for UAT978 was congestion. I get something like 6,000 Mode A/C hits per second in NYC. On my FA Dongle, without a filter, I get 2 A/C, with a filter it goes up to 200. I use Cavity filters as the FA filter doesn’t block 1030Mhz Radar. I am pretty sure NYC has at least 3 radars(EWR,LGA and JFK). I am sure there are more in range.
  3. UAT978 was suppose to be cheaper than ADS-B 1090. I believe it is getting there. One of the sweeteners was free NEXRAD weather and FIS-B. This would probably sway a few people that fly infrequently but want weather and don’t want to pay for satellite weather. ADS-R helps with 1090 traffic, however, this is only if you are in range of a base station. Low flying aircraft like Helos, seaplanes, EMS, LEO, Firefighters may want to get both.
  4. If you fly Internationally, you need ADS-B 1090. UAT is only acceptable in the U.S. There are dual band transponders. If I had my own Aircraft, and flew often enough, I would like to have a dual band (Top/bottom antenna, ie 4) (transmit and receive) for the extra visibility.

I have tried the Stratux dump978 a bit. It does provide a signal level. I couldn’t get it to stay up for a while. I will work on it when I have more time. Right now I am just piping dump978 into uat2esnt then into NC for localhost 30001.


Now that the FAA has setup the process for applying for rebates for ads-b upgrades, there should be a growth in traffic. 978UAT GA aircraft are typically going to be lower so your range on them is going to be a lot smaller due to LOS. I opted to put a 1090 ES transponder in when I built my Gyroplane due to the fact I only need one box for ADS-B. If you used 978UAT device the requirement for a separate 1090 transponder seems inefficient. Extra weight, extra electrical load, extra antenna…


I would agree that weight bound aircraft like small Gyros, helos and airplanes are likely to go for the minimum.
Most fly low and by VFR, I rarely fly a helo over 2500 AGL. The single 1090ES Out option also satisfies the requirement to fly Internationally, nice for those that hop across the border.


Since 2016 both Garmin and Uavionix have created equipment that provide a UAT signal based an aircraft’s existing Mode A/C (4096) transponder. Garmin’s box (GDL82) goes for about $1800 plus about $500 to $700 for installation. It needs a GPS antenna installed plus power wiring. Uavionix’s has two units, the SkyBeacon and the TailBeacon, that sell for about $1850 and $2000 with minimal install cost. They both use existing aircraft power wires and existing mounting holes… They both weight 3.5 oz (100 grams) or less. I think we will see a lot of smaller\older GA aircraft opting for UAT, especially since the FAA has just restarted the $500 rebate program.

Maybe Flightaware will make a UAT978 version of their software for the Raspberry.


I did use this fork and indeed it provided RSSI for UAT:


I use that fork and it works well.

I do run a cron job to restart the process every hour. It seemed to hang for me after a while.