# The requirements file says the display is 1080 by 1080 and the README says 720 by 720

> yashmulgaonkar/FlightScnr_Pi turns a round Raspberry Pi touchscreen into a flight and marine radar with a browser portal for configuration. Its data sources degrade in documented steps, its two supported panels need different firmware, and its own dependency list disagrees with its hardware notes.

**yashmulgaonkar/FlightScnr_Pi** — Desktop flight and marine radar: a real-time aircraft and marine vessel tracker powered by a Raspberry Pi and 4" round screen.

- Repository: https://github.com/yashmulgaonkar/FlightScnr_Pi
- Stars: 615 · Forks: 46
- Language: Python
- License: NOASSERTION
- Published: 2026-09-17 · Updated: 2026-09-17 · Language: en
- Canonical page: https://hysenlabs.com/projects/yashmulgaonkar-flightscnr-pi

## The version tags sort in the wrong order as text

Releases are named with four numbers, a year, a month, a day and a patch. Two of the three recent tags were published on the same morning in October, less than an hour apart, and the month is not zero-padded consistently: one tag reads with a ten for October, the next one back reads with a bare nine for September. That combination is the problem. As strings, a nine sorts after a ten, so a naive comparison of the two newest tags puts the September release last, and any script that sorts or diffs these names as text will order the release history backwards. A plain VERSION file sits at the repository root as well, and the README names the current release in its own text, which is a third place the version has to be kept in step. Dates as version numbers are readable to a human and awkward for a machine.

## The dependency file and the hardware notes disagree on the resolution

Two supported panels are named, both round and both the same resolution, differing only in bezel while fitting the same housing. The README gives that resolution as 720 by 720 for each. The requirements file disagrees. Its comment above the display library reads that the round touch display is 1080 by 1080 for this interface. One of those two numbers is wrong, and nothing in the documentation says which. The hardware notes around it are more careful than the dependency comment. The newer panel needs a different firmware overlay or it stays black, with an issue number given for it, and on that panel the display power cable is described as mandatory, with an explicit instruction not to rely on the DSI power rail alone. So the panel swap is not cosmetic: a different overlay and a different power arrangement.

## No paid key is a documented downgrade rather than a failure

The environment file describes the degradation ladder before it describes anything else. A FlightRadar24 key is a paid subscription used for the live feed and for flight details, and without one the application still runs on a free cloud feed, keeping positions on the radar while losing routes, airline details and tracked flights. That free feed needs no local receiver or dongle at all, and a variable in the file is what switches that mode on. The key itself has a shape worth knowing: it is a subscription key and a token joined by a pipe character, and the file warns in bold that it is not the separate FlightRadar24 Explorer REST key, which is the mistake the format invites. Optional keys follow the same pattern, such as a schedule lookup used when a flight is not airborne yet.

## Configuration is environment-only, and systemd gets a copy in /etc

The first substantive comment in the environment file states the policy: all configuration lives there, the configuration module reads exclusively from environment variables, and no user-specific default is hardcoded in source. Setup is two commands:
```
cp .env.example .env
nano .env
```
For a systemd deployment the installer copies that file to a location under /etc. The policy has two consequences worth naming. A missing value is something you resolve in the file, because the code will not substitute one for you, which is clean for a device with a fixed configuration and unforgiving for a shared or scripted install. And because the file lives outside the checkout under systemd, an update that replaces application files has to leave it alone, which the separate install script appears to be arranged to do.

## The project says its primary marine feed is unreliable before you report it

Marine traffic is optional and comes from a WebSocket feed that the documentation describes as free and non-commercial. The same paragraph says the service is known to be unreliable, and that if its key is unset or the stream fails, positions fall back to a different marine source that requires no key at all. It goes further than most projects do and tells you to check the upstream status monitors before assuming a bug in the tracker. The non-commercial label on the primary feed is the detail with commercial weight: a business deployment can rely on the keyless fallback but not on the feed it was told to configure first. Aircraft photographs come from public photo sites, and vessel photographs from a public media repository, so neither needs a key of its own.

## Eleven basemaps, two free keys, and one layer marked not for navigation

The map layer list is longer than any other feature list in the documentation, with eleven basemap styles: three from one provider with a free key, a dark style from another, a solid-black flat style, two from a third provider with a free key, streets and satellite imagery from a fourth, the free aviation sectionals for the United States, and a nautical style built on depth data and seamarks. Three things stand out. Two providers need a key and two others do not, so the key burden scales with which basemap you pick. The aviation sectionals are the only free layer scoped to one country. And the nautical style is the single layer carrying a warning that it is not for navigation, a caution that appears nowhere else in the layer list even though the surrounding product is a moving-map display.

## A language is a folder you copy, and the loader checks it on the way in

Localization is documented as a contributor task with no code changes required. Each language is one directory holding a manifest with the locale code, native and English names, a catalog revision and authors, plus a messages file. The loader walks that directory at startup, so a new folder appears in the on-device and portal pickers by its own native name with nothing else to wire. What is interesting is the validation. Placeholders must match English, missing keys fall back to English per message, and unknown or unsafe packs are skipped rather than loaded, which means a half-finished or outdated translation degrades to English instead of breaking the interface. Six languages ship today, English is the safe default, and system language detection exists as an explicit choice that is never selected for you.

## The device updates itself from the portal, including while nobody is using it

Configuration happens in a browser portal rather than over a shell, and the portal also updates the software. The options are deliberately spread across a decision: update now, later tonight, an automatic install outside opening hours, a step that finishes an install once it has been staged, and a repair-and-update path for a device that has been interrupted. An unattended install option on a device that has to stay running is the interesting one, because there is no stated condition for when it is skipped. Alongside it sit smaller choices that shape day-to-day use: alert mode, screen facing, favorite locations reachable from a heads-up icon, scrollable pickers on the device itself, and a boot safety disclaimer. One gesture is also state-dependent: swiping right from the radar opens the tracked view only while a track is active.

## Conclusion

Suitable if you want a self-hosted display and can accept a free data tier, since the paid key buys routes, airline details and tracked flights rather than radar positions. Before wiring the panel, confirm which of the two supported displays you have, because the newer bezel needs different firmware or the screen stays black and its power cable is not optional. Read the environment file before first boot: configuration comes only from environment variables, so a missing key is a condition you resolve there rather than a default the code fills in.

## FAQ

### Does FlightScnr Pi need a paid FlightRadar24 subscription?

Not to run. Without an FR24 key the application runs on a free cloud feed that needs no local receiver, keeping radar positions but dropping routes, airline details and tracked flights. The key is a subscription key and token joined by a pipe character, and it is not the separate FlightRadar24 Explorer REST key.

### Which display does FlightScnr Pi need?

A 720 by 720 round panel: either the Waveshare 4inch DSI LCD (C) or the newer 4-DSI-TOUCH-C, which has a different bezel but fits the same housing. The newer panel needs a different firmware overlay or the screen stays black, and its display power cable is described as mandatory.

### Where does the marine vessel data come from in FlightScnr Pi?

Optionally from a WebSocket feed described as free and non-commercial, which the documentation calls known to be unreliable. If its key is unset or the stream fails, positions fall back to another marine source that needs no key, and the project suggests checking upstream status monitors before assuming a tracker bug.

### How do I add a new language to FlightScnr Pi?

Copy the en folder to a new locale tag under the locales directory, fill in the manifest names and authors, and translate the values in the messages file while leaving keys and placeholders unchanged. The loader discovers folders at startup and validates each pack on load, falling back to English for missing keys and skipping unsafe packs.

### How does FlightScnr Pi update its own software?

Through the web portal, with options to update immediately, later that night, or automatically outside opening hours, plus a step to finish an install and a repair-and-update path. Configuration lives in an environment file that the installer copies to a location under /etc for systemd deployments.

### Which basemap styles does FlightScnr Pi offer?

Eleven styles, including three from one provider and two from another that each need a free API key, a dark style, a solid-black flat style, streets and satellite imagery, free United States aviation sectionals, and a nautical style built on depth data and seamarks that is marked as not for navigation.

## Sources

- [Issues](https://github.com/yashmulgaonkar/FlightScnr_Pi/issues)
- [README](https://github.com/yashmulgaonkar/FlightScnr_Pi/blob/main/README.md)
- [Releases](https://github.com/yashmulgaonkar/FlightScnr_Pi/releases)
- [yashmulgaonkar/FlightScnr_Pi on GitHub](https://github.com/yashmulgaonkar/FlightScnr_Pi)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/yashmulgaonkar-flightscnr-pi
