Декодер цифровых радиосигналов: POCSAG (пейджинг экстренных служб), FLEX, EAS, DTMF, AFSK/FSK. Работает в паре с RTL-SDR. Позволяет читать пейджинговые сообщения скорой помощи, полиции, пожарных и других экстренных служб в открытом виде.
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. Он декодирует следующие цифровые режимы передачи:
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
Установите MSYS2, затем из оболочки MinGW64 или MinGW32:
cmake -S . -B build
cmake --build build --parallel 4
Установите кросс-компилятор 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 успешно собран в следующих средах:
Файлы можно легко преобразовать в собственный формат 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.
Вы также можете "пайпить" (направить поток) сырые сэмплы в multimon-ng, используя что-то вроде:
sox -R -t wav pocsag_short.wav -esigned-integer -b16 -r 22050 -t raw - | ./multimon-ng -
[!NOTE] Обратите внимание на завершающий дефис, который означает запись/чтение из stdin
В качестве последнего примера, вот как вы можете использовать его в связке с RTL-SDR:
rtl_fm -f 403600000 -s 22050 | multimon-ng -t raw -a FMSFSK -a AFSK1200 /dev/stdin
Более продвинутый пример, который комбинирует 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
-l в rtl_fm для уровня шумоподавления (squelch level), это обрежет фоновый шум, чтобы меньше данных кодировалось flac, что значительно уменьшит размер файла, но может привести к потере данных сигнала. Это значение необходимо настроить!-8, если вы запускаете на устройстве с ограниченными ресурсами, возможно, захотите понизить это значение.-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.