ADS-B status

I’ve read some posts from earlier this ear in the archives here, where there was mention of BladeRF’s ADS-B radio. It wasn’t clear to me if there was any compatibility with the LimeSDR. In any case, I am interested in running a receiver for ADS-B that’s more sensitive than the DVB-T dongle hack. What’s the current status of ADS-B for LimeSDR? I am still new to the Lime/GNURadio/Pothos/Soapy ecosystem, so of there os a working suite some installation notes would be greatly appreciated.

The license on the custom made FPGA gateware by Nuand LLC expressly limits the source code and “any derivative works” to be use only on hardware manufactured by Nuand LLC.
i.e. It can only be used on their BladeRF hardware and nothing else.

One option would be to develop a independent clean room implementation written for the LimeSDR, since the ADS-B standard is open. At the end of the day it is just binary bits effectively encoded as an AM signal. It could be implemented by tuning to 1090MHz, selecting the smallest analogue filter in the LMS7002M ( 0.7 MHz), selecting the maximum sample rate possible*, and then pattern match inside the FPGA for a valid preamble ( ref: http://www.radartutorial.eu/13.ssr/sr24.en.html ), have a flag for a valid preamble. In parallel decode the data as Manchester encoded and validate the parity, have a flag for valid parity. If the parity flag is valid, and the preamble flag that coincided with that time was also valid then a ADS-B signal was received, transfer that demodulated string of digits across to the PC.

*maximum because you can decimate within the TSP(Transceiver Signal Processor) and gain extra dB of signal from maths.

A much simpler option might be to install gnuradio and use modes_rx which is part of the gr-air-modes module.

Or to add Lime support to:

1 Like

Right, so dump1090 is nice and lightweight, and seems to work well, if all you want to do is receive Mode S.

1 Like

Stupid question…
Any updates on this topic that you’re aware of?

gr-air-modes should work via gr-osmosdr source block.

If you mean a Lime or SoapySDR fork of dump1090, I’m not aware of one.

Any one using Lime SDR USB for ADS B at the moment ? (not mini)

I have made a hacky version over here: https://github.com/v0l/dump1090_lms

Its a bit messy but it works ok so far ive been using it the past few days

4 Likes

Hello everyone,

The dump1090 has a huge number of forks https://github.com/mutability/dump1090/network/members that have different features and SDR support. It is difficult to say for sure but it looks like the most featured version is maintained by FlightAware one https://github.com/flightaware/dump1090 . From the DSP point of view, the main difference is a sample rate, when other forks perform demodulation using a 2.0 MHz sample rate the FlightAware version does it using a 2.4 MHz sample rate. Please feel free to correct me if I wrong. From the programming point of view, it has a structure that encourages adding of new devices. To add support of a new device it is necessary to create a new source file with overridden functions for configuration, opening and reading data from the desired receiver. The current version has the support of RTLSDR and BladeRF devices, and their implementation can be used for reference. Eventually, open API and existed solutions allow to add support of new devices with minimal efforts. At the same time, it looks like maintainers don’t like to include support of new devices into mainline. For example, commit for HackRF support was proposed about eight months ago, but it hasn’t been merged or reviewed https://github.com/flightaware/dump1090/pull/57 .

Earlier @voidic introduced a solution based on the antirez fork (which is very useful and also can be used for reference). But I’d like to share one more implementation of LimeSDR support for the dump1090 which is based on the FlightAware fork https://github.com/Gluttton/dump1090/commits/limesdr . Most of the changes aren’t important and intended to improve user experience. The core commit is https://github.com/Gluttton/dump1090/commit/53183c0b2a26006e5ac8d97fe6a09d771638f7a7 . The changes have been successfully tested on LimeSDR USB device using a wideband omnidirectional antenna (a detailed description can be found in the commit message).

I would be grateful for any feedback, code review or testing results!

2 Likes

Nice work, thank you.
Can run some tests by the end of August.

1 Like

I’ve testing out both repos. They seem to work fine. I do however struggle to get any proper “messages” displayed. With my blue RTL-SDR I get a continues flow of data. With the LimeSDR mini I’ll be happy to even get 1 raw entry.
Trying different dump1090 option to see if I can tune it’s performance.

Although I use a GSM antenna for my Lime, I placed it outside, to the balkony, with clear sky view.
RTL-SDR tests were done inside the house.

1 Like

Hi @BlackF,

Thank you very much for sharing your test results!

Although I use a GSM antenna for my Lime,

Per my understanding, if your antenna has a narrow bandwidth it can be an issue. But it seems strange that this antenna works well for RTL-SDR.

For LimeSDR-USB it is important to use the right RF connector for antenna. But LimeSDR-mini has only one RF connector, so it can’t be an issue.

I placed it outside, to the balkony, with clear sky view.
RTL-SDR tests were done inside the house.

In my environment I can’t receive signal inside, so I need to place the antenna outside in both cases (for RTL-SDR and LimeSDR).

Trying different dump1090 option to see if I can tune it’s performance.

It’s also OK, but the key idea is to get the same performance for both receivers with the same environment (include settings).

Just for reference. According to my testing results the crucial settings are:

if (LMS_SetLPFBW(LimeSDR.dev, LMS_CH_RX, LimeSDR.stream.channel, Modes.sample_rate)) {
    fprintf(stderr, "limesdr: unable to set LP filter\n");
    goto error;
}

Also, I’d like to emphasize that by default LimeSDR has lower gain (75%) than RTL-SDR (100%).

Best Regards.

Below is a status update.

After a review and some improvements, the proposed solution (https://github.com/flightaware/dump1090/pull/75) has been merged into the devel branch and then in the master one. And starting from the v4.0 the FlightAware fork of the dump1090 supports the LimeSDR (https://github.com/flightaware/dump1090/releases/tag/v4.0).

Note that this feature isn’t available for binaries delivered via Debian packages: https://github.com/flightaware/dump1090/commit/84dd2dfe0e7d6905f52cea333a106b1fe344bf84 . So to use dump1090 with LimeSDR it is necessary to build the program from sources.

1 Like