An ESP32 based plane radar for my desk
✈️ Desktop Aviation Radar via ESP32
By Alex Kretzschmar | July 25, 2026
After a hectic week presenting at Devrelcon in NYC, I spent a relaxing Saturday winding down with a hands-on hardware project.

🛠️ The Project Overview
The goal was to create a live aircraft tracker for my desk. Using an ESP32-C3 and a small 1.28-inch circular screen, I built a sonar-style radar that monitors local air traffic.
Technical Foundation
The project is powered by the ESP32-Plane-Radar open-source firmware developed by ironicbadger.
Project Essence: It captures ADS-B signals, calculates the aircraft's position relative to the user, and renders the data on a round display.
System Architecture
🏗️ Assembly & Hardware
The build was straightforward, though it did involve some soldering—a process I find nostalgic as it brings back memories of my racing drone days.
| Component | Specification |
|---|---|
| Microcontroller | ESP32-C3 |
| Display | 1.28" Round LCD |
| Data Source | Live ADS-B Traffic |
| Flashing Tool | ESPHome Web Flasher |

Installing the firmware is incredibly simple now; I used the browser-based tool to flash the board without needing complex IDE setups.
📦 The 3D Printing Hurdle
I initially tried the featured model from MakerWorld, but it didn't quite work out.
Original Model (by matixovi): While it looked stunning in the renders, the actual tolerances were far too tight for the specific batch of boards I owned.

Instead, I pivoted to a more compatible version:
- Alternative Model: ESP32-S3 1.28" Waveshare Plane Radar by ThePrintableWatch.

💻 Software Enhancements
I spent the day refining my own fork of the firmware, guided mostly by "pure vibes." I wanted more data and better usability.
🚀 New Features
- Enhanced Flight Data:
- Now displays Origin and Destination (falling back to the callsign if unavailable).
- More precise aircraft identification (e.g.,
B737-800instead of justB737).
- Environmental Data: Added local time, date, temperature, and humidity.
- Improved Web UI:
- Coordinates can now be updated post-setup.
- Display settings (units, runway config, 12/24h time, temp format) can be toggled without wiping Wi-Fi credentials.
- Typography: Default text is 10% larger, with a slider allowing adjustments from .
- OTA Updates: Added authenticated Over-the-Air updates.
Update Workflow
Instead of plugging in a USB cable, I can now run:
# Conceptual OTA process
compile_binary(local_laptop)
--> upload_via_browser(wifi_connection)
--> update_esp32_firmware()

📅 What's Next?
- Design a custom, more forgiving 3D enclosure.
- Port the firmware to a larger display.
📖 Other Technical Reads
-
Blog Migration: After 11 years, I
used Ghostmoved to a static site built with Astro.
-
Hardware Refresh: Using ADB commands to make a decade-old Nvidia Shield feel modern again.

-
Virtualization: Using
serial=in QEMU and Proxmox to make virtual disks appear as authentic hardware toinxi -xD.