For fun I've been using an AirSPy SDR (Software Defined Radio) to receive and decode ADS-B packets, primarily DF-11 and DF-17 messages.

The code is written in C++ and works reasonably well. It performs IQ processing / demodulation, packet extraction, CRC checking etc. As its output it generates AVR formatted message strings that are then served via a Listen Socket / Socket based interface. I then use Virtual Radar as a client to decode and display the data.

With regard to the DF-17 and DF-11 packets, I'm currently only forwarding the ones that have an Interrogator ID of zero, the so called "unsolicited squitters". i.e. Complete packets that have a zero remainder after CRCing.

I also receive / decode plenty of packets that have non-zero Interrogator IDs.

Can I use these for anything useful?

In other words, could I extract any useful information, positions, velocities etc. If so I could then re-write them as unsolicited DF-17 messages and pass them to Virtual Radar.

I am researching this to the best of my ability, but currently drowning in specs and documentation as there appears to be so much of it!

Apologies if I've miss used any of the jargon, I'm only a week into my project.

  • 3
    $\begingroup$ Welcome to Aviation.SE Max. $\endgroup$
    – DeltaLima
    Mar 24, 2017 at 15:03

2 Answers 2


Messages with Downlink Format 17 are, as you know, ADS-B messages that do not require interrogation. As such the interrogator ID will be zero.

Frequently you will see that, after applying the CRC check, the CRC remainder is non-zero. This is caused by corruption of the ADS-B message between the transmitter (see note) and the receiver. This is partly because transmissions of multiple aircraft are unsynchronised so that they may overlap an become difficult to untangle. This overlapping is called garbling.

Since you have IQ information available, you may be able to de-garble overlapping message with some success. Also, you could try to do error correction using the CRC algorithm. Up to two rogue bits can usually be corrected, more than that becomes difficult.

To improve the performance of the CRC error correction you can again use information from the IQ sampling, by giving each bit a confidence value based on the shape of the received radio data.

If you are not able to correct the error bits (i.e. you have a non-zero remainder after correction), you should consider that ADS-B message as useless.

Note: there are a couple of aircraft flying with rogue transponders that transmit garbage DF-17 messages with non-zero remainder. They will be phased out in the next couple of years.

  • $\begingroup$ Ooops, hit return too soon! I found the documentation a bit confusing. It implied to me that the interrogator ID could be any valid number and that the packet was a response. It does make sense that it should always zero. I am already correcting 1 or 2 bit errors with good success on messages that CRC to zero. I also plan to try and spot suspect bits to improve the efficiency of the error correction, via the IQ data and illegal Manchester encoding states. This seems like a reasonable strategy and should not too difficult to implement.... $\endgroup$ Mar 24, 2017 at 15:53

According what I could find in Annex 10, DF-17 messages are always supposed to have zero interrogator IDs -- so if you get any of those that don't pass the parity check, they must have been garbled.

On the other hand, DF-11 messages will often be sent with a nonzero interrogator ID. As specified, the interrogator ID after removing the CRC will always be between 0x000001 and 0x00005F; you can use that to retain some amount of distinction between a garbled message and a legitimate all-call response.

Whether this is useful is a different matter, since DF-11 basically doesn't tell you anything except there's an aircraft with such-and-such 24-bit address somewhere within sight of your antenna. But if you also receive position squitters from the same aircraft, I suppose you could have fun building up a map of where in your coverage area interrogations from particular radar installations can be heard.

  • $\begingroup$ Thanks! Interestingly, about 50% of the DF-11 messages CRC to zero. Should I be rejecting these? I do build up a table of valid ICAO address to help filter the other received DF types. I'll start taking the 0x0x1 to 0x5F range into account as you suggest. $\endgroup$ Mar 24, 2017 at 15:59
  • 1
    $\begingroup$ @MaxvanDaalen: Ah, I overlooked something. DF-11 squitter is used for TCAS, so you should indeed expect to get those with zero IID. $\endgroup$ Mar 24, 2017 at 16:07
  • $\begingroup$ OK, thanks for the update! $\endgroup$ Mar 24, 2017 at 16:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .