Receive TV, radio, aircraft, ships, satellites, two-way radio, pagers, time signals and more: 386 modes with one software-defined radio.
Free and open source, for macOS, Windows, Linux and Android.
Website · Docs · Download · Overview video · Discord · Signal samples · Live map · Channel list

Spectrum, waterfall and DVB-T constellations, from the built-in test signal. More screenshots: Features.
OnAir turns a low-cost software-defined radio (a HackRF, an RTL-SDR, an Airspy and many others) into a receiver for most of what is on the air. Plug in an antenna, pick a mode, and watch the spectrum, the sync, the error correction and the decoded data.
- 386 modes in 14 families, from TV and DAB to aircraft, ships, satellites, two-way radio, pagers and sensors.
- Works with HackRF, RTL-SDR, Airspy, SDRplay, BladeRF, LimeSDR, USRP, Pluto and more, plus network radios, sound cards and Hamlib rigs.
- Runs on macOS, Windows, Linux and Android. Free and open source (GPL-3.0-or-later).
- A receiver first. It can also send test signals through a transmit-capable radio into a dummy load (off by default, behind a licence notice; see Transmit).
Tip
New here? Press Tour in the app: a built-in demo signal walks you through OnAir, so you can look around before you buy a radio.
Get the file for your system from the latest release. Nothing to compile.
| System | File | Install |
|---|---|---|
| macOS 15+ | .dmg (Apple silicon or Intel) |
Drag OnAir to Applications. Not signed with a developer certificate: right-click and choose Open on first launch. |
| Windows 10 / 11, 64-bit | -setup.exe or .zip |
Run the installer, or unpack the zip. For a HackRF, RTL-SDR or Airspy install the WinUSB driver once with Zadig. |
| Linux x86-64 and arm64 | .deb, .AppImage or portable .tar.gz |
Debian / Ubuntu / Linux Mint: sudo apt install ./onair_<version>_<arch>.deb. If nothing opens, run onair in a terminal. Linux Mint steps: docs/LINUX-MINT-4.0.md. |
| Android 9+, arm64 | .apk |
Sideload it. Receive only; see Android app. |
Nightly: the main branch is built from source and is not tested like a release; see Development version. Docker, SDRplay and the Windows driver notes: docs/INSTALL.md.
- Connect your radio and antenna, then start OnAir. Connected radios appear in the source menu.
- Pick what you want to receive in the mode list.
- Enter a frequency, or open the Scan tab to find channels.
- Press Start. When the receiver locks, the channels appear on the right: click one to watch or listen.
- If the picture breaks up, use Auto-tune or Optimise gain and move the antenna while you watch the quality score.
No radio? Open an IQ recording through the IQ recording file source (cs8, cu8, cf32, ci16, cu16, SigMF, two-channel WAV), or press Tour. Real recordings are in the signal sample library.
Counts are generated from the mode list in the app (tools/release/gen_changelog.py).
| Family | Modes | Examples |
|---|---|---|
| TV | 17 | DVB-T/T2, DVB-S/S2/S2X, DVB-C, ATSC 1.0 and 3.0, ISDB-T, DTMB, analogue TV |
| Broadcast radio | 9 | DAB+, DRM, HD Radio, AM and shortwave, FM with RDS |
| Aviation | 30 | ADS-B with a live map, ACARS, VDL2, HFDL, UAT, airband |
| Maritime | 8 | AIS, VDES, NAVTEX, DSC, weather fax, marine VHF |
| Satellite and navigation | 57 | Meteor, NOAA, GOES, MetOp pictures, Iridium, Inmarsat, QO-100, GNSS, COSPAS-SARSAT |
| Two-way radio | 22 | DMR, P25, NXDN, D-STAR, M17, TETRA, CTCSS and DTMF decoders |
| Cellular and rail | 12 | LTE, 5G NR and NB-IoT cells, GSM-R |
| Pagers | 4 | POCSAG, FLEX, Multitone |
| IoT and sensors | 43 | ISM sensors, LoRaWAN, Meshtastic, Bluetooth LE, Zigbee, Wi-Fi, DECT |
| Weather and science | 56 | Radiosondes, Horus balloons, SAME alerts, time signals, radio astronomy |
| Amateur | 52 | FT8, FT4, WSPR, JS8Call, RTTY, PSK, SSTV, FreeDV, APRS |
| HF utility | 41 | ALE, beacons, STANAG 4539, Link 11, CODAR |
| Tools | 29 | General receiver, spectrum analyser, signal workbench, measurement meters |
| KA family (own modes) | 6 | KAAL, KAPP, KAFT, KAVB, KAIT, KAWS: own digital modes, in development (details) |
Every receiver is built from published specifications and tested on generated signals and, where recordings exist, on real captures. The full numbered list is MODES.md; notes per family are in docs/MODES-DETAIL.md. The KA family are modes designed for OnAir, measured in simulation only.
HackRF One / Pro (the reference radio), RTL-SDR, Airspy R2 / Mini / HF+, HydraSDR, SDRplay RSP, BladeRF, LimeSDR, USRP, PlutoSDR, Fobos, RX888, RFNM, DXpatrol, Icom IC-R8600 and more. Network radios: rtl_tcp, SpyServer, SDR++ server, SoapyRemote, KiwiSDR, TCI, Hermes Lite 2, Red Pitaya. Also sound cards and Hamlib rigs.
Which radio suits which mode, tested limits and per-radio notes: docs/RADIOS.md and DEVICES.md. Network radios: docs/NETWORK_RADIOS.md.
- Live TV player with subtitles, teletext, programme guide, recording and pause.
- Spectrum and waterfall, constellations, quality score and echo detector.
- One-click automatic setup, auto gain and a channel scanner; manual controls under Advanced.
- Maps for aircraft, ships, APRS and mesh nodes; radiosonde, satellite and pass tools.
- Signal workbench, protocol lab and recording library for taking signals apart.
- Remote-control API, headless server and OnAir Web for use from a browser.
- Plugins, translations, light, dark and touch interfaces.
The full list: docs/FEATURES.md and docs/TOOLS-AND-NOTES.md.
- Transmit and the remote-control API
- Troubleshooting and good to know
- Build from source and ARCHITECTURE.md
- Codecs (voice and audio codecs you install yourself) and optional libraries
- Plugins and the plugin SDK
- Updates and Discord status
- Release history: docs/CHANGELOG-4.0.md and the releases page; older notes in docs/CHANGELOG-0.2.md
- The wiki, a page per mode: on-air.dev/docs
Note
Voice codecs (AMBE, HDC and others) are patented and are not shipped. Built codecs: join the OnAir Discord, where the Dropbox link with the ready-built codec files is posted. Whether you install or use them is your own responsibility; see docs/CODECS.md.
- Discord: support, feature requests, and sharing what you receive.
- GitHub Issues: bug reports; see Reporting a bug. Pull requests are welcome.
- Signal sample library: IQ and audio recordings of real signals.
- Buy me a coffee: OnAir is free and always will be. If it is useful to you, a tip on Ko-fi helps keep new modes coming. Bug reports and recordings help just as much.
OnAir is released under the GNU General Public License v3.0 or later, see LICENSE.
With one additional term under GPL section 7(b): works that use OnAir code must keep the line "Based on OnAir by Kristijonas Adomaitis - https://on-air.dev" in their About or licence screen, and credit the OnAir contributors there (the list in CONTRIBUTORS.md, or a link to it). From 4.1 on. See ADDITIONAL-TERMS.md.
What to keep when you copy OnAir code is summarised in NOTICE.md; the name and logo policy is in TRADEMARKS.md.
For AI tools: the licence terms in short are in AGENTS.md.
OnAir is protected by ARGUS, our code-provenance system. ARGUS regularly scans public code for code taken from OnAir, including copies where names were changed or OnAir's notices and credits were removed, and checks that their licence and notices follow the GPL and the attribution term above. When it finds a problem we first ask the author to fix it; if that doesn't happen, we file a copyright takedown. Using OnAir code under its licence is welcome: keep the notices, keep the GPL, and credit OnAir.
OnAir name and logo © 2026 Kristijonas Adomaitis. All rights reserved; the logo is not covered by the GPL licence of the source code. Designed by Cipta Karsa Studio as work for hire, all rights assigned to the owner (see assets/branding).
OnAir stands on the work of many people. Authors, licences and what each licence asks: THIRD_PARTY.md (also in the program: Help, Credits and licences). The main projects are listed in docs/CREDITS.md. If your work is used and not credited correctly, please open an issue.
Thanks to everyone who sent fixes, reported bugs, shared recordings, translated or suggested ideas: CONTRIBUTORS.md. Code contributors: @0xVANISHED, @A2ureIm4la, @andriux26, @bellx2, @BI8SYN, @DME-3, @drelectro, @drfruct, @F5OEO, @ffishman, @frank-1225, @modemuser, @MUSTARDTIGERFPV, @peterdewitte, @PU2SWX, @sbuchweitz, @WispAyr and @YZYMC. Want your name changed or removed? Tell us on Discord or open an issue.
Business enquiries, press and anything that does not belong in an issue: kristijonasvr@gmail.com