Real-time aircraft tracking on a 64×64 LED matrix display.
DeskRadar is a hardware and software system that polls live ADS-B data from a local dump1090 receiver and renders nearby aircraft tracks on a 64×64 RGB LED matrix. Altitude is mapped to color, historical trails fade over time, and the closest aircraft is highlighted and shown on a 16×2 LCD display. The entire system runs on a Raspberry Pi alongside a small CircuitPython device that drives the LED matrix.
Python application that polls ADS-B data, processes aircraft tracks through a multi-stage pipeline, and sends pixel draw commands to the matrix.
Language: Python 3.13
Runs on: Raspberry Pi (Linux)
Supporting services on the Pi: a FastAPI LCD display service, a Flask web configurator, and a boot-time mDNS resolver.
Language: Python
Managed by: systemd
CircuitPython firmware on an Adafruit MatrixPortal S3. Exposes an HTTP API and renders pixel commands to the physical 64×64 LED matrix.
Language: CircuitPython
Hardware: MatrixPortal S3 + HUB75 matrix
┌──────────────── Raspberry Pi ─────────────────────────────────────┐
│ │
│ ┌──────────────┐ ADS-B JSON ┌──────────────────────────┐ │
│ │ dump1090 │ ─────────────► │ deskradar (main app) │ │
│ │ :8080 │ │ polls every second │ │
│ └──────────────┘ └──────────┬───────────────┘ │
│ │ │
│ ┌────────────────────┐ pixel draw │ HTTP POST /draw │
│ │ deskradar- │ commands │ │
│ │ configurator │ ▼ │
│ │ Flask :5000 │ ┌───────────────────────────────────┐ │
│ └────────────────────┘ │ deskradar-matrixportals3 │ │
│ │ MatrixPortal S3 (ESP32-S3) │ │
│ ┌────────────────────┐ │ WiFi · HTTP :80 │ │
│ │ deskradar-lcd │ │ Renders to 64×64 LED matrix │ │
│ │ FastAPI :8010 │ └───────────────────────────────────┘ │
│ │ → I2C LCD display │ │
│ └────────────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────┘
/etc/deskradar/config.json — shared configuration file
deskradar-bootstrap — resolves deskradar-portal.local at boot,
writes MatrixPortal IP to config
:8080/data/aircraft.json.config.json fields