#1. Как слушать радиостанции. SDR из блоков GNU Radio.
Это видео - конспект любительского перевода пользователем DesignerMix уроков Майкла Османа, одного из разработчиков (дизайнера) радиоприемника HackRF One, с моими уточняющими дополнениями ... Это видео - начинает курс о программно определяемом радио ...
SDR DSP - фундаментальные основы.
... SDR использует цифровую обработку сигналов для реализации функций радио ... Используя SDR и компьютер можно создать виртуальные радиосистемы для любого сигнала ... Периферийное устройство HackRF One может принимать и передавать сигналы в очень большом диапазоне частот ... Воспринимайте HackRF One, как - звуковую карту, где вместо звука - радиосигналы, а вместо динамика и микрофона - антенна ...
Курс появился из двухдневных занятий на конференциях по информационной безопасности, проводимых по всему миру ... Нет необходимости быть профессионалом по информационной безопасности, чтобы изучать и понять этот курс ... Достаточно интересоваться изучением SDR радио ... Курс преподносится, как - программно / определяемое радио для хакеров ... Если вы - из тех, кто наслаждается созданием креативных решений для технических проблем, то в моём понимании, вы - хакер ... Даже, если вы совсем не разбираетесь в программировании, но можете заставить компьютер делать то, что вы хотите - вы многое приобретёте из этого курса ... Я очень взволнован тем, что размещаю этот курс в открытом доступе для всего мира ...
... Домашняя страница видеокурсов, где расположены видео, текстовые дополнения и исправление ошибок, допущенных в видеоматериале, шершаво записанном за один / два дубля для увеличения скорости записи ... Эта продолжающаяся серия видео будет представлять собой полный курс по программно-конфигурируемой радиосвязи (SDR) ... В этом курсе вы создадите гибкие приложения SDR с использованием GNU Radio с помощью упражнений, которые помогут вам изучить основы цифровой обработки сигналов (DSP), необходимые для освоения SDR ... Для беспроводных упражнений вам понадобится HackRF One или другое периферийное устройство SDR ...
1) Введение в SDR, HackRF и GNU Radio Companion ...
2) DSP, Digital Signal Processing, введение в цифровую обработку сигналов ...
3) Что такое децибел / decibel ...
4) Тайны и мистика ... sample rates - частота дискретизации ... throttle block - дроссельная заслонка ... Atari - эффект Атари ... отрицательные частоты ... типы данных ... ошибка квантования
5) HackRF One ... Устройство радио ... порты CLKIN и CLKOUT ... библиотеки и хакерские утилиты ... обновление прошивки firmware and CPLD ... радио усилитель RF amplifier ...
6) Комплексные числа, плоскость, арифметика, экспоненты, tau, координаты ... квадратурная терминология ...
7) Комплексные числа в DSP ... амплитудная модуляция ... модуляция частоты ...
8) Анализ On / Off кодовых передач ... fcc.gov ... fcc.io ... скользящие и фиксированные коды ...
9) Alias псевдонимы ... Демодуляция FSK demodulation ... отрицательные частоты ... косинус как сумма двух комплексных экспонент ... теорема выборки ... сглаживающие фильтры ... bandpass sampling - полосовая выборка ...
10) Filters - фильтры ... частотная характеристика фильтра ... Finite Impulse Response (FIR) - фильтры с конечной импульсной характеристикой ... multiply-accumulate (MAC) - операции умножения-накопления ... convolution - свертка ... работоспособность FIR фильтра ... low pass filters - фильтры нижних частот ... high pass filters - фильтры верхних частот ... band pass filters - полосовые фильтры ...
11) Повторение мать учения ... соседство по спектру ... сравнение QT vs WX графическая оболочка GUI в GNU Radio ... сохранение графиков сигнала / waveform в файл ... inspectrum, transmitting, replaying, captured radio signal ...
Цель курса - понимание фундаментальных основ цифровой обработки сигналов ... Во время курсов будут использованы примеры GNU Radio Companion, что является графическим интерфейсом GNU Radio ... Разработанное в 2000 гг. GNU Radio - ранее было доступно только для Linux и FreeBSD ... С 2020 года, версия для Windows - расширяет возможности использования этой программы в различных операционных системах и облегчает разработку и эксперименты в области программного радио для пользователей Windows ... Программная платформа GNU Radio позволяет создавать программы в C++ и Python ... GNU Radio Companion позволяет автоматически создавать скрипты на Python, являющиеся программным радио ...
Hello World для ЧМ приёмника.
В качестве эксперимента создадим программу Hello World для ЧМ приёмника ...
Flow Graph, главный экран GNU Radio Companion - наше визуальное представление того, как должна работать программа ... Даже если вы совершенно не разбираетесь в программировании, GRC - сама напишет скрипты и всё сделает за вас ))) ...
В правой колонке - список блоков ... Выбрать источник Osmocom, это - абстрактный слой, позволяющий взаимодействовать с оборудованием и устройствами SDR ...
* Источник - производит цифровые сигналы - принимаемые следующим блоком в схеме (графе) ...
* Источник - сообщает SDR, что он должен включиться и перейти в режим приёма, и отправлять сэмплы - через USB разъем к следующему блоку обработки сигналов ...
* Не вдаваясь в детальные подробности устройства и работы - вы научитесь соединять блоки вместе, создавая Flow Graph визуальную схему радиоприемника ...
Следующий блок - WX GUI FFT Sink ... Блок быстрого преобразования Фурье - визуализирует частотные составляющие сигнала ...
* Соединить выход и вход блоков - связью ... Появляется стрелочка, а блоки меняют цвет - с красного на черный, указывая, что все условия связывания - выполнены ...
* Такую схему - уже можно назвать завершённым флоу графом ... Но чтобы сделать его более полезным - нужно подправить значения переменных ...
* Variable Sample Rate : частота дискретизации сэмплов в секунду ... 32k изменить на 10 миллионов ... Нетрудно ошибиться, добавляя 6 нулей ... Проще и удобнее - указать 10e6, экспоненциальное обозначение, что означает 10 умножается на 10 - 6 раз ... e3 - тысячи ... e6 - миллионы ... и так далее ... Переменная с подчеркиванием Sample_Rate - изменит значение сразу во всех блоках ...
Настройка в источнике Osmocom ... ПКМ - свойства ... Или двойной клик по блоку ...
* Ch0: Frequency (Hz) = 97.9e6 МГц - частота настройки на станцию ...
* Ch0: RF Gain (dB) = 0 - выключить усиление антенного усилителя в SDR ...
Настройка FFT Sink ... ПКМ - свойства ...
* Average = On - усреднение
Теперь можно проверить работоспособность схемы, пока - без звука ...
* Кнопка с изображением шестерёнок - Execute the Flow Graph ... Появится запрос на сохранение файла ... Расширение файла *.grc, содержимое - представление флоу графа : список используемых блоков, настроек и связей ...
* Как только файл *.grc будет сохранён - будет создана программа на Питоне, согласно сценарию в файле, и она - будет запущена и выполнена ...
* Сигнал с эфира - проходит через антенну, SDR, USB, попадает в Osmocom и наконец - графически отображается на экране FFT Plot графика ...
* Завершить работу нажатием на красную кнопку с крестом ... Все компоненты программ - вернутся в исходное состояние ...
Настройки наглядности визуализации частоты из -5 МГц ... 0 ... +5 МГц в реальное представление 92.9 МГц ... 0 ... 102.9 МГц ...
* Baseband Freq ... Вместо того, чтобы явно указать центр полосы диапазона частот = 97.9e6 - проще ввести новую переменную center_freq (с нижним подчёркиванием) и одновременно изменить это значение - во всех блоках ...
* Блок WX GUI FFT Sink - разозлился и покраснел, потому-что переменная center_freq - не существует ... В правом списке - найти блок переменные и добавить его на Flow Graph, отредактировав его параметры ... ID = center_freq ... Value = 97.9e6 ... Теперь настройку Ch0: Frequency (Hz) блока Osmocom Source - можно изменить на эту же переменную ... Но теперь, изменение переменной в одном месте - изменит её значение во всех блоках и убережёт от ошибок в будущем ...
Следующий шаг - попытаться прослушать звук радиостанции ... Но, предварительно - нужно расположить настройку на её частоту - в центр экрана ... И сделать, это можно - несколькими способами ...
* Можно указать новую частоту - вручную ... Но, более удобным способом, будет - использовать математический блок оператор умножения / Multiply ... Цифровые сигналы - это просто наборы последовательности цифр ... Перемножение одного цифрового набора цифр сигнала на другой - даст новое значение частоты ...
* Потребуется дополнительный блок источник сигнала из набора волновой генератор / Waveform Generator из списка в правом окне ... Сгенерированный синтезированный сигнал создается с помощью центрального процессора ПК ... Частота настройки Signal Source - это значение сдвига или разница в частоте между центральной частотой настройки ... и частотой настройки на канал станции ...
* Новая переменная создается простым копированием блока center_freq и обратной вставкой в окно программы (дублированием) ... C изменением значений ... ID = channel_freq ... Value = 96.5e6 ...
* В блоке сигнала синтезатора частоты - изменить значение Frequency = central_freq - channel_freq ... То есть - использовать выражение вычисления переменной - из переменных ... Круто ))) ... Звучит пугающе, но здесь можно использовать любое выражение на Python ))) ...
Подготовка к демодуляции радио сигнала и его преобразование в звук ...
* Новый блок фильтры - ФНЧ ... Выбор объясняется желанием пропускать частоты в районе 0 Герц ... Cutoff Freq / отсечка = 75e3 (75 Кгц) ... Transition Width / полоса пропускания = 25e3 (25 Кгц) ...
* Также нужно уменьшить частоту дискретизации ... Значение децимации / Decimation - напрямую связано с шириной полосы пропускания интересующего сигнала ... Полоса пропускания - намного больше, чем реально нужна, и тратит процессорное время на обработку большего количества сэмплов - чем необходимо ... Новая переменная channel_width ФМ ЧМ радио составляет 200e3 (200 Кгц) ... Децимация - это процесс уменьшения частоты дискретизации ... Заранее не зная значение децимации = 50, можно получить его делением sample_rate / channel_width ... Блок ФНЧ покраснел и злится, понимая только целые числа вычисления децимации ... Изменить значение с плавающей запятой на целое, можно - ограничив его функцией программирования Python : int(sample_rate / channel_width) ...
После ФНЧ фильтра требуется - передискретизация или ресемплер ... Это выполняет блок рациональной передискретизации Rational Resampler ... Настроить ... Interpolation = 12 ... Decimation = 5 ... Причина новой децимации - в том, что 12 / 5 - не целое число, а ФНЧ умеет оперировать - только целыми числами ... На выходе - ожидается частота : 200 * 12 / 5 = 480e3 или 480 Кгц ...
Добавить блок WBFM Receiver - приёмник широкополосной частотной модуляции и настроить его ... Quadrature Rate = 480e3 - квадратурная скорость / сэмплирование / частота дискретизации входа ... Audio Decimation = 10 - значение уменьшения частоты на выходе блока = 48 КГц ... Это значение поддерживается абсолютным большинством звуковых карт ...
Осталось выбрать Audio приёмник звука - звуковую карту Audio Sink ... По умолчанию, звуковой вход настроен на переменную sample_rate, и это - не нравится блоку ... Нужно изменить параметр Sample Rate = 48 KHz ... Звук - есть, но нужно настроить уровень громкости ...
Способ увеличения громкости - умножить сигнал на входе в блок Аудио ...
* Здесь применяется блок умножения на константу Multiple Constant ... Теперь - покраснели сами стрелки, так как типы входов - не совпадают ... Нужно изменить тип входа / выхода ID Type = Complex на = Float ...
* Чтобы изменять громкость во время работы - добавляется блок WX GUI Slider / ползунок ... Он представляется в виде переменной, изменением ID = audio_gain ... Default Value = 1 ... Minimum = 0 ... Maximum = 10 ...
* Теперь изменяются свойства блока умножения на константу, где в качестве значения константы - вводится и выступает переменное значение ползунка громкости audio_gain ...
Самый прикол GNU Radio в том, что продублировав схему - можно настроиться и прослушивать - сразу несколько радиостанций ... Пусть это будет вашим домашним заданием ))) ... Такое поведение - нельзя получить на явно настраиваемой программе SDRSharp : водопад - будет показывать соседние станции, но звук будет идти - только с одной ... Подобное поведение многозадачности могли демонстрировать ранее - только декодеры CW радиосвязи : CW Skimmer, DigiPan, MPR40 SDR Morse Decoder многополосного декодирования текста - способные одновременно декодировать множественные станций - в зависимости от широкополосности приемника ...
... Это Live CD и Live USB системы, предназначенные для тестирования на проникновение и оценки безопасности ... Основанный на Gentoo Linux, Pentoo предоставляется как в виде 32-битного, так и в 64-битном устанавливаемом LiveCD ... Pentoo - это LiveCD, ориентированный на безопасность, основанный на Gentoo ... По сути, это - установка gentoo с множеством настроенных инструментов, настроенным ядром и многим другим ...
Неполный список функций, включенных в настоящее время ... Ядро с пакетами, связанными со взломом Wi-Fi ... Поддержка загрузки модулей в стиле slax ... Сохранение изменений на USB-накопитель ... XFCE4 wm ... Поддержка взлома OPENCL с помощью инструментов разработки ... Обновления системы и безопасности, если они наконец установлены ... Проще говоря, Pentoo - это Gentoo с наложением pentoo ... Это наложение доступно в Layman, поэтому все, что вам нужно сделать, это Layman -L и Layman -a Pentoo ...
Pentoo основан на Gentoo, который использует менеджер пакетов portage ... Вы взаимодействуете с portage в основном с помощью emerge ... Чтобы облегчить использование новичкам, установлен скрипт под названием pentoo-updater, который должен плавно обрабатывать обновления ... должен ...
... Ещё один вариант создания RTL SDR радиоприемника на Windows - не намного отличающийся от предложенного, но всё же - заметно проще ... Автор показывает код на Питоне и пример того, что достаточно запустить готовый Python скрипт *.py, чтобы запрограммированное радио - снова заработало ...
Связанные материалы продолжения исследования работы RTL SDR в составе системы радиосвязи компьютерных программ декодирования радио данных ... Windows ПК софт Linux цифровой обработки радио сигналов на Python ...
* Python, Anaconda, Windows, R ...
* Linux GNU Radio Windows ...
* Python 3 курс лекций с видео ...
* Программы RTL SDR проекты GitHub ...
* Программы RTL SDR проекты SourceForge ...
* Сайт выбрать список спутников ...
* Windows генератор собственного TLE ...
* Декодеры радио телеметрии ...
* Горизонт Linux Live CD ...
* Радиоконструктор GNU Radio ...
Раздел linux : список всех страниц ...