978 Mhz UAT in the US

I had same expectation as you as I am close to the busiest GA airport near Boston, yet I am rarely see more then 5 UAT airplane a day. The flightaware.com/adsb/stats/user … stats-4382 site is UAT receiver. Leave yours running for a day or two to see if you will get anything.

Are you running the second dongle on the same RPi?

I couldn’t get it to run in the PiAware SD card raspberry pi.
I have tried on another RP2 with no luck. it is running Raspbian Jessie
I have an older RTL dongle amazon.com/gp/product/B00QFC … detailpage
I get the same error in both devices.

I have ordered a second Nooelec mini 2+ amazon.com/gp/product/B00NZ2 … detailpage
I have this in the RP2 running dump1090.

I just installed RTL and dump978 (plus OS upgrades) and the blacklist.
Is there anything else I need to do?

It would be nice if there was a simple How-to guide for this.
I have used linux for 20+ years but as a user.

the test command doesn’t look right to me

pi@tardis2:~/dump978 $ sudo rtl_test
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000002

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Sampling at 2048000 S/s.

Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.

Reading samples in async mode…
lost at least 104 bytes
^CSignal caught, exiting!

User cancel, exiting…
Samples per million lost (minimum): 2

This is how I was able to get dump978 up and running using two dongles on the same RPi.

Information about my setup pertaining to this topic:

Raspberry Pi 2
2x NooElec NESDR Mini+ Al
Raspbian Jessie
Dump1090-mutability
PiAware 2.1-5

First off I specified DEVICE=“0” in /etc/default/dump1090-mutability to ensure the first device was used by dump1090.

Next to setup dump978 I used the following commands (this also set up the web based maps for dump978):


sudo apt-get install make rtl-sdr librtlsdr-dev libusb-1.0-0-dev lighttpd git gcc
mkdir ~/build
cd ~/build
git clone https://github.com/mutability/dump978.git
cd ~/build/dump978/
make all
cd ~/build
git clone https://github.com/mutability/dump1090 dump1090-copy
sudo mkdir -p /var/www/html/dump978/data/
sudo cp -a dump1090-copy/public_html/* /var/www/html/dump978/
sudo chmod 777 /var/www/html/dump978/data/

I use the following command after entering the directory containing dump978:


cd ~/build/dump978/
sudo rtl_sdr -d 1 -f 978000000 -s 2083334 -g 48 - | ./dump978 | ./uat2json /var/www/html/dump978/data | ./uat2esnt | nc -q1 127.0.0.1 30001

I set the device, -d, to 1 telling rtl_sdr to use the second device not being used by dump1090.
As well I am outputting data for the web site using uat2json.
Also I am sending a copy of the data to dump1090 using uat2esnt.

After executing the start command I receive:


Found 2 device(s):
  0:  Generic, RTL2832U, SN: 77771111153705700
  1:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 1: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Exact sample rate is: 2083334.141630 Hz
Sampling at 2083334 S/s.
Tuned to 978000000 Hz.
Tuner gain set to 48.00 dB.
Reading samples in async mode...

For me UAT signals are rare to almost nonexistent being the 978MHz antenna is currently indoors hanging in my window. That and there is not much in the way of UAT data where I am at anyways. Basically my setup was a proof of concept with plans on setting up a feeder at my mom and dads which is located about a mile or so away from KLRP with reasonable line of site from a mast.

@jprochazka

Are you running the uat2json just to have an ability to see the unique UAT traffic on a separate web page? If you running the uat2esent, the UAT traffic will be included in “standard” dump1090 web page.

I copied the HTML files from dump1090-mutability to the folder /var/www/html/dump978/ so I could see the dump978 output separate as outlined in the commands I used. But true if you do not wish to be able to view this data separately it is fed to dump1090 using uat2esent and you can omit the commands used to setup the website and the uat2json portion of the command.

Setup omitting the dump978 specific web interface:


sudo apt-get install make rtl-sdr librtlsdr-dev libusb-1.0-0-dev git gcc
mkdir ~/build
cd ~/build
git clone https://github.com/mutability/dump978.git
cd ~/build/dump978/
make all

Command to start things without uat2json (I am still specifying the device -d as 1 here as mentioned earlier):


cd ~/build/dump978/
sudo rtl_sdr -d 1 -f 978000000 -s 2083334 -g 48 - | ./dump978 | ./uat2esnt | nc -q1 127.0.0.1 30001

It looks a lot better now
Thanks.

What is the URL for the local DUMP978 website?
I think I need to do a little extra for this.

sudo rtl_sdr -d 0 -f 978000000 -s 2083334 -g 48 - | ./dump978 | ./uat2json /var/www/html/dump978/data | ./uat2esnt | nc -q1 192.168.249.123 30005
pi@tardis2:~/dump978 $ sudo rtl_sdr -d 0 -f 978000000 -s 2083334 -g 48 - | ./dump978 | ./uat2json /var/www/html/dump978/data | ./uat2esnt | nc -q1 192.168.249.123 30001 &
[1] 5363
pi@tardis2:~/dump978 $ Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000002

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Exact sample rate is: 2083334.141630 Hz
Sampling at 2083334 S/s.
Tuned to 978000000 Hz.
Tuner gain set to 48.00 dB.
Reading samples in async mode…

I can’t install these two packages on my flight aware SD card
root@tardis:~# sudo apt-get install rtl-sdr librtlsdr-dev
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package rtl-sdr
E: Unable to locate package librtlsdr-dev
root@tardis:~#

If you are not using Wheezy instead of Jessie these packages will not be available in the official repositories. Honestly I don’t have much experience with rtl_sdr on Wheezy others will be better able to help you there but there are rtl_sdr packages available from Obj. However I think with the current Wheezy based PiAware image you need to remove some files before installing them.

github.com/mutability/librtlsdr … _armhf.deb
github.com/mutability/librtlsdr … _armhf.deb

As far as the web interface using the commands I posted earlier YOURIPADDRESS/dump978/gmap.html will display the page. Again those are using the commands on Jessie. If using Wheezy you need to copy the html files to /var/www not /var/www/html.

Thanks everyone.
I had to move the Dongles to a fresh Jessie build (PiAware (Debian Package Add-on) 2.1-5) on a pi2.
Everything seems to work, however, I don’t seem to get any UAT978 hits.
(My little 2.5dbi gain Antenna is still only 3’/1m above ground level yet I get 1500+ aircraft per day. It is only 17’/5m AMSL. 98% of my hits are less than 60miles. I want to move the setup to the attic with a ~5-7dbi Antenna)

I watched QF11 come in late yesterday. It was an hour or two late due to storms in the NYC area.
I lose it near JFK due to terrain shielding.

I like the newer dump1090 Web interface I used for dump978.

It adds
Aircraft (total): 0 Messages: 0.0/sec
(with positions): 0 History: 0 positions
Plus a distance scale on the map is nice.
I hope they add these to the code used by piaware.

I may try the heatmap version of dump1090 later.

Edit: dump1090 v1.15 is awesome. I had troubles seeing mlat positions for a while. It seems a port was changed from 30004 to 30104.
I changed it back with this command sudo piaware-config -mlatResultsFormat “beast,connect,localhost:30004” and a piaware restart
Mlat and Mode aircraft can be displayed in different colours or the colour can be their altitude.
aircraft info includes a country flag, distance from receiver, alt/speed in metric and imperial, signal strength, a climbing or descending arrow, messages per second and totals, aircraft seen with and without positions.
heatmap works. still working in range map.

@obj

Oliver, over last couple of days I noticed an “anomaly” with the UAT feed (site flightaware.com/adsb/stats/user … stats-4382 ) - over the sudden I am getting position all the way up to 300+ miles where usually I was rarely where getting positions in 60-120 miles range. I thought the uat2esnt filter out the uplink messages so it should not be the FIS-B positions, however it seems I am tracking commercial jets via UAT (which by UAT definition should not be possible with downlink messages only). Any reasonable explanation to this “anomaly”?

I have had issues with dump978 not seeming to work well.

Here is some raw data I received using
sudo rtl_sdr -f 978000000 -s 2083334 -g 0 - | /home/pi/dump978/dump978 /tmp/jonUATtesting.txt &

pi@tardis2:~/dump978 $ cat /tmp/jonUATtesting.txt
-00aa06bf3a0fed9659d80aa912481c421f00;rs=5;
-08aa06bf3a0fa19659fc0ab912441c423806e20ccded2d0b72a5c0a0000a20000000;rs=3;
-00aa06bf3a0f4b965a2a0ae9123c1cc28800;rs=1;
-10aa06bf3a0ee9965a5c0b0912381cc29f0000000000000000000000000a60000000;rs=6;
-00aa06bf3a09ab9661500db9104050c1c800;
-10aa06bf3a09a79661f40dc910085141ae0000000000000000000000000cf0000000;rs=2;
-10aa06bf3a0a6d9665660e8901444241db0000000000000000000000000da0000000;rs=7;
-00aa06bf3a0a839665920e89015440c1cf00;rs=5;
-00aa06bf3a0aa19665ca0e9901643e41cf00;rs=1;
-00aa06bf3a0ee3966af4105901d434418f00;rs=6;
-00aa06bf3a0f29966b46107901d835416f00;rs=1;
-00aa06bf3a0f8d966bc0108901d836414800;rs=2;
-10aa06bf3a1157966dee10e901fc3640ee0000000000000000000000000fe0000000;rs=1;
-10aa06bf3a1183966e1e10e9020434c0df0000000000000000000000000ff0000000;
-00aa06bf3a11c7966e6010f902142fc0cf00;
-08aa06bf3a11f5966e8a10f902202cc0ca09df19e4bb040b0ea5c2a0000ff0000000;rs=2;
-00aa06bf3a123b966ec21109022c27c0df00;
-00aa06bf3a126b966ee2110902302440ef00;
-10aa06bf3a2e5396533206d9110452e15f0000000000000000000000000660000000;rs=6;

This github.com/mutability/dump978 says that these are all down link messages.
I assume that is down link from an A/C to the ground or other aircraft. I could be wrong.

When I run it through cat /tmp/jonUATtesting.txt | ./uat2text

cat /tmp/jonUATtesting.txt | ./uat2text for a few messages/

HDR:
MDB Type: 0
Address: AA06BF (ICAO address via ADS-B)
SV:
NIC: 9
Latitude: +40.8318
Longitude: -74.2267
Altitude: 5775 ft (barometric)
N/S velocity: 139 kt
E/W velocity: 71 kt
Track: 27
Speed: 156 kt
Vertical rate: 832 ft/min (from barometric altitude)
UTC coupling: yes
TIS-B site ID: 0

HDR:
MDB Type: 2
Address: AA06BF (ICAO address via ADS-B)
SV:
NIC: 9
Latitude: +40.9085
Longitude: -74.3027
Altitude: 1700 ft (barometric)
N/S velocity: -64 kt
E/W velocity: 164 kt
Track: 111
Speed: 176 kt
Vertical rate: -1280 ft/min (from barometric altitude)
UTC coupling: yes
TIS-B site ID: 0
AUXSV:
Sec. altitude: 1525 ft (geometric)

Edit (location problem was my issue. I got the lat/long wrong. They are local locations.)

Maybe it is a ground station rebroadcasting 1090MHz ADS-B data on 978MHz? They will show up as “downlink” messages.

If someone is interested to run a quick check to find how much is UAT traffic in his area, he can do it easily on an Android device by installing a free App “ADSB Receiver by HIZ LLC” (it will show as “Avare Adsb” after install). This App has an option to switch from 1090 Mhz ES to 978 Mhz UAT and vice versa.

I have done this using my Samsung phone, OTG cable, DVB-T dongle, and stock antenna placed indoor near a window. I did pick some UAT traffic, but not many, due to a combination of a poor antenna & low UAT traffic. To get realistic traffic, I recomend to use a better quality outdoor antenna.

https://farm1.staticflickr.com/622/21837113990_b053782304.jpg . https://farm2.staticflickr.com/1563/23755985053_f24a3bc10a.jpg

https://farm6.staticflickr.com/5651/23164938212_91af7edc28.jpg . https://farm1.staticflickr.com/763/22760209977_3eb550fcba.jpg . https://farm6.staticflickr.com/5677/22786367029_22169836a8.jpg

I did checked uat2esnt and it will pick up only “downlink” messages. I guess I will have to take a look at dump978 to see if the re-transmitted positions can be filtered out.

Thanks! I tried your directions and it works, although the traffic only shows on my dump978 map and not on the main dump1090 map. I’m still troubleshooting that.
Is there an easy way to start it upon boot? I’ve tried but I’m sure I’m doing something wrong.

Is your dump1090 on a different machine? Just change 127.0.0.1 to the correct IP address. If on the same machine, need more data on your setup. Using different port?

You can setup to start at boot by:
http://discussions.flightaware.com/post186626.html#p186626

Dump 1090 is on the same pi using Debian Jessie. I’m using all the default port settings: # Port to listen on for raw (AVR-format) input connections. 0 disables.
RAW_INPUT_PORT=“30001”
127.0.0.1 should work but doesn’t.

I tried using your script, but have something wrong. I’m slowly stumbling through Linux! I manually start it using:
cd ~/build/dump978/
sudo rtl_sdr -d 1 -f 978000000 -s 2083334 -g 48 - | ./dump978 | ./uat2json /var/www/html/dump978/data | ./uat2esnt | nc -q1 127.0.0.1 30001
It’s located in /home/pi/build/dump978. What changes do I need to make to your script for my setup?

Thanks for the help.

Update. I stopped trying to make it so hard and just moved everything to the same directories you have. Made the .sh file executable. Now dump978 runs on start up! Data still doesn’t appear to be going to dump1090 as I’m still not getting the 978 traffic on the dump1090 map.

Is it allowed to feed from dump978 to piaware via uat2esnt?

I was testing out UAT reception today and do get an occasional small plane. Feeding it through dump1090 seems to work nicely… Example tracklog where I added UAT ADS-B to a flight that only had FAA coverage.

But because uat2esnt makes transmissions look like Mode-S and dump978 is marked “experimental”, I wasn’t sure if it is OK to feed piaware this way, or should I wait until piaware supports UAT directly.

Many of us have been doing it for quite sometime. They do end up on the FA web site. Considering that OBJ works for FA and he wrote the software…I think it’s fine.

It’s not officially supported but I don’t think it breaks anything much. I need to take another look at how uat2esnt encodes the DF18 messages as I’m doing some work on the other side of that to handle 1090Mhz TIS-B properly too.

(edit: done. if you update to current github HEAD it has a tweak so that TIS-B vs. ADS-B are distinguished when uat2esnt builds a DF18 message)

Hi all,

What are people using for a 978 Mhz antenna?

– Ken