Skip to content

LightWind1/MultimonNG_Android

Repository files navigation

multimon-ng Android

Android application for decoding radio signals using RTL-SDR hardware. Port of EliasOenal/multimon-ng to Android with real-time spectrum/waterfall display, audio playback, and multiple signal source backends.

Features

  • Multi-protocol decoding: POCSAG (512/1200/2400), FLEX, EAS, AFSK, FSK, DTMF, ZVEI, Morse CW, X10, CIR FSK, and more
  • Real-time spectrum & waterfall: Visualize the RF spectrum with adjustable FFT resolution
  • FM audio playback: Listen to demodulated FM audio through the device speaker
  • Three signal sources: Internal RTL-SDR USB driver, external rtl_tcp server, file input (WAV/FLAC/raw IQ)
  • Frequency presets: Save, delete, and quickly switch between commonly used frequencies
  • Message log: View, copy, clear, and export decoded messages
  • Gain & AGC control: Adjust RTL-SDR gain manually or use automatic gain control
  • Charset support: GB2312, US, DE, FR, SE character sets for POCSAG messages

Architecture

┌──────────────┐   ┌──────────────────┐   ┌──────────────┐
│  FileSource   │   │ InternalSdrSource │   │ExternalTcpSrc│
│ (WAV/FLAC/raw)│   │ (USB RTL-SDR)     │   │ (rtl_tcp)    │
└──────┬───────┘   └────────┬─────────┘   └──────┬───────┘
       │                    │                     │
       └────────────────────┼─────────────────────┘
                            │ IQ samples (float/int8 interleaved)
                            ▼
              ┌─────────────────────────┐
              │  NativeLib (JNI bridge)  │
              │  Ring Buffer → DSP →     │
              │  Demodulators            │
              └────────────┬────────────┘
                           │ JNI callbacks
                           ▼
              ┌─────────────────────────┐
              │  MainActivity            │
              │  Spectrum / Waterfall /  │
              │  Messages / Audio        │
              └─────────────────────────┘

See docs/signal-flow.md for a detailed explanation of how signals propagate through the system.

Build Requirements

  • Android Studio Hedgehog (2023.1) or later
  • Android NDK 26+
  • Gradle 9.3+
  • RTL-SDR USB dongle (for internal/external source)
  • rtl_tcp_andro (for external TCP source only)

Usage

Internal RTL-SDR

  1. Connect RTL-SDR dongle via USB OTG cable
  2. Select "Internal RTL-SDR driver" from the source dropdown
  3. Set desired frequency by tapping the frequency display
  4. Tap Start to begin receiving and decoding

External rtl_tcp

  1. Install and launch rtl_tcp_andro on the same device
  2. Select "External RTL-SDR driver" from the source dropdown
  3. Ensure TCP port matches (default 1234)
  4. Tap Start — the app will launch rtl_tcp_andro and connect automatically

File Input

  1. Select "File input" from the source dropdown
  2. Tap Open File and choose a WAV, FLAC, or raw IQ file
  3. Decoding runs offline through the entire file

Third-Party Code & Licenses

Core dependencies (statically linked — GPL v2.0 applies)

Project Repository License Usage
multimon-ng EliasOenal/multimon-ng GPL v2.0 All demodulator cores (POCSAG, FLEX, AFSK, FSK, DTMF, ZVEI, Morse, X10, EAS, etc.)
rtl-sdr osmocom/rtl-sdr GPL v2.0 RTL-SDR tuner interface headers

Library dependencies (dynamically or separately linkable — LGPL v2.1)

Project Repository License Usage
libusb libusb/libusb LGPL v2.1 USB device interface headers
libusb-andro (fork by Signalware Ltd / SDR Touch) LGPL v2.1 Android USB control transfers for RTL-SDR I2C communication

Permissive-licensed components

Project Repository License Usage
dr_flac mackron/dr_libs Public Domain / MIT-0 FLAC audio file decoding
cJSON DaveGamble/cJSON MIT JSON output formatting
fix_fft (public domain) Public Domain Fixed-point FFT for spectrum display

Android libraries (Apache 2.0)

  • AndroidX (core-ktx, appcompat, constraintlayout, recyclerview)
  • Google Material Design Components
  • All standard Android framework APIs

License

This project is licensed under the GNU General Public License v2.0 (GPL v2.0).

Rationale: The core signal processing engine is EliasOenal/multimon-ng (GPL v2.0), and RTL-SDR headers from osmocom/rtl-sdr (GPL v2.0) are statically linked into the native library. Under GPL v2.0 Section 2(b), any work "that in whole or in part contains or is derived from the Program" must be licensed under GPL v2.0. The libusb components (LGPL v2.1) permit linking without imposing additional copyleft obligations.

See LICENSE for the full license text.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors