Directional antennas


A couple of comments in other threads made me think about directional antennas.

My question was more about the max message rate which seems so much capped. I wonder what rate others are getting…

There is something of a negative feedback loop on message rate as

(a) as you see more messages, there are more collisions causing garbled messages;
(b) some systems like ACAS will throttle back message power/rate in response to a busy environment;
© (hypothetical) SSRs typically have a fixed interrogation rate budget, so interrogation rate per aircraft drops off when there are more aircraft

In my experience it is uncommon to see >1500 mode S messages/second

Yep, sectorized antennas each with their own receiver is probably the way to go there.

My plan is to build 4 directional antennas each pointing to the cardinal points. The 4 downleads will connect to 4 dongles, all attached to one RPi. I guess a Pi 3 will be required?

I’ve done a bit of modelling with 4NEC2 and come up with the following design for an antenna.

Results from 4NEC2 run on the above antenna.

SWR = 1.41, Gain = 10.2 dBi

I haven’t made a prototype yet.

Any comments appreciated especially how I might combine the 4 feeds to Flightaware or should it just work?

{Edit} Added extra images

Airspy mini VS FA prostick : TL;DR not worth the extra money
Directional antenna for ADS-B?

3.3.0 should make this a little easier, but it will still require copious amounts of (software) duct tape.

I suggest you start from a vanilla Raspbian image (the piaware sdcard image is not set up for this at all).

You could just combine all 4 feeds and feed the result to piaware but mlat will not work in that configuration.

To do it properly, run 4 copies of piaware, each with a different -configfile and -cachedir argument. You’ll need to make separate copies of piaware.service to do this. Give each one a different locally-assigned MAC address (set bit 2 of the first octet, e.g. 06:xx:xx:xx:xx:xx) via force-macaddress, and configure a receiver-type of other and a different receiver-port for each piaware. You will also need to reconfigure the mlat results options to either listen on separate ports or drop the listeners entirely.

If you’re running dump1090-fa you’ll need to do something similar to get 4 copies of dump1090-fa running with separate configs. Use rtl_eeprom to give each receiver a different serial number, use the serial numbers to identify the dongles to dump1090. Disable all the ports except the Beast data port, give each dump1090-fa a different Beast data port.

You might want a 5th dump1090 running to aggregate the data, or run something externally.

Running 4 dongles on a Pi 3 might be marginal, both CPU- and power-wise, and you may see USB bandwidth issues too.


Bit of a jokey answer but, might be easiest to put a pi on each antenna and a fifth to tie it all up.


Hi Dave!
Nice to see that you started a dedicated thread for directional antennas.

It will be better if you post your quad antenna’s simulation screenshots (which you posted in another thread) here also to make this thread complete and stand-alone. This will help those persons who have not seen the other thread.

I remember you have tried DIY Yagi also. If you post your Yagi details here, it will be nice.



You might be right. Obj’s post above lost me at the 4th sentence :open_mouth:


In your first post, the quad with the feed point at the bottom will be horizontally polarized.
To be vertically polarized, feed it on one of the vertical sides.

Good luck on the tests.


Many thanks.

I’ve seen images on the internet with the squares rotated by 45 degrees and the feed on one of the East/West corners or North/South corners to change the polarisation.


Great idea @triggers.
I think a biquad would also be a great antenna for this purpose. Forgiving design, easy to build.

Triggered by the same idea that a directional antenna will see only part of the (many) aircraft i started building an array with 4 stacked biquad’s in 6 directions (i.e. 24 biquads alltogether). But - to add to the crazyness - they will feed a single receiver switched through a SEM163D 6 position coax relay. The plan is to have each direction connected to the receiver for 10 seconds.
It will either be a total disaster or help me end up in the top ranks 8) Keep you guys posted and a full write-up will arrive on my project pages!

in principle:


Time-division Multiplexing
Time-division multiplexing (TDM) is a method of transmitting and receiving independent signals over a common signal path by means of synchronized switches at each end of the transmission line so that each signal appears on the line only a fraction of time in an alternating pattern. It is used when the data rate of the transmission medium exceeds that of signal to be transmitted. This form of signal multiplexing was developed in telecommunications for telegraphy systems in the late 19th century, but found its most common application in digital telephony in the second half of the 20th century.

Time-division multiplexing was first developed for applications in telegraphy to route multiple transmissions simultaneously over a single transmission line. In the 1870s, Émile Baudot developed a time-multiplexing system of multiple Hughes telegraph machines.

In 1953 a 24-channel TDM was placed in commercial operation by RCA Communications to send audio information between RCA’s facility on Broad Street, New York, their transmitting station at Rocky Point and the receiving station at Riverhead, Long Island, New York. The communication was by a microwave system throughout Long Island. The experimental TDM system was developed by RCA Laboratories between 1950 and 1953.

In 1962, engineers from Bell Labs developed the first D1 channel banks, which combined 24 digitized voice calls over a four-wire copper trunk between Bell central office analogue switches. A channel bank sliced a 1.544 Mbit/s digital signal into 8,000 separate frames, each composed of 24 contiguous bytes. Each byte represented a single telephone call encoded into a constant bit rate signal of 64 kbit/s. Channel banks used the fixed position (temporal alignment) of one byte in the frame to identify the call it belonged to.

Time-division multiplexing is used primarily for digital signals, but may be applied in analog multiplexing in which two or more signals or bit streams are transferred appearing simultaneously as sub-channels in one communication channel, but are physically taking turns on the channel. The time domain is divided into several recurrent time slots of fixed length, one for each sub-channel. A sample byte or data block of sub-channel 1 is transmitted during time slot 1, sub-channel 2 during time slot 2, etc. One TDM frame consists of one time slot per sub-channel plus a synchronization channel and sometimes error correction channel before the synchronization. After the last sub-channel, error correction, and synchronization, the cycle starts all over again with a new frame, starting with the second sample, byte or data block from sub-channel 1, etc.



It’s not really TDM because there is no time slot coordination between the transmitter and receiver. (edit: and more fundamentally, TDM is about multiplexing multiple low-bitrate signals onto a single high-bitrate medium, which is not really what’s happening here)

If you’re using mechanical relays, how happy are they going to be with switching every 10 seconds?
edit: they’re rated to 1 million cycles per position, so that’s about a 2 year lifetime.


I’ve thought about this as well.

My first shot at antennas would be four corner reflector dipoles – simple, good performers.

Also, going with a corner reflector eliminates signals outside that quadrant. Not reduces, but eliminates. Side lobes? back lobes? Not with a good corner reflector.

As for mlat, I happen to have a Stratum 1 (GPS disciplined) time server. I can (and do) run systems tightly synchronized using NTP. I can run a line to each Pi to get them in tighter synch to the leading edge of the GPS PPS.

Given some hints, I bet I could lock multiple SDRs to the same clock. (First whack would be to use one SDR as the master and feed its crystal osc to the other 3).


bob k6rtm


I think this is possible, IIRC it has been done for setups that need phase coherency, e.g. … astronomy/

Out of the box for mlat, though, it’s not a huge help. There are two unknowns when trying to pair up receivers: the difference in clock frequency, and the difference in absolute clock value (i.e. count of samples since the thing started). Slaving the clocks together eliminates the frequency difference but doesn’t help with the offset. You’d still need two separate feeds to let the mlat server maintain that offset separately for each receiver.

Looks like the radio astronomy setup above solves this by having a switchable noise source and then cross-correlating the noise seen by different receivers. You could do something similar on the ADS-B frequencies, but you’d have to write code to make the different dump1090s do a similar synchronization process.


I think what you are referring to is “Frequency Division Multiplexing (FDM)”.

*"In telecommunications, frequency-division multiplexing (FDM) is a technique by which the total bandwidth available in a communication medium is divided into a series of non-overlapping frequency sub-bands, each of which is used to carry a separate signal. This allows a single transmission medium such as the radio spectrum, a cable or optical fiber to be shared by multiple independent signals. Another use is to carry separate serial bits or segments of a higher rate signal in parallel.

The most natural example of frequency-division multiplexing is radio and television broadcasting, in which multiple radio signals at different frequencies pass through the air at the same time. Another example is cable television, in which many television channels are carried simultaneously on a single cable. FDM is also used by telephone systems to transmit multiple telephone calls through high capacity trunklines, communications satellites to transmit multiple channels of data on uplink and downlink radio beams, and broadband DSL modems to transmit large amounts of computer data through twisted pair telephone lines, among many other uses."*



No, it’s not FDM either. There’s only one frequency involved.

TDM is where you have a high-bitrate signal that looks like this:


which you interpret as multiple lower-bitrate channels, each in their own timeslot:

channel 0: ABGHMN
channel 1: CDIJOP
channel 2: EFKLQR

… which has nothing to do with periodically switching between antennas.


Off the topic, but may be interesting to know:
Jean-Maurice-Émile Baudot (1845 – 1903), French telegraph engineer and inventor of the first means of digital communication Baudot code, was one of the pioneers of telecommunications. He invented a multiplexed printing telegraph system that used his code and allowed multiple transmissions over a single line. The baud unit was named after him.


I submit that morse code was perhaps the first digital code - signal is either on (1) or off (0) and can be read by humans and computers :wink:

Back on topic - directional antennas…



You missed the ‘a’ from the beginning

You deleted your post whilst I was replying.


Jumping on this wagon too.

I think the simpler aproach would be 4 RTL-SDRs and joining the results with modesmixer. No need to deal with antenna phase, impedances, etc.

The maximum output power for all USB ports of a raspberry PI is 1.2A. The power consumption of each dongle is between 150 and 300mA each, depending on the model, so I think power won’t be a problem.

Depending on how busy is the region I think CPU might become a bottleneck, but anyway there are cheap raspberry clones out there that cost $10 each, on the least resource 4 boards could be stacked to serve each dongle ($40 in raspberry clones, ~$30 in dongles = $70 total)

I think the main issue would be the mlat calculation, the best aproach would be 4 different intances of the mlat-client outputing the calculations to a single modesmixer, but not sure if all the feeders would accept this merged result. (4 mode-s + 4 mlat = 8 sources)


You could just allocate one dongle to MLAT and the others just provide ADS-B(no mlat).
Use dump1090 for the MLAT Dongle and modeSdeco for the others(feed port 30001 so that they are not used for MLAT).

Note that the FA dongles request 500ma (check lsusb for details).


I deleted it because it was off topic. I have posted too many off topic posts, so I decided to delete it few minutes after posting. I did not expect some one will be so fast to reply :slight_smile:
–… …–
.- -… -.-. -… … -… --…