Несмотря на бытующее в некоторых магазинах название "сканер" rtl sdr
сам по себе таким не является, это просто рч фронтенд и быстрый АЦП
способный оцифровать полосу до 3,2 МГц в диапазоне 24-1700 МГц
примерно. Сканирующий же приемник это радио либо автоматически
перестраивающееся в заданном диапазоне и производящее некоторые
действия в зависимости от того что попало к нему на вход
(расплывчато, классические аналоговые сканеры AOR просто
останавливали на время сканирование и выводили звук при обнаружении
на входе сигнала превышающего установленный порог), либо
перестраивающееся по подготовленному списку частот в поисках
активности. Сканеры уже нулевых годов могли сохранять списки
обнаруженных частот на CF карты или общаться с ПК по rs232.
Поскольку такие штуки были очень дороги любители собирали приемники
Р-45 (wfm, nfm, am) и M-45 (только NFM)
Делались они на телевизионных блоках тюнеров, имели соответствующий
диапазон (45-900 МГц с пропусками), оставалось собрать только блок
управления и индикации на контроллере, и тракт ПЧ-НЧ на микросхеме
радиоприемника.
https://village-radiolab.com/radio/receivers/p-45/
В зависимости от прошивки они могли управляться по COM порту
для логирования и записи принятого.
Появились сканеры как и много всего интересного в 20-м веке в
америке, сканеры для полиции и прочих пожарных продавались с 70-х
годов. Представляли собой супергетеродины с набором фиксированных
частот, задаваемых кварцами.
Кнопками можно было отключать из сканирования каналы. Пользователь
регулировал шумодав и схема переключала кварцы пока уровень сигнала
на выходе не превысит заданный.
С появлением микроконтроллеров и PLL появились программируемые
аппараты.
Дальнейшие доработки связаны с миниатюризацией, добавлением декода
цифры, icom ic-r3 например умет аналоговое ТВ показывать
(сомнительный функционал, учитывая что китайские мобильники умели то
же самое).
Что касается SDR программное радио можно было бы сделать с
относительно сложной логикой работы, но этим никто особо не
занимался за вот уже 11 лет существования на рынке РТЛок.
Есть плагин к SDR#, который позволяет сканировать по уровню
(перестраивает прием на самый сильный сигнал в полосе), можно
выбрать сканировать только полосу принимаемую приемником, на которую
он в данный момент настроен, тогда он будет перестраивать прием на
сигналы появляющиеся в полосе приема, можно настроить диапазон
сканирования, тогда он будет периодически перестраивать тюнер и
слушать несколько полос.
Можно задавать диапазоны сканирования (но нельзя удалять, иначе шарп
крашится, по крайней мере у меня, мда)
Можно настраивать поведение, например исключать из списка
обнаруженных частот сигналы которые быле в эфире слишком мало
времени или наоборот присутствующие постоянно.
Работающий сканер
Ну и корнечно можно натравить выход звука с шарпа в dsd+ чтобы
мониторить болтовню в цифре
Вот архив
сдршарпа с этим плагином. (В архивет
так же лежат установщики нужных версий dotnet и zadig, библиотеки
rtl уже установлены).
В SDP++ встрое примитивный сканер, но он спрятан в настройках, благо
легко выводится на панель управления.
Откройте module manager, под табличкой ткните в выпадающее меню,
выберите scanner, напишите название (оно будет отображаться в
названии модуля в панели управления), нажмите +. Модуль сканера
появится в боковом меню. Можете в пункте debug снять галку lock menu
configuration и переместите модуль в меню на место повыше.
Сканер примитивный, логов не ведет, фич типа исключения постоянно
присутствующих помех нет, просто поиск сигнала амплитуды выше
установленной в пункте уровень.
Сканирование с записью звука в файл.
Конечно было бы здорово вернувшись домой обнаружить на компьютере
табличку с записями о частоте приема, времени и записью принятого
там. Не сейчас.
Просто писать все подряд в один звуковой файл можно штатными
средствами sdrpp.
Нужно сначала корректно настроить порог сканера, чтобы он не зависал
на помехах, настроить squelch чтобы он не открывался во время
сканирования а только когда сканер встает на сигнал, указать чтобы
рекордер писал звук, игнорировал тишину и указать куда сохранять. Не
забудьте после записи остановить рекордер и потом только закрыть
программу, а то файл записи побьется и будет нулевой длительности
(но размер будет соответствующим записанному)
Надо еще заметить что почти вся цифровая связь на УКВ использует чм
модуляцию, так что если писать таким образом звукс участока где
работает DMR или P25 с демодуляцией NFM то можно потом проиграть
звуковой файл аудиоплеером настроив его вывод в DSD+ и прослушать
принятую болтовню в цифре. С другой стороны если есть цель слушать
ТОЛЬКО цифру то можно сразу выводить звук по виртуальному
аудиокабелю в DSD+, поскольку он и сам может записывать уже
декодированное аудио, без пауз и секций idle.
Архив с
настроенным сканером sdr++
Учитывая наличие большого количества помех в современном эфире стоит
все же самому садиться за мониторинг. Для удобного мониторинга
понадобится два приемника, их можно подключить через телевизионный
делитель сигнала. У меня это Airspy с родным приложением spectrumspy
отвечающий за отрисовку спектра широкой полосы и rtl sdr для того
чтобы при обнаружении сигнала на спектре можно было быстро
перестроиться на частоту сигнала и определить что там излучает,
какой модуляцией итд.
К сожалению Spectrumspy работает только с приемниками Airspy, но для
rtl sdr тоже есть подобные приложения.
Я нашел удобным rtlplan. Оно не требует установки нескольких версий
питона или гнурадио, это один exe файл запускающийся без установки,
и требующий несколько dll из проекта osmocom.
Приложение кривоватое, и так как rtl_power при перегрузке АЦП
приемника выдает в выходной csv файл значение NAN, а софтина не
может его обработать то она выдает ошибку и останавливается.
Приходится не использовать АРУ и ставить значение усиления пониже. И
все равно передатчик включившийся неподалеку может тормознуть
процесс.
Приложение позволяет выбирать приемники подключенные к компьютеру.
Водопад движется достаточно медленно так что хранит информацию о
происходившем в эфире минут за 15 минимум, но самое важное-что когда
вы подводите курсор к выбранной дорожке спектра он показывает точную
частоту сигнала.
Есть вторая приложуха подобного формата - RTLSDR Scanner, только
люто тормозная,перегруженная и неудобная. Как показали тесты из-за
своей тормознутости при сканировании полосы в 10 мегагерц запросто
может не заметить передачу 3-х секундной длительности. Но вдруг
кому-то захочется посмотреть на насканированный спектр в 3д?
Тоже представляет из себя просто екзешник, правда использующий
питон.
Обе приложухи с нужными библиотеками есть в этом архиве.
Распакуйте и запустите rtlplan.exe или rtlsdr_scan (драйверы для rtl
которые устанавливаются с помощью Zadig конечно должны быть
установлены). Границы сканирования прописываются в герцах.
Есть еще вариант, для линуксоидов и любящих автоматизацию. Программы
выше просто запускают стандартную утилиту из пакета rtl-sdr от
Osmocomm с нужными параметрами, а потом берут выводимую утилитой
информацию в csv файл и рисуют по ее данным спектр. Так что в лине
если у вас установлен пакет rtl-sdr можно просто сделать например
так
rtl_power -f 144M:146M:100 -g 50 -i 1s -e 30m -c 30%
two_meter_data.csv
параметры
-f lower:upper:bin (частота в герцах, нижняя частота спектра:
верхняя частота:размер окна fft)
-i Время усреднения (это время приемник будет стоять на данной
чатсоте усредняя спектр)
-g усиление дб
-e Таймер отключения, после указанного времени с начала старта
утилита остановит работу
-c crop, программа будет обрезать часть спектра по краям каждого
измерения, там где находятся скаты фильтров в тюнере и склеивать
спектр без них, если это не сделать спектр будет волнистым
последний параметр two_meter_data.csv - имя файла в который будут
сохраняться данные
после завершения скана нам понадобится скрипт
https://github.com/keenerd/rtl-sdr-misc/blob/master/heatmap/heatmap.py
который возьмет csv файл и нарисует по нему картинку спектра
python heatmap.py two_meter_data.csv two_meter_spectrum.jpg
Получаем такую картинку высокого разрешения по которой можно делать
выводы о активности в разных участках диапазона
Да и стандартная консольная утилита rtl_fm из осмокоммовского пакета
сама умеет сканировать. Как диапазон частот с указанным шагом так и
заданный список частот
Послушаем вещательные Фм станции
rtl_fm -M wbfm -f 106.3M -r 64k | aplay -r 32000 -f S16_LE -t raw -c
2
Просто послушаем 2-й канал LPD
rtl_fm -M fm -s 11025 -f 433100000 | aplay -r 11025 -f S16_LE -t raw
-c 1
Пример: сканируем авиадиапазон, АМ модуляция, звук на динамики
rtl_fm -M am -s 11025 -f 129M:135M:8.66k -l 70 | aplay -r 11025 -f
S16_LE -t raw -c 1
так и сканировать список частот включаясь на той на которой сигнал
выше заданного уровня
Пример с перебором частот, модуляция ЧМ, звук на динамики
rtl_fm -M fm -s 11025 -f 144000000 -f 145000000 -f 146000000 -l 100
| aplay -r 11025 -f S16_LE -t raw -c 1
Из этой утилиты можно и записывать звук (при чем одновременно с
прослушиванием) но надо применять редактор sox чтобы не записывать
паузы когда шумодав закрыт
Опции
-M модуляция fm, wbfm, raw, am, usb, lsb
-f (нижняя частота:верхняя:шаг перестройки)
-l уровень сигнала на который среагирует скан
-g усиление (если не указывать включится АРУ)
-s сэмплрейт (24к по умолчанию)
-d номер устройства RTL
-E direct2 Direct sampling для приема КВ
Так что с помощью пары rtl sdr, антенны поставленной повыше и тв
делителя можно быстро выяснить на каких частотах есть движуха. Я за
неполных пару дней сидения обнаружил у себя в ленобласти примерно
сотню активных УКВ частот различных служб, как аналоговых так и
цифровых, часть которых не зашифрована и декодируется DSD+ ЖД,
газовики, полиция, частные охраны, аварийщики итд.
https://github.com/shajen/rtl-sdr-scanner-cpp?tab=readme-ov-file
Сканер способный записывать передачи с упоминанием частоты и
времени, спектрограммы принятых сигналов и имеющий веб-интерфейс.
Может ставиться через докер.
Цифра
Больше половины служебной связи использует цифровые модуляции.
Цифровая связь это куда больше чем просто модуляция цифровым
потоком, транкинговые системы больше похожи на сети мобильной связи,
в них есть управляющий канал исходящий от базовой станции который в
режиме дежурного приема слушают рации абонентов, и в момент вызова
абонента в нем передается частота и параметры канала на котором
будет производиться связь абонента с базой.
Простое решение
DSD+ Самый простой вариант это установить виртуальный аудиокабель, в
настройках windows сделать вход вирт.аудиокабеля входом по
умолчанию, выход sdr программы настрить на выход вирт.кабеля. Тогда
при запуске dsd+ он будет автоматом подхватывать аудиовход и выход
из системных настроек не требуя правки конфигов. Остается запустить
сканер в SDR приложении и слушать цифрятину.
Жирный минус такого решения - ретрансляторы. Они часто выходят в
эфир или висят постоянно с высоким уровнем сигнала, ничего обычно не
передавая, гоняя idle пакеты. НО иногда через них может передаваться
речь, и если мы слушаем транк через сканер то сканер либо зависнет
на постоянку на сигнале ретранслятора, передающего молчание, и
игнорируя голосовые короткие передачи на других частотах, либо
добавить ретранслятор в игнор лист частот, пропуская его и
потенциально пропуская интересные передачи которые могут пролетать
через него (служебная связь не отличается высокой интенсивностью
переговоров).
Промежуточное решение - программа SDRTrunk, позволяет записывать
сообщения и звук сразу с нескольких предварительно занесенных в
списки частот, он не сканирует частоты, он одновременно декодирует
все внесенные в базу каналы, при чем одновременно с нескольких
приемников. Пишут что она тоже умеет автоматом декодировать
управляющий канал транка и динамически создавать каналы приема
вызовов, но я пока не нашел сетей в которых могу потестить это.
Правильный способ - ПО ХОРОШЕМУ нужно иметь минимум пару приемников,
если разнос канала базовой станции и абонентского канала больше чем
полоса sdr, в полосу одного из приемников должен попадать
управляющий канал базовой станции, программа слушает канал, читает
сообщения вызовов и подстривает "голосовой" приемник для декода
звука (SDRTrunk тоже так делает если разговорный канал попадает в
полосу sdr или у вас 2 приемника). Для такого мониторинга есть
программа Unitrunker, но я с ними еще не разбирался, так же умеет
делать DSD+ Fastline, платная или доступная по подписке.
Из интересных фич цифровой связи - запрос координат у абонентов, эти
данные тоже декодируются и их можно просмотреть приложением lrrp из
пакета dsd
Еще есть програмка openear. Она может работать как декодируя сигнал
с аудиовхода, так и напрямую с rtl-sdr. ИМХО у нее чуть ниже
способность слышать слабые сигналы чем у dsd+, но список форматов
отличается.
Программа странно выбирает аудиовыход и коверкает кириллические
названия аудиоканалов, поэтому для настройки включите nfm или am,
запустите прием и перебирайте варианты в поле output пока не
услышите звук
openear архив
SDRtrunk также работает напрямую с тюнерами (может работать
одновременно с несколькими разных фирм, rtl, airspy, hackrf), может
слушать и записывать ОДНОВРЕМЕННО речь с нескольких прослушиваемых
каналов. Но нельзя просто ткнуть на полоску на спектре и выбрать
декодер, каналы нужно преднастраивать.
Скачиваем архив, распаковываем, заходим в папку bin, запускаем cmd
файл sdr-trunk.
Запускаем приложение. Если у вас подключены и свободны приемники оно
их обнаружит и выведет спектр с одного из них
Идем в playlist editor
Вкладка channels, кнопка-список NEW в которой выбираем декодер
Под табличкой заполняем поля. Важными являются частота канала,
приемник с которого она будет приниматься, ну и пожалуй опция
автостарта. В нижних полях Logging и Recording находятся опции
сохранения информации о событиях и записи. Непосредственно записи
звука там не нашлось, можно сохранить бинарники которые можно потом
сохранить кодеку MBE или сырой i\q
Сохраняем на кнопку save под табличкой, нажимаем кнопку Play с
зеленой стрелкой, прием пошел
В главном окне, во вкладке now playing будет отображаться состояние
канала, можно посмотреть события
В поле Events сохраняются события канала, Отдельные вызовы, команды,
итд
Поле нижней части окна Receivers очевидно для управления
приемниками. Можно менять полосу, усиление, частоту настройки
Посмотреть водопад с другого приемника
Также sdrtrunk автоматически определяет управляющий канал транка, и
при появлении вызова на управляющем канале она сама создает
временный канал настроенный на частоту передачи голоса (если она
попадает в полосу приема какого-либо из подключенных активных
приемников) и выводит звук, для этого в настройках канала не надо
указывать ничего особенного, только тип сети и частоту. Например
создаем канал приема базовой станции сайта p25
Программа слушает канал. В поле детали можно посмотреть частоты
связанных каналов.
Происходит вызов, программа динамически создала канал для приема и
выводит звук разговора. Когда вызов закончится канал удалится сам.
Карта для отображения запросов координат тоже есть
Программа очевидно может значительно больше, это просто минимальная
настройка для быстрого старта
Есть еще имбовый вариант-trunk recorder
https://github.com/robotastic/trunk-recorder
Приложение под линукс (есть docker вариант). Оно просто берет ВЕСЬ
выходной поток sdr приемника, само ищет в нем посылки с цифровой
речью, декодирует и сваливает записи звука в указанную папку. Для
того чтобы прослушивать их есть несколько вариантов веб-морд. Также
оно может сливать записи в платформы расшаривания записями
разговоров в эфире типа openmhz.com (предыдущий SDRTrunk тоже может
стримить в несколько таких платформ). А так же записывать аналог.
Пример gui для trunk recorder - rdio
Правда при подключении широкополосного приемника и высокой
активности в радиосетях оно спокойно может выжрать ресурсы core i7