# Birdwatcher: live ADS-B globe on an RG35XX SP

A cyberdeck-style flight tracker for the Anbernic RG35XX SP handheld. It draws a rotating amber wireframe globe with live aircraft over WiFi, plus an offline database of about 620,000 callsign routes.

- Category: Code (experiment)
- Device: [Anbernic RG35XX SP](https://afterware.xyz/d/anbernic-rg35xx-sp)
- Made by: [upanihacks](https://github.com/upanihacks) on GitHub
- Original: https://github.com/upanihacks/birdwatcher
- On Afterware: https://afterware.xyz/p/birdwatcher-live-ads-b-globe-on-an-rg35xx-sp

## Can I build this?

- Difficulty: Beginner
- AI-buildability: 5/5 (The whole project is software on an off-the-shelf handheld, with no soldering or fabrication involved.)
- Parts: Anbernic RG35XX SP
- Tools: computer for building data files, SD card

Estimates based on the original write-up.

## Build sheet

- Device: Anbernic RG35XX SP
- Firmware: Stock, with Python 3 and SDL2
- Data: adsb.lol, airplanes.live
- Display: 640×480 native

## Starter prompt

```
Based on "Birdwatcher: live ADS-B globe on an RG35XX SP" on Afterware: https://afterware.xyz/p/birdwatcher-live-ads-b-globe-on-an-rg35xx-sp

Write a pure Python app for an Anbernic RG35XX SP running stock firmware that draws through the system libSDL2 using ctypes, without pygame. Poll the adsb.lol API every few seconds for aircraft within 250 NM of a centre point and draw them as dots over a rotating wireframe globe with a lat/lon grid. Map the d-pad to rotation and the A button to lock the nearest aircraft.
```

## Story

Birdwatcher runs on the stock firmware of an Anbernic RG35XX SP handheld. It is written in pure Python and draws through the system libSDL2 using ctypes, so pygame and SDL_ttf are not needed. Text is drawn from pre-rendered BMP font atlases. The globe is built from Natural Earth coastlines and borders, with a lat/lon grid, airports, a radar sweep and CRT scanlines at a native 640×480.

Live positions come from adsb.lol, with airplanes.live as a fallback. Aircraft are polled within 250 NM of the screen centre and move between polls by dead reckoning. A full-screen card shows origin and destination, distance flown and left, and an ETA. The routes come from Virtual Radar Server standing data and are bundled on the card, so most lookups need no network.

The filters cover military traffic, private and business jets, and emergency squawks (7700, 7600, 7500), which are polled worldwide. The README includes a button-mapping setup step, a diagnostics launcher for other 640×480 handhelds, and scripts that rebuild the map, route and font data.

## Resources

- [Repository](https://github.com/upanihacks/birdwatcher)
- [adsb.lol](https://adsb.lol/)
- [airplanes.live](https://airplanes.live/)
- [Virtual Radar Server standing data](https://github.com/vradarserver/standing-data)

Tags: adsb, flight tracker, rg35xx sp, handheld, sdl2, python, offline data, retro handheld

AI assistants can search all Afterware builds through the MCP server at https://afterware.xyz/mcp (setup: https://afterware.xyz/agents).
