BETA
VERSION 2.0 COMMING SOON
Track live aircraft around you using your Android phone and a cheap USB RTL-SDR dongle — no subscription, no cloud service, 100% on-device ADS-B decoding.
What is Dump1090?
Dump1090 for Android is a real-time ADS-B (Automatic Dependent Surveillance–Broadcast) receiver and visualiser. Aircraft continuously broadcast their position, altitude, speed, heading, and identity on 1090 MHz. With an inexpensive RTL-SDR USB dongle plugged into your phone via an OTG cable, Dump1090 decodes those signals and shows every aircraft in range on a live Google Maps view and a scrollable aircraft list.
The app is built around the open-source FlightAware dump1090 decoder (GPLv2), wrapped in a modern Android Compose UI. All decoding happens entirely on your device — no internet connection is required to receive aircraft.
Highlights
- 🛩️ Real-time ADS-B decoding at up to 1 Hz refresh
- 🗺️ Live Google Maps view with type-specific aircraft markers
- 📋 Scrollable aircraft list with expandable detail cards
- 📸 Aircraft photos via Planespotters.net
- 📡 Export to Beast / AVR / BaseStation TCP servers and online feeders
- 📁 File export in BaseStation format
- 🌍 ICAO → country mapping with flag emoji (fully offline)
- 📐 Metric and Imperial units
- 📱 Works on phones and tablets (2-column layout on wide screens)
- 🔋 Battery optimisation guide built-in
What You Need
Before you can receive aircraft you need a small amount of hardware and one extra app:
Hardware
- RTL-SDR USB dongle — any dongle based on the RTL2832U chipset works. For best frequency stability look for a “0.5 PPM TCXO” dongle (search “RTL-SDR Blog V4” or “RTL-SDR 0.5 PPM”). Budget dongles work too, but may need a larger PPM correction value.
- OTG cable / adapter — connects the dongle to your phone’s USB or USB-C port. Many phones need a USB-C → USB-A OTG adapter. Some Android phones can also power a dongle directly from the OTG port.
- 1090 MHz antenna (strongly recommended) — a simple quarter-wave monopole or a dedicated ADS-B antenna dramatically increases range. Many RTL-SDR Blog dongles come with a suitable antenna.
Software
- rtl_tcp_andro (RTL-SDR Driver) — a free Android app that communicates with the RTL-SDR dongle over a local TCP socket. Dump1090 connects to this driver to receive raw IQ samples. Install it from Google Play before starting Dump1090.
- Dump1090 (this app) — requires Android 6.0 (Marshmallow) or newer.
Optional
- GPS / Location permission — enables distance-to-aircraft display and centres the map on your position.
- Internet connection — used for aircraft photo lookup (Planespotters.net), registration details (ebctech API / joshdouch.me), and online feeding. Receiving and decoding aircraft works completely offline.
First Start — Quick Setup
- Plug your RTL-SDR dongle into your phone via the OTG cable/adapter.
- Open rtl_tcp_andro and tap Start. Grant the USB permission when prompted. The driver starts a local TCP server on port 1234.
- Open Dump1090 and tap the pink ▶ Play (FAB) button. Grant location permission if requested.
- Aircraft should appear on the map and in the list within a few seconds. Typical range is 100–300 km depending on your antenna and environment.
💡 Keep rtl_tcp_andro running in the foreground (or whitelisted — see Battery Optimization) while using Dump1090.
Aircraft List Screen
The Aircraft List tab shows every aircraft currently being decoded, sorted by last message received. Tap any card to expand it and see the full detail view including a live aircraft photo.
Status Bar
At the top of the screen a compact status bar gives you a quick view of what the app is currently doing:
| Indicator | Meaning |
|---|---|
| RCV | The RTL-SDR driver is actively sending raw data — you are receiving IQ samples from the dongle. |
| TCP | The internal TCP receiver thread is running and passing data to the decoder. |
| INT | The ADS-B processing (decoder) background thread is running. |
| Export | At least one export channel (TCP server, TCP client, or file) is actively sending data. |
Each indicator is a coloured dot: green = active, grey = inactive. The CLEAR button on the right removes all aircraft from the list and map.
Aircraft Card — Header (Collapsed)
Each row in the list is an OutlinedCard. The header is always visible:
- Avatar icon — a circular icon with a plane symbol. Blue = airborne with GPS position; grey = on ground or no position data.
- Country flag emoji — derived from the ICAO hex address. Identifies the registration country entirely offline.
- Callsign / Flight number — shown in bold primary colour. A dash (—) is shown when no identity is broadcast.
- ICAO hex code — the 24-bit aircraft address in monospace font (e.g.
3C6544). - Squawk pill — the transponder squawk code displayed as a coloured badge. Emergency squawks (7500 hijack, 7600 radio failure, 7700 emergency) are highlighted in a warning colour.
- GND pill — a teal badge shown when the aircraft reports it is on the ground.
- Distance chip — distance from your device to the aircraft in nautical miles (NM), shown only when you have a GPS fix and the aircraft is broadcasting a position.
- Altitude with V/S arrow — altitude in feet. An ↑ arrow indicates climbing, ↓ descending. Aircraft within ±150 fpm of level flight show no arrow.
- Speed and Heading — ground speed in knots and true heading in degrees (e.g.
432 kt · 275°). - Signal strength bars — 1 to 4 bars based on the average ADS-B signal level. Useful for antenna positioning.
- Last-seen timer — how many seconds ago the last message was received (e.g.
3s). - Chevron ▾ — animates to ▴ when the card is expanded.
Aircraft Card — Expanded Detail
Tap a card to expand it. The expanded body slides in with an animation and shows:
- Aircraft photo — a thumbnail fetched from Planespotters.net the first time you expand the card. Tapping the photo opens the full Planespotters page in your browser.
- Photo attribution — shows “planespotters.net / Photographer Name” as an underlined, tappable credit link.
- ALT / VEL / V/S data cells — altitude (ft), ground speed (kt), and vertical speed (ft/min). The V/S value is colour-coded: blue for climb, red for descent, grey for level.
- Latitude / Longitude pills — GPS coordinates formatted to 4 decimal places (e.g.
48.3560° N/11.7860° E). “Position unavailable” is shown if the aircraft has not broadcast a position. - Heading indicator — a rotating aircraft icon that shows the current true heading, with the numeric value alongside.
- Message count — total number of ADS-B messages received from this aircraft since the last CLEAR.
Tablet Layout
On tablets and wide screens in landscape orientation the list automatically switches to a 2-column grid, showing more aircraft at once without scrolling.
Map Screen
The Map tab shows a full-screen Google Maps view with a live aircraft layer on top. The map stays loaded even when you switch to the Aircraft List tab, so there is no reload delay when you switch back.
Aircraft Markers
Each aircraft is shown as a coloured icon that rotates with the aircraft’s heading. The icon type reflects the aircraft category — airliners, helicopters, general aviation, military, and more each have a distinct shape. The selected aircraft is highlighted. Tapping a marker opens the Aircraft Detail Panel.
Brightness Control
A semi-transparent overlay dims the map background. This is adjusted in Map Settings → Brightness. Useful at night or in bright sunlight to improve marker visibility.
Range Circles
When enabled, 10 concentric circles are drawn around your GPS position at 20 NM intervals (20, 40, 60 … 200 NM). They give a quick visual reference for reception range. Toggle in Map Settings → Range Circle.
Statistics Overlay
A small panel in the top-left corner displays:
- Aircraft count — current visible count and session maximum (e.g.
12(47)). - Max range — current and session-maximum distance to the furthest aircraft (in NM or km depending on your units setting).
- Reset button — clears the session maximums without stopping the receiver.
Enable in General Settings → Show Statistics.
Map Menu Buttons (top-right)
- Map Settings — opens the Map Settings bottom sheet (brightness, range circle, map style).
- General Settings — opens the General Settings bottom sheet (units, statistics).
- Home Location — animates the camera to your current GPS position. Appears only when location permission has been granted.
Map Styles
Two map styles are available, selectable in Map Settings:
- Design — a custom aviation-optimised style that de-emphasises road labels and highlights terrain, making aircraft markers easier to spot.
- Classic — standard Google Maps style.
Aircraft Detail Panel
Tapping any aircraft marker opens the detail panel. On phones it appears as a swipeable bottom sheet anchored to the bottom-left of the map. On tablets in landscape it slides in as a panel from the left edge, keeping the map fully visible.
The panel shows:
- Large country flag, callsign, and ICAO hex code in the header.
- Aircraft photo (full 200 dp height) fetched from Planespotters.net. Tapping opens the original page. A placeholder is shown while loading or when no photo is found.
- A 4 × 2 data grid (label + value pairs with icons):
- ALT — altitude in feet (or metres)
- SPEED — ground speed in knots (or km/h)
- HDG — true heading in degrees
- DIST — distance from your device
- SQUAWK — transponder code
- TYPE — aircraft type/model
- MANUF — manufacturer
- OWNER — registered owner / operator
- A close button (✕) in the header deselects the aircraft and hides the panel.
Aircraft type, manufacturer, and owner data are fetched from an online aircraft registration database (ebctech API + joshdouch.me) and cached for 60–120 seconds per aircraft to reduce API calls.
Export Features
Dump1090 can forward decoded ADS-B data to other apps, devices, or online feeders in real time. All export workers run in the background foreground service — you can lock your screen and data continues flowing. Configure everything in Settings → Export.
TCP Servers — Let Other Devices Connect to You
Your phone acts as a server; other apps or devices on your local network connect to it to receive the data stream.
| Format | Description | Typical Use |
|---|---|---|
| Beast Binary | FlightAware Beast binary frame format, including MLAT timestamps. | VirtualRadarServer, Mode-S Beast clients, dump1090 relay. |
| AVR Hex | Simple ASCII hex frame format (e.g.
*8D3C6544...). | SkyView, legacy SDR tools, custom scripts. |
| BaseStation / SBS-1 | CSV text format originally used by Kinetic Avionics BaseStation software. | PlanePlotter, VirtualRadarServer, ADSBScope. |
Connect to your phone’s local IP address on the respective port from any app on the same Wi-Fi network.
TCP Client — Feed an Online Aggregator
Your phone connects out to a remote server and streams your data to it. This is how you feed services like ADSBHub, FlightRadar24‘s custom feeder port, or your own server.
- Hostname — the remote server address (default:
feed.adsbhub.org). - Port — the server port (default:
5001). - Format — choose Beast, AVR, or BaseStation to match what the receiving server expects.
The client automatically reconnects if the connection drops and sends periodic heartbeat messages to keep the connection alive.
File Export
Write decoded messages to a local file in BaseStation (SBS-1) CSV format.
- File Export (on/off toggle) — enables writing to a file in the app’s external storage directory.
- Reduce Data (on/off, default on) — writes only position messages (MSG,3) to keep file size manageable during long sessions. Disable to record all message types.
💡 When any export is enabled on Android 13+ the app requests notification permission so the foreground service notification is visible as required by Android.
Battery Optimization
Starting with Android 6 (Marshmallow), and especially on devices from certain manufacturers (Samsung, Huawei, Xiaomi, OnePlus …), the OS aggressively kills background apps to save battery. This is a problem when Dump1090 is exporting data or you want to keep receiving in the background.
The app has a built-in Battery Optimisation dialog (accessible from the overflow menu) that shows the current whitelist status and provides a one-tap shortcut to the system battery settings.
How to Whitelist
- Open the Dump1090 overflow menu (three dots) → Info: Export.
- Tap WHITELIST. Your device’s battery optimisation screen opens.
- Select Dump1090 → Battery → Unrestricted (or “Not optimised” depending on your Android version).
- Repeat for rtl_tcp_andro (RTL-SDR Driver).
The status indicator in the dialog turns green when both apps are whitelisted.
For device-specific instructions visit dontkillmyapp.com — it covers Samsung, Huawei, Xiaomi, OnePlus, and many others.
Tip: If export works fine while the screen is on but stops when the screen turns off, battery optimisation is almost certainly the cause.
Settings Reference
Open the full settings screen via the overflow menu (⋮) → Settings. There are three sub-screens: Device, Dongle, and Export. Two quick-access setting sheets are also available directly on the map screen.
Device Settings
| Setting | Default | Description |
|---|---|---|
| Keep Screen On | On | Prevents the screen from timing out while the app is open. Useful when Dump1090 is mounted as a permanent display (e.g. on a Pi-like setup or a dedicated tablet). |
| Override Device Location | Off | Replaces your real GPS position with fixed mock coordinates. Useful for fixed installations (no GPS signal indoors) or for testing from a known location. |
| Mock Latitude | 0.0 | Latitude in decimal degrees for the mock position. Active only when Override is on. |
| Mock Longitude | 0.0 | Longitude in decimal degrees for the mock position. Active only when Override is on. |
Dongle Settings (RTL-SDR)
| Setting | Default | Description |
|---|---|---|
| PPM Offset | 0 | Frequency correction for oscillator drift. Every RTL-SDR chip has a small frequency error. Enter the PPM correction value for your dongle (range: −300 to +300). Budget dongles may need 20–50 PPM; high-quality TCXO dongles typically need 0 or 1. |
| Tuner Gain | Auto (−100) | Controls the tuner amplifier. −100 = automatic gain control (AGC). For manual gain select a specific dB value from the list. Higher gain is not always better — too much gain causes overload in urban areas. Start with Auto. |
| Bias-T Power | Off | Applies 4.5 V DC on the SMA antenna connector to power an active antenna or LNA (Low Noise Amplifier). Only supported on RTL-SDR Blog V3 and V4 dongles. Leave off for passive antennas — enabling it on incompatible hardware can damage the dongle. |
Export Settings
TCP Servers
| Setting | Default | Description |
|---|---|---|
| Beast TCP Server | Off | Starts a local TCP server broadcasting data in Beast binary format. |
| AVR TCP Server | Off | Starts a local TCP server broadcasting data in AVR hex format. |
| BaseStation TCP Server | Off | Starts a local TCP server broadcasting data in SBS-1 CSV format. |
TCP Client
| Setting | Default | Description |
|---|---|---|
| TCP Client | Off | Enables outbound connection to a remote feeder server. |
| Hostname | www.yourfeederservice.com | Remote server hostname or IP address. |
| Port | 5001 | Remote server port (ADSBHub default is 5001). |
| Format | Beast | Output format for the client stream: Beast, AVR, or BaseStation. |
File Export
| Setting | Default | Description |
|---|---|---|
| File Export | Off | Writes decoded messages to a local file in BaseStation CSV format. |
| Reduce Data | On | Saves only position messages (MSG,3) to keep the file size small. Disable to record all decoded message types. |
Map Settings (in-app bottom sheet)
| Setting | Description |
|---|---|
| Brightness | Slider (0–100). Overlays a semi-transparent black layer on the map. A lower value darkens the map, making markers easier to see at night. |
| Range Circle | Toggle. Shows 10 concentric rings around your position at 20 NM intervals. |
| Map Style | Segmented choice: Design (custom aviation style) or Classic (standard Google Maps). |
General Settings (in-app bottom sheet)
| Setting | Description |
|---|---|
| Units | Toggle between Imperial (feet, knots, nautical miles) and Metric (metres, km/h, kilometres). Affects all displayed values on the map and in detail panels. |
| Show Statistics | Toggle. Shows/hides the aircraft count + max range overlay in the top-left corner of the map. |
Frequently Asked Questions
The app shows no aircraft. What’s wrong?
Check the RCV indicator in the status bar. If it is grey, the dongle is not sending data. Make sure rtl_tcp_andro is running and the dongle is properly connected. Try unplugging and re-plugging the OTG cable, then restart both apps. If RCV is green but no aircraft appear, your antenna may have a poor view of the sky — try moving to a window or outside.
rtl_tcp_andro keeps stopping in the background
This is the battery optimisation problem described above. Whitelist both Dump1090 and rtl_tcp_andro in your device’s battery settings. See the Battery Optimization section above and dontkillmyapp.com for device-specific guides.
What do the coloured squawk pills mean?
The standard emergency squawk codes are: 7500 = aircraft hijacking, 7600 = radio failure, 7700 = general emergency. These are highlighted in a warning/error colour so they stand out in the list. The code 1200 is used for VFR flight in the US. All other codes are shown in the neutral secondary colour.
Can I use Dump1090 without an RTL-SDR dongle?
No. The app requires an RTL-SDR receiver to decode live ADS-B signals. There is no built-in demo or replay mode.
What range can I expect?
With a basic whip antenna indoors you might see aircraft within 50–100 km. A dedicated 1090 MHz antenna on a clear rooftop can achieve 200–400 km or more. Range is primarily limited by line-of-sight: higher is always better. The PPM and gain settings also affect performance — a correctly set PPM and a modest manual gain value can significantly increase the number of decoded messages.
Does the app work on tablets?
Yes. Tablets in landscape orientation get an enhanced layout: the Aircraft List switches to a 2-column grid, and the aircraft detail panel slides in from the left side of the map instead of appearing as a bottom sheet. Any tablet running Android 6.0+ is supported.
How do I feed ADSBHub?
- Register a free account on adsbhub.org and note your feeder IP/port.
- In Dump1090: Settings → Export → Enable TCP Client.
- Set Hostname =
feed.adsbhub.org, Port =5001, Format = Beast. - Start the receiver. Your data will appear on the ADSBHub map within a few minutes.
Bias-T doesn’t seem to work
Bias-T is only supported on RTL-SDR Blog V3 and V4 dongles. It will not work on generic RTL2832U sticks. Enabling it on an incompatible dongle has no effect. If you have a V3/V4 and it still does not power your LNA, check that the LNA’s operating voltage is 4.5 V and that no bias-T blocking capacitor is in the coax.
What is the difference between the two map styles?
The Design style is a custom aviation-themed map that reduces the visual noise of road labels and commercial points of interest, making aircraft markers easier to spot. The Classic style is the standard Google Maps appearance. Both support the brightness adjustment.
Does the app require an internet connection?
No — receiving, decoding, and displaying aircraft works entirely offline. Internet is used only for optional features: aircraft photo lookup (Planespotters.net), registration data (type, manufacturer, owner), and TCP client export to online feeders.
Legal Notes
Open-Source Components
The ADS-B decoding core is derived from dump1090 by FlightAware, released under the GNU General Public License v2. As required by the GPL, the corresponding source code is publicly available at:
🔗 github.com/ebc81/dump1090andro-gpl-sources
The remainder of the app (Android UI, export system, service layer, online API integrations) is proprietary software © ebctech.
Third-Party Services
- Planespotters.net — aircraft photos are fetched via the Planespotters.net API. Photo credits and links to the original photographer pages are displayed in-app as required by the Planespotters.net terms of use.
- Google Maps Platform — map imagery and geocoding are provided by Google Maps. Use is subject to the Google Maps Platform Terms of Service.
- Google Play Billing — premium features are available as an optional in-app purchase via Google Play Billing.
Privacy
The app does not collect or share personal data. Location is used only on-device for distance calculations and map centering. No analytics or advertising SDKs are included. See the full privacy policy in-app (⋮ → Legal → Privacy Policy).
Ready to track aircraft?
Download Dump1090 for free on Google Play and start receiving live ADS-B traffic in minutes.