ADS-B Platform Architecture

Table of Contents

System Diagram

                              ┌─────────────────────────────────────────┐
                              │            1090 MHz Airspace            │
                              │  ✈ Aircraft broadcasting ADS-B/Mode S   │
                              └─────────────────┬───────────────────────┘
                                                │
                    ┌───────────────────────────┼───────────────────────────┐
                    │                           │                           │
                    ▼                           ▼                           ▼
          ┌─────────────────┐         ┌─────────────────┐         ┌─────────────────┐
          │   RTL-SDR V4    │         │  NESDR SMArt v5 │         │  (Future)       │
          │   + Dipole      │         │  + 1090MHz Ant  │         │  FlightFeeder?  │
          │   (indoor)      │         │  (rooftop)      │         │                 │
          └────────┬────────┘         └────────┬────────┘         └─────────────────┘
                   │                           │
                   ▼                           ▼
          ┌─────────────────┐         ┌─────────────────┐
          │    dump1090     │         │dump1090-mutabil │
          │   hydra:30003   │         │    pi:30003     │
          └────────┬────────┘         └────────┬────────┘
                   │                           │
                   │    SBS1 Protocol          │
                   │    (BaseStation)          │
                   └───────────┬───────────────┘
                               │
                               ▼
                   ┌───────────────────────┐
                   │   adsb-processor      │
                   │      v1.4.0           │
                   │                       │
                   │ • Multi-receiver      │
                   │ • Deduplication       │
                   │ • Callsign tracking   │
                   │ • OpenSky enrichment  │
                   └───────────┬───────────┘
                               │
              ┌────────────────┼────────────────┐
              │                │                │
              ▼                ▼                ▼
    ┌─────────────────┐ ┌─────────────┐ ┌─────────────────┐
    │   SQLite DB     │ │ sbs-logger  │ │  adsb-server    │
    │  /mnt/usb/adsb/ │ │  (CSV raw)  │ │    :8081        │
    │                 │ │             │ │                 │
    │ • aircraft      │ │ • Timestam- │ │ • /data.json    │
    │ • metadata      │ │   ped logs  │ │ • /aircraft-    │
    │ • callsign_hist │ │ • Receiver  │ │   metadata/:id  │
    │ • positions     │ │   attrib    │ │ • /opensky-     │
    └─────────────────┘ └─────────────┘ │   bincraft      │
                                        └────────┬────────┘
                                                 │
                          ┌──────────────────────┼──────────────────────┐
                          │                      │                      │
                          ▼                      ▼                      ▼
                ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
                │  adsb-tracker   │    │   WebSocket     │    │    External     │
                │     (Web UI)    │    │     :8083       │    │    Feeds        │
                │                 │    │                 │    │                 │
                │ • Leaflet map   │    │ • Real-time     │    │ • FlightAware   │
                │ • Aircraft list │    │   updates       │    │   (via pi)      │
                │ • Selection     │    │ • Push notif    │    │ • OpenSky       │
                │ • Enrichment    │    │                 │    │   (API)         │
                └─────────────────┘    └─────────────────┘    └─────────────────┘

Data Flow

Inbound (Reception)

  1. Aircraft transmit on 1090 MHz
  2. SDR dongles receive RF signals
  3. dump1090 decodes to SBS1 format
  4. adsb-processor aggregates multiple sources

Processing

  1. Deduplicate messages from multiple receivers
  2. Track aircraft state (position, altitude, speed)
  3. Maintain callsign history for swap detection
  4. Enrich with OpenSky metadata

Storage

Store Purpose Retention
SQLite (aircraft) Current state Permanent
SQLite (metadata) Aircraft info Permanent (cached)
SQLite (positions) Track history 7 days
CSV logs Raw messages 180 days

Outbound (Display/Feed)

  • Web UI for local visualization
  • WebSocket for real-time updates
  • PiAware feeding to FlightAware

Network Topology

                    Internet
                        │
                        ▼
              ┌─────────────────┐
              │   Tailscale     │
              │   (VPN mesh)    │
              └────────┬────────┘
                       │
         ┌─────────────┼─────────────┐
         │             │             │
         ▼             ▼             ▼
    ┌─────────┐   ┌─────────┐   ┌─────────┐
    │  hydra  │   │   pi    │   │ laptop  │
    │ .86.30  │   │ .86.101 │   │ (remote)│
    └─────────┘   └─────────┘   └─────────┘
         │             │
         │  LAN        │
         └──────┬──────┘
                │
         ┌──────────────┐
         │    Router    │
         │  192.168.86.1│
         └──────────────┘

Port Allocation

Port Service Protocol
30003 dump1090 SBS1 TCP
8080 dump1090 HTTP HTTP
8081 adsb-server HTTP
8083 adsb-websocket WS

Author: Jason Walsh

jwalsh@nexus

Last Updated: 2025-12-28 18:00:21

build: 2026-04-17 18:35 | sha: 792b203