ADS-B tracking on Raspberry Pi has a fragmented landscape, with multiple decoders and visualization tools competing for attention. tar1090 stands out by not replacing the decoder but layering a flexible web interface on top, making it a practical choice for those juggling multiple ADS-B data sources. Its approach to installation and configuration respects the underlying system, minimizing disruption.
what tar1090 does and how it fits into ADS-B setups
tar1090 is essentially a drop-in replacement for the web interface that comes with popular ADS-B decoders like readsb or dump1090-fa. It runs on Debian-based systems, primarily targeting Raspberry Pi hardware, which is the go-to platform for many ADS-B enthusiasts.
Instead of decoding ADS-B signals itself, tar1090 consumes the data feeds produced by existing decoders. It then presents this data with enhanced UI features: adjustable history tracking to see aircraft paths over time, multi-aircraft selection for focused monitoring, multiple map views including dark mode, and callsign labels to improve readability.
Architecturally, tar1090 consists of static HTML/JavaScript served via a lightweight HTTP server. It uses simple JavaScript configuration files for UI behavior and regex-based aircraft filtering. The backend is minimal, relying on systemd services configured by the install script to manage data snapshots and history files, which keeps resource use low on constrained devices.
The project supports running multiple instances simultaneously, each connected to different data sources like 1090MHz ADS-B, 978MHz UAT, or combined feeds. This multi-instance feature is configured through environment files for systemd and JavaScript for the UI, allowing flexible setups with multiple receivers.
technical strengths and tradeoffs
The most notable aspect of tar1090 is its architecture that layers a new web interface on top of existing decoders without replacing or modifying them. This means you can keep your current ADS-B decoder software intact and just add tar1090 for a better visualization experience.
This layering approach is clever because it avoids the pitfalls of tight integration or forks that could break with decoder updates. The install script sets up systemd services that handle data snapshots, so tar1090 can update aircraft positions and history smoothly without interfering with the decoder processes.
The codebase is primarily JavaScript with some shell scripting for installation and service management. The JavaScript code that drives the UI is surprisingly clean for a project of this nature, with a clear separation between configuration and logic. The use of regex for aircraft filtering is a practical choice, giving users powerful customization over what aircraft to display.
Tradeoffs include the limited documentation, as the maintainer prefers users to follow the commit log rather than extensive docs. This might slow adoption for newcomers or those wanting deep customization. Also, since tar1090 is a visualization layer only, it depends entirely on the underlying decoders for data quality and availability.
The project maintains compatibility with multiple data sources but does not offer decoding itself, which keeps its footprint light but limits it to users who already run decoders like readsb or dump1090-fa.
quick start with tar1090
Installation and updates are straightforward, handled by a single wget-piped bash script that configures everything including systemd services. Here are the commands exactly as documented:
sudo bash -c "$(wget -nv -O - https://github.com/wiedehopf/tar1090/raw/master/install.sh)"
Updating uses the same command, preserving existing configuration.
If you want to run tar1090 against a different data source folder (for example, /run/combine1090), the install script supports that too:
wget -nv -O /tmp/install.sh https://github.com/wiedehopf/tar1090/raw/master/install.sh
sudo bash /tmp/install.sh /run/combine1090
Uninstalling is just as simple:
sudo bash -c "$(wget -nv -O - https://github.com/wiedehopf/tar1090/raw/master/uninstall.sh)"
This ease of installation and removal aligns well with Raspberry Pi users who often experiment with different decoders and interfaces.
verdict
tar1090 provides a pragmatic solution for Raspberry Pi ADS-B enthusiasts who want a richer, more flexible web interface without disrupting their existing decoder setup. Its layered design, minimal resource footprint, and multi-instance support make it well suited for hobbyists running multiple receivers or looking for enhanced visualization features like history tracking and dark mode.
That said, the limited documentation means it’s best suited for users comfortable with Linux systemd services and manual configuration. Newcomers might face a learning curve, especially if they want to customize beyond the defaults.
Overall, tar1090 is a solid choice if you’re running readsb or dump1090-fa on a Raspberry Pi and want to upgrade your web interface without swapping out your entire decoder stack. It respects the ecosystem’s diversity and offers a clean, maintainable way to improve the user experience for ADS-B tracking.
Related Articles
- nh: a Rust-based unified CLI for the Nix ecosystem with enhanced search and ergonomics — nh is a Rust CLI tool consolidating Nix, NixOS, and Home Manager commands with improved ergonomics, speed, and Elasticse
- Navigating NixOS and Flakes with a community-driven beginner’s guide — A practical look at the “NixOS & Flakes Book,” an unofficial, community-driven guide demystifying NixOS and its experime
- Pydoll: Async-native Chromium automation with typed extraction for web scraping — Pydoll is a Python library for Chromium automation using Chrome DevTools Protocol. It offers async-native APIs and Pydan
- Crawlee: a TypeScript library for stealthy web scraping and browser automation — Crawlee is a TypeScript library for web scraping and browser automation with human-like stealth. Supports Playwright, Pu
- Managing dotfiles and system configs with Nix flakes in Mic92/dotfiles — Mic92/dotfiles uses Nix flakes to manage NixOS system configurations, dotfiles, and a standalone Neovim setup, enabling
→ GitHub Repo: wiedehopf/tar1090 ⭐ 1,774 · JavaScript