Hacker News new | ask | show | jobs
by amatecha 3 days ago
Looks pretty cool, though kinda "cheating" by pulling from adsb.fi - though I think you'd need something a lot more powerful than an ESP32 to receive and decode ADS-B ;)
5 comments

Using ADS-B and calling it a "radar" feels wrong to me.

(But is is a cool project)

Agreed, and even SSR always felt like cheating imo. I wanna see someone build a primary radar on an esp 32.
Gotta admit that's what I clicked through hoping for.

I've seen a few projects that use SDR to detect doppler shifts of reflections of broadcast FM radio station off planes as "passive radar". But that doesn't get much in the way of direction info, just approach velocity. I've pondered building something that uses that and correlates it with an ADS-B receiver, to see it it can detect aircraft that are not transmitting ADS-B. But that'd get me on another "list" if I published it I suspect...

This is not the project I remember, but it's the same idea and technique: https://github.com/Max-Manning/passiveRadar

I suspect it's possible to build an active radar without exceeding the limits of the ISM bands.

Actually, I know it's possible, that's how the automotive radars (used for adaptive cruise control) work. The real question is if someone can get enough range to pick up aircraft.

Is it bistatic or monostatic? How do you know that it is doppler and not multipath?
And not actually receiving ADS-B which requires some radio module tunnable to specific frequencies
I would actually expect the math to decode ads-b traffic is substantially less complex than, for example, a TLS connection.
TLS is supported in hardware, so it takes no more processing power than moving the data around without encryption.

In the US, ADS-B in uses 1.3 MHz of bandwidth, which would require 2.6 Msps. The ESP32-C3 running at 160 Mhz would have ~70 instructions per sample to process the data. That's probably doable, but the ESP32-C3 is one of the less capable variations of the line, and there are dual-core versions running at more than double the frequency, and those should be able to handle ADS-B in without issue.

> TLS is supported in hardware, so it takes no more processing power than moving the data around without encryption.

Specifically, common PC CPUs support AES acceleration, so you can get the ongoing encryption for an established connection with minimal overhead. There is still some initial overhead for establishing the TLS connection due to the need to do key exchange (with asymmetric cryptography primitives typically based on Diffie-Hellman with finite fields or elliptic curves).

GPS is over 1 GHz, but I don't think you need to have a microcontroller running that fast to decode it?
I imagine the over 1GHz in this case is the baseband that you are talking about.

ADS-B baseband is also around 1GHz, what they mean is once you down convert in the process of demodulating the signal you will get a signal that has bandwidth of 1.3MHz.

It's the width of the band that matters, not the carrier frequency. For example a band running from 1.21 GHz to 1.22 GHz has a 10 MHz wide band. A heterodyne tuner would use analog circuitry to output it as a 0 to 10 MHz baseband signal that can the be sampled by the ADC.

GPS bands are from 11 to just over 15 MHz, depending on the band, but decoding is extremely complex, so it's usually done with dedicated hardware, so a microcontroller only needs to read the handful of bytes that hardware outputs per update, and most receivers default to only a single update per second, and max out at tens per second.

Except on small memory / processing devices (like ESP32) it's not actually that simple. Processing ADS-B on an ESP32 would, likely, be easier.

Part of the reason I've come to understand how finicky TLS is on ESP32 is because there have been a ton of TLS issues with these devices in Home Assistant [0]. The linked issue just being one of them that's still not fully resolved.

[0] https://github.com/esphome/home-assistant-voice-pe/issues/31...

It is trivial to decode, but don’t forget that tls is extensively optimised on most networking stacks.
Actually possible to receive and decode ADS-B on ESP32, but MLAT is failing (tried hard but not found a trick yet).

Biggest problem isn’t that it’s not powerful enough, but the USB port bandwidth don’t match most SDR.

Using some clever tricks you can receive parts of the message on a slower USB and be able to decode ADS-B

Why do you need to send the samples over USB?
The built-in ADC doesn't have a high enough sample rate to decode ADS-B in, so an external one is needed, and USB ADCs are readily available with built-in demodulators, for use as DVB-TV receivers.
No you don’t need an external one, it’s actually possible to sample parts of high bandwidth using a lower bandwidth because of the small buffer in most SDR. The problem is that you can’t freeze the buffer so have to gather multiple “sweeps” get parts of ADSB stitched together.

Maybe I post the Rust code after some cleanup. Now I am busy build a new database from scratch to compete with them all https://github.com/punnerud/mpedb

    …a new database from scratch to compete with them all…
I see you've taken this route: https://xkcd.com/927/
You could fit a pi zero and rtl in an enclosure not much larger than the one they’ve printed.