Since the end of August I have been working on a new ADS-B receiver application that is intended to outperform existing open source receivers in scenarios with weak signals or message collisions. Now I have reached a point where this software is ready to be published. The name of this project is more1090, and it is a Rust application and library licensed under an Apache 2.0 or MIT license. The receiver operates at 8 Msps IQ and uses FFTs for signal detection. Therefore, it is much more CPU intensive than other ADS-B receivers such as readsb. It will probably not run on your Raspberry Pi (I haven’t tried; maybe there is a hope for the Pi 5 or other modern high-performance ARM boards), but it runs 4 times faster than real-time on a modern x86-64 laptop (the receiver is single-threaded, so the core count doesn’t matter), and it can decode way more messages than readsb.
The more1090 receiver only decodes Mode-S extended squitter replies (DF17 and DF18), which is how ADS-B is transmitted at 1090 MHz. Other receivers such as readsb also attempt to decode other Mode-S reply message types and even Mode-A/C replies. The challenge to decode other Mode-S message types is that only extended squitter and acquisition squitter (one particular use of DF11) are intended to be broadcast messages to be decoded by any receiver. The remaining messages are intended to be replies to an interrogator, to be decoded only by that interrogator. Their CRC is XORed with information only known to the interrogator, such as the ICAO address of the replier or the interrogator identification code. Therefore, it is difficult for another receiver to determine if it has decoded these messages without errors. Because of this, more1090 focuses on decoding extended squitter messages as best as possible and ignoring everything else. It is possible to decode acquisition squitter messages using a similar approach, but these messages only contain the ICAO address of the transmitter, so they are of limited interest, and decoding them is not implemented at the moment.
In addition to the ADS-B receiver, more1090 contains a signal simulator that can generate all types of Mode-S and Mode-A/C replies that appear at 1090 MHz in the real world. This simulator can generate both signal snippets containing a single message, which are useful for benchmarking things such as decode probability at a given CN0, and full scenarios which contain all message types with transmission times following a Poisson process. The full scenarios characterize the receiver performance in more realistic conditions.
At the moment this simulator doesn’t generate TACAN/DME signals. There are a few ground-to-air TACAN channels that are within 4 MHz of 1090 MHz: 125Y, 126Y, 1Y, 2Y, 3Y, 4Y, 5Y, 6Y, 7Y. These channels are used infrequently (an example is the SSY VOR/DME in Madrid, Spain, which transmits on 125Y at 1086 MHz). Additionally, there are also air-to-ground TACAN channels within 4 MHz of 1090 MHz: 62X, 62Y, 63X, 63Y, 64X, 64Y, 65X, 65Y, 66X, 66Y, 67X, 67Y, 68X, 68Y, 69X, 69Y, 70X, 70Y. Real world usage of these channels includes around 100 civilian VOR/DME, VORTAC or DME-only in channel 70X (1094 MHz) and a number of military TACAN in the remaining X channels. These are a potential source of interference to ADS-B and other secondary surveillance radar services at 1090 MHz.
The signal simulator is used for benchmarking the more1090 receiver, both in synthetic conditions (isolated messages at a fixed CN0) and in scenarios which are representative of a typical terrestrial receiver and a typical receiver on a LEO satellite.
In the rest of this post I explain more details about this new ADS-B receiver.


