Skip to content

Voice codecs

adswill edited this page Oct 17, 2026 · 2 revisions

OnAir does not ship patented codecs. You provide the ones you may use, and OnAir loads them.

Your responsibility. Whether you may install or use these codecs is up to you: follow the patent and radio-listening law where you live.

Every mode that needs a codec has a small ? button. It shows whether the library was found and where, the exact file names OnAir looks for, the folders it searches, an Open codecs folder button (it makes the folder if it is missing) and Look again (no restart needed).

Which mode needs which codec

Mode Codec Library
DMR, P25 Phase 1, NXDN, dPMR AMBE+2 / IMBE (patented) mbelib
D-STAR AMBE (patented) mbelib
FreeDV 700D / 700E / 1600, M17 codec2 (open, LGPL) codec2: comes with OnAir
FreeDV RADE RADE neural modem (open) optional librade, not codec2
TETRA its own speech codec nothing (not decoded)
DAB, DRM, TV, FM MP2, AAC, H.264 and others nothing: FFmpeg is inside OnAir
ATSC 3.0 Dolby AC-4 (patented) optional libavcodec and libavutil from an FFmpeg with an AC-4 decoder; without it the AC-4 sound is left out, picture and AAC / AC-3 sound still play
HD Radio HDC (patented) none: no sound; use nrsc5
CDR DRA+ (patent and licence status unclear) the DRA+ add-on (libonair_dra) that you build yourself; no sound until you do, the services and data work, and you can save the stream

codec2 does not help DMR, P25, NXDN or dPMR. If a digital-voice mode says "mbelib not found", you need mbelib.

DMR, P25, NXDN, dPMR and D-STAR voice is silent until you install mbelib yourself. From 0.2.6 OnAir does not include it, because the AMBE / IMBE vocoders are patented. Calls, IDs and data are shown without it. Put the library in the codecs folder (the ? next to the sound has an Open codecs folder button), then press Look again.

Where OnAir looks

  1. The DECT2_MBELIB_PATH / DECT2_CODEC2_PATH environment variable (a full path), if set.
  2. The OnAir codecs folders.
  3. The libraries that ship with OnAir: the program's own folder (Windows: next to OnAir.exe; Linux: next to dect2, ../lib/onair and ../lib; macOS: inside the app). A copy in a codecs folder wins over the shipped one.
  4. The system: Windows PATH; macOS /opt/homebrew/lib, /usr/local/lib, /opt/local/lib; Linux /usr/local/lib, /usr/lib, /usr/lib64.
Library Windows macOS Linux
mbelib mbelib.dll, libmbe.dll libmbe.dylib libmbe.so
codec2 codec2.dll, libcodec2.dll libcodec2.dylib libcodec2.so
OS Next to the program In your user folder
Windows codecs\ next to OnAir.exe %LOCALAPPDATA%\OnAir\codecs\
macOS codecs/ next to OnAir.app ~/Library/Application Support/OnAir/codecs/
Linux codecs/ next to dect2 ~/.local/share/onair/codecs/

Build mbelib yourself

mbelib decodes AMBE / IMBE, which are patented in some countries. Source: github.com/lwvmobile/mbelib. Check your local law first.

# Linux
sudo apt install git cmake build-essential
git clone https://github.com/lwvmobile/mbelib
cd mbelib && mkdir build && cd build
cmake .. && make && sudo make install && sudo ldconfig

On macOS the same with brew install cmake git, then copy libmbe*.dylib into ~/Library/Application Support/OnAir/codecs/. On Windows use MSYS2 (mingw-w64-x86_64-gcc, cmake, make), build with -DBUILD_SHARED_LIBS=ON and copy libmbe.dll (and libgcc_s_seh-1.dll, libwinpthread-1.dll if OnAir says it does not load) into %LOCALAPPDATA%\OnAir\codecs\. Then press Look again. The full walkthrough is in docs/CODECS.md.

Encrypted P25, NXDN and DMR calls are only reported as encrypted; OnAir never decrypts.

codec2 (FreeDV, M17)

codec2 is open (LGPL-2.1) and comes with OnAir as a separate shared library that is loaded at run time: FreeDV and M17 speech work after the download. Put your own build in the codecs folder, or set DECT2_CODEC2_PATH, to use it instead. If the ? says codec2 not found, the copy of OnAir is incomplete: unpack or install the whole package again.

Other audio you cannot hear

  • HD Radio (HDC): stations, data and pictures are shown; use nrsc5 for sound.
  • CDR (DRA+): services are listed; the sound needs the DRA+ add-on you build yourself (the CDR panel shows an amber ! notice with a How to install button until it is found). Save stream writes the raw audio to audio-streams/ for FFmpeg builds that have DRA.
  • DTMB in China (AVS+, AVS2, AVS3, DRA): OnAir plays what its built-in FFmpeg decodes.
  • Inmarsat Aero voice (AMBE): P channel data only. Iridium voice: counted, not decoded; Save for iridium-toolkit writes a .bits file.

Clone this wiki locally