multimon-ng

Wireless & RF v1.6.0 · 27.07.2026 активный

Декодер цифровых радиосигналов: POCSAG (пейджинг экстренных служб), FLEX, EAS, DTMF, AFSK/FSK. Работает в паре с RTL-SDR. Позволяет читать пейджинговые сообщения скорой помощи, полиции, пожарных и других экстренных служб в открытом виде.

v1.6.0
27.07.2026 current
Добавлен 25.06.2026 · Обновлён 25.06.2026 · Wireless & RF
Установка
sudo apt install multimon-ng
# или:
git clone https://github.com/EliasOenal/multimon-ng
mkdir multimon-ng/build && cd multimon-ng/build
cmake .. && make && sudo make install

# Декодирование POCSAG через RTL-SDR:
rtl_fm -f 153.350M -s 22050 | multimon-ng -t raw -a POCSAG512 -a POCSAG1200 /dev/stdin
переведено ИИ

multimon-ng

Демо)

multimon-ng является преемником multimon. Он декодирует следующие цифровые режимы передачи:

  • POCSAG512 POCSAG1200 POCSAG2400
  • FLEX FLEX_NEXT
  • EAS
  • UFSK1200 CLIPFSK FMSFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3
  • HAPN4800
  • FSK9600
  • DTMF
  • ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI
  • EEA EIA CCIR
  • MORSE_CW
  • DUMPCSV X10 SCOPE SDL_SCOPE
  • GSC (Последовательный код Голея)

Сборка

multimon-ng собирается с использованием CMake.

Предварительные требования

Обязательные: - C-компилятор (GCC или Clang) - CMake 3.15 или новее - make (или другой поддерживаемый CMake генератор)

Опциональные (определяются автоматически): - libpulse-dev — включает поддержку живого аудиоввода PulseAudio - libx11-dev — включает отображение осциллографа X11 - SDL3 — включает цифровой осциллограф-фосфор SDL3

Если ни одна из библиотек аудио не найдена, multimon-ng собирается только с вводом из файла/stdin (DUMMY_AUDIO). Это подходит для обработки записанных сэмплов или piped-ввода от таких инструментов, как rtl_fm.

Пример (Debian/Ubuntu):

sudo apt-get install build-essential cmake libpulse-dev libx11-dev

Сборка

cmake -S . -B build
cmake --build build --parallel 4
sudo cmake --install build

По умолчанию префикс установки — /usr/local. Чтобы установить в другое место (например, системно в /usr или в пользовательскую директорию), передайте параметр CMAKE_INSTALL_PREFIX:

cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr

Сборки для Windows MinGW

На Windows (MSYS2/MinGW)

Установите MSYS2, затем из оболочки MinGW64 или MinGW32:

cmake -S . -B build
cmake --build build --parallel 4

Кросс-компиляция из Linux

Установите кросс-компилятор MinGW, затем используйте предоставленные файлы цепочки инструментов:

# Для 64-бит Windows
cmake -S . -B build-mingw64 -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-mingw64.cmake
cmake --build build-mingw64 --parallel 4

# Для 32-бит Windows
cmake -S . -B build-mingw32 -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-mingw32.cmake
cmake --build build-mingw32 --parallel 4

Поддерживаемые среды

На данный момент multimon-ng успешно собран в следующих средах:

  • Arch Linux
  • Debian
  • Gentoo
  • Kali Linux
  • Ubuntu
  • macOS
  • Windows (MSYS2/MinGW, Cygwin и VisualStudio/MSVC)
  • FreeBSD

Примеры

Конвертация Wav в raw

Файлы можно легко преобразовать в собственный формат raw multimon-ng с помощью sox. Например:

sox -R -t wav pocsag_short.wav -esigned-integer -b16 -r 22050 -t raw pocsag_short.raw

GNURadio также может генерировать этот формат, используя file sink в режиме ввода short.

Pipe sox в multimon-ng

Вы также можете "пайпить" (направить поток) сырые сэмплы в multimon-ng, используя что-то вроде:

sox -R -t wav pocsag_short.wav -esigned-integer -b16 -r 22050 -t raw - | ./multimon-ng -

[!NOTE] Обратите внимание на завершающий дефис, который означает запись/чтение из stdin

Pipe rtl_fm в multimon-ng

В качестве последнего примера, вот как вы можете использовать его в связке с RTL-SDR:

rtl_fm -f 403600000 -s 22050 | multimon-ng -t raw -a FMSFSK -a AFSK1200 /dev/stdin

Запись и парсинг живых данных в формате Flac

Более продвинутый пример, который комбинирует rtl_fm, flac и tee, чтобы разделить выходной поток rtl_rm на отдельные потоки. Один поток передается в flac для записи аудио, другой поток, например, в приложение для текстового парсинга вывода mulimon-ng.

rtl_fm -s 22050 -f 123.456M -g -9.9 | tee >(flac -8 --endian=little --channels=1 --bps=16 --sample-rate=22050 --sign=signed - -o ~/recordings/rtlfm.$EPOCHSECONDS.flac -f) | multimon-ng -v 0 -a FLEX -a FLEX_NEXT -t raw /dev/stdin
  1. Вы можете передать -l в rtl_fm для уровня шумоподавления (squelch level), это обрежет фоновый шум, чтобы меньше данных кодировалось flac, что значительно уменьшит размер файла, но может привести к потере данных сигнала. Это значение необходимо настроить!
  2. Flac использует здесь -8, если вы запускаете на устройстве с ограниченными ресурсами, возможно, захотите понизить это значение.
  3. Значение аргумента -o для Flac содержит $EPOCHSECONDS для создания уникальных файлов при каждом перезапуске.

Чтобы воспроизвести записанный flac-файл в multimon-ng (требуется sox):

flac -d --stdout ~/recordings/rtlf/rtlfm.1725033204.flac | multimon-ng -r -v 0 -a FLEX_NEXT -t flac -

Упаковка

Чтобы выполнить установку в директорию для упаковки (типично для дистрибутивной упаковки), используйте стандартную переменную DESTDIR:

cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build --parallel 4
DESTDIR=/path/to/pkgroot cmake --install build

DESTDIR добавляется в начало путей установки, поэтому файлы попадут по пути вроде /path/to/pkgroot/usr/bin/multimon-ng и т.д.

Тестирование

После сборки запустите набор тестов:

./test/run_tests.sh

[!NOTE] Тестирование не-raw сэмплов (flac, wav) требует установленного SoX.

Комментарии
Войдите, чтобы оставить комментарий