Как установить gnuradio на kali linux

Обновлено: 04.07.2024

Знакомство с Software Defined Radio (SDR) и HackRF лучше начать с просмотра серий видео Software Defined Radio with HackRF [2] (на русском языке есть хороший перевод [3]). В этих видео Вас познакомят с приемником HackRF One, необходимым программным обеспечением, включая GNU Radio, и обучат базовым понятиям цифровой обработки сигналов (Digital Signal Processing, DSP) - все, что нужно для получения доступа к широким возможностям SDR. Ниже приведена дополнительная полезная информация (перевод статьи [1]). Непонятные термины и сокращения см. в разделе "Словарик" статьи [17].

[Попробуйте запустить HackRF с Pentoo Linux]

Как только Pentoo запустится, Вы немедленно сможете обновить firmware своего приемника HackRF, или использовать утилиты командной строки HackRF. Пошаговую демонстрацию см. в SDR with HackRF, Lesson 5: HackRF One [6].

Чтобы проверить, обнаружено ли Ваше устройство HackRF, введите hackrf_info в командной строке. Результат выполнения этой команды должен вывести несколько строк, где должен быть текст "Found HackRF board". Должны зажечься все разноцветные светодиоды 3V3, 1V8, RF и USB.

HackRF One Left view

Вы можете ввести в командной строке startx, чтобы запустить графический рабочий стол Pentoo. В первом диалоговом окне примите "default config" (конфигурация по умолчанию). Рабочий стол полезен для программы GNU Radio Companion и других графических приложений, однако это не требуется для базовых операций, таких как обновление firmware.

Теперь Вы можете использовать такие программы, как gnuradio-companion или gqrx, чтобы начать экспериментировать с HackRF. Попробуйте примеры, описанные ниже. Если Вы новичок с GNU Radio, то лучше всего начать с просмотра обучающих видео [1] (в русском переводе [2]).

Альтернатива: GNU Radio Live SDR Environment. Это другой прекрасный загружаемый Linux .iso [7] с поддержкой HackRF и, конечно, GNU Radio.

[Установка и настройка ПО]

Как уже упоминалось, самый лучший метод быстрого старта - использование Pentoo Linux. Но иногда Вы можете захотеть установить ПО для HackRF в своей любимой операционной системе (здесь пойдет речь о других вариантах Linux).

Если Ваш менеджер пакетов включает самый последний релиз libhackrf и gr-osmosdr, то используйте их для установки пакетов в дополнение к GNU Radio. Еще один рекомендованный способ - проделать установку этого инструментария с помощью PyBOMBS [8]. Также см. страничку подсказок по установке [9] ПО HackRF на определенных операционных системах и дистрибутивах Linux.

Если что-то пошло не так, то убедитесь, что Ваша система работает, с помощью загрузки в Pentoo. Это позволит быстро определить источник проблем - в аппаратуре или в ПО, и покажет, как должно работать ПО вместе с аппаратурой.

[Тестирование HackRF]

1. Подключите HackRF к порту USB.

2. Запустите команду hackrf_info:

Если все в порядке, то на экране консоли появится примерно такой текст:

[Радиоприем станций FM]

Этот пример получен на основе следующих рабочих источников:

1. Загрузите скрипт FM Radio Receiver на языке Python.

2. Запустите этот скрипт:

3. Соответствующий исходный GRC-файл с аналогичным функционалом для GNU Radio Companion.

[Где получить помощь?]

Сначала попробуйте найти решение своей проблемы в списке FAQ [10], или ответ на вопрос есть в архивах списков рассылки [11].

Помощь в процессе обычного использования HackRF или при разработке ПО ищите на страничке решения проблем HackRF [12]. Это самое лучшее место, где можно задать вопрос, и где другие пользователи могут воспользоваться Вашим решением вопроса в будущем.

Если Вам больше нравится электронная почта, то вместо этого можете использовать список рассылки HackRF-dev [13]. Можете просмотреть старые архивы [11] для прошлых обсуждений.

Во второй части курсовой работы будет рассмотрена настройка ПО в среде Linux для приемника RTL - SDR .

1.Установка ОС Linux .

Для работы приемника необходима ОС Linux Xubuntu 14.04. LTS или KALI . Отличие между ними лишь в том, что в KALI имеются уже некоторые установленные модули, в то время как в Xubuntu все придется устанавливать самим. В данной работе используется Linux Xubuntu . На рис.1. представлены все необходимые модули для работы с приемником:


Рис.1. Модули Linux.

Кратко рассмотрим для чего нужен каждый из модулей:

GNU Radio — это свободная программная утилита под GPL-лицензией для создания программного радио. Она была начата Эриком Блоссом. Она работает для множества различных типов радиоаппаратуры, включая звуковые карты, но в большей степени используется в комбинации с USRP. В основном GNU Radio — это библиотека, содержащая множество стандартных функций обработки сигналов, таких как фильтры и (де)модуляторы.

GNU Radio по умолчанию не содержит специальных средств прослушивания GSM. Однако GNU Radio может быть использовано совместно с другими программными пакетами, такими как AirProbe для выполнения низкоуровневых функций прослушивания GSM, таких как приём и демодуляция.

AirProbe — это проект с открытым исходным кодом, пытающийся создать средства интерфейса для GSM (и в будущем возможно 3G) стандартов мобильной связи. Одна из частей проекта работает с приёмом GSM-сигналов (с использованием функций GNU-радио), в то время как другая часть может быть также использована для интерпретации GSM-сигналов.

Wireshark — программа-анализатор трафика для компьютерных сетей Ethernet и некоторых других. Она «знает» структуру самых различных сетевых протоколов, и поэтому позволяет разобрать сетевой пакет, отображая значение каждого поля протокола любого уровня.

2.Установка GNU Radio 3.6.

После установки Linux переходим к установке GNURadio 3.6.

Необходимо открыть домашний каталог из терминала и набрать следующие команды:

chmod a+x build-gnuradio;

Следующая команда проверяет наличия приемника rtl - sdr :

Установка gqrx (тоже самое, что и SDRSharp на Windows ):

3.Установка Airprobe .

Для установки пакета Airprobe необходимо перейти в созданную ранее директорию в терминале и набрать следующие команды:

Если у вас не работает команда git clone , возможно вместо нее необходимо набрать wget .

4. Установка Wireshark.

Установка Wireshark происходит из центра ПО убунту ( Ubuntu Software Center ) рис.2.


Рис.2. Ubuntu Software Center .

Щелкнуть на нем левой кнопкой мыши. В открытом окне набрать в поиске Wireshark . После того как программа произведет поиск, необходимо найти нужный пакет и нажать кнопку Install .

Т.О. Были рассмотрены модули для работы приемника rtl - sdr ,их назначение и установка.

Для установки gnuradio в Ubuntu / Linux Mint / Debian, введите в Терминал :

gnuradio — Программное обеспечение Radio Radio Radio Toolkit

Подробная информация о пакете:

Программное обеспечение Radio Radio Radio Toolkit

Зависимости:

Библиотека опций программ для C++

Библиотека операционной системы (например, поддержка диагностики)

Портативный многопоточный C++

Библиотека GNU C: общие библиотеки

Библиотека времени исполнения Codec2

Библиотека поддержки GCC

Аналоговые функции gnuradio

Функции gnuradio atsc

Функции gnuradio блокируют

Функции каналов gnuradio

Функции управления функциями gnuradio comedi

Функции цифровой связи gnuradio

Блоки обработки сигналов цифрового телевидения gnuradio

Поддержка Gnuradio FunCube Dongle

Поддержка коррекции ошибок gnuradio

Gnuradio быстрые функции преобразования Фурье

Функции фильтра gnuradio

Функции спутниковых сигналов gnuradio noaa

Функции радиовызовов gnuradio pager

Библиотека контейнеров gnuradio pmt

Функции графического пользовательского интерфейса gnuradio Qt

Gnuradio core runtime

Функции модуляции gnuradio решетки

Функции универсального аппаратного обеспечения gnuradio

Функции видео gnuradio

Функции gnuradio vocoder

Функции gnuradio wxgui

Функции gnuradio zeromq

Библиотека C++ для гибкого ведения журнала (среда выполнения)

Общая библиотека времени исполнения Python (версия 2.7)

Модуль ядра Qt 5

Модуль виджетов Qt 5

Стандартная библиотека GNU GNU v3

Универсальный аппаратный драйвер для продуктов Ettus Research - библиотека

Инструменты с оптимизированным вектором

Интерактивный высокоуровневый объектно-ориентированный язык (ветка 2.x)

Текстовый механизм шаблонов и генератор кода Python

Связывание Python для набора виджета GTK+

Связывание pythonic для библиотек libxml2 и libxslt

Численный Python добавляет быстрый механизм массива на язык Python

Связывание Python с OpenGL (Python 2)

Связывание Python 2 для Qt5

Библиотека времени исполнения генератора Python/C++

Интерфейс Python для wxWidgets Кросс-платформенный инструментарий C++ GUI

Сегодня рассмотрим вариант быстрого старта с RTL-SDR донглами на базе RTL2832 в Linux, немного коснемся софта, сделаем проект простого FM приемника в GNU Radio Companion и рассмотрим некоторые варианты доработок и хаков данного приемника. Знаю, что таких статей в интернете немало, но большинство из них обрывочны или не касаются работы в Linux, так что пусть в блоге будет данный материал как напоминалка, если я что-то забуду со временем.

Небольшая ремарка, я пользуюсь дистрибутивом Elementary OS 5.0 Juno на базе Ubuntu 18.04.2 LTS, поэтому все ниже описываемое будет работать для любых Ubuntu-based дистрибутивов.

Для начала рассмотрим технические характеристики RTL-SDR приемника и как его заставить работать в Linux как можно быстрее. Начнем.

Установка драйвера для работы RTL-SDR

  • Открываем терминал и переходим в домашнюю директорию пользователя.
  • Обновляем репозитории sudo apt update
  • Устанавливаем необходимые утилиты для сборки драйвера
  • Устанавливаем libusb-1.0-0-dev библиотека C, дающая общий доступ к USB устройствам
  • Получаем и собираем драйвер RTL2832U Osmocom
  • Далее нужно внести в blacklist драйвер по умолчанию, который загружается для TV устройства, т.к. он не работает как SDR и будет конфликтовать с новым драйвером. В директории /etc/modprobe.d создаем новый файл blacklist-rtl.conf с одной строкой blacklist dvb_usb_rtl28xxu . После чего необходимо перезагрузить компьютер.
  • Теперь можно проверить работу донгла командой rtl_test -t и получим в терминале вот такую картинку:


Запускаем Gqrx для приема сигналов эфира

Установить программу весьма несложно, инструкция здесь. Настройки приемника максимально простые, я не буду подробно останавливаться на их назначении, потому что данная программа использовалась мной лишь для теста. Просто приложу здесь скриншот настроек:

gqrx rtl sdr

Проверяем на FM диапазоне, если у вас все как на этой картинке, то приемник работает, только не забудьте подключить антенну 🙂


Интересный факт, Gqrx не работает с приемником, включенным через USB2.0 хаб, почему я не выяснил.

Собираем FM приемник в gnuradio-companion

Gnuradio companion (GRC) это программа, которая позволяет в визуальном редакторе собрать схемы обработки сигналов с приемника и прикрутить к ним интерфейс на базе wxWidgets или Qt. Сборка схемы осуществляется базовыми блоками программы. На скриншоте ниже показана, собранная мной, схема обработки сигнала FM и его вывода на звуковую карту моего ноутбука:


Рассмотрим ее немного более подробно. Картинка кликабельна.


Настройки блока RTL-SDR source

Для того, чтобы звуковая карта могла что-то принять надо понижать частоту выборок до допустимого значения и делать мы это будем последовательно в нескольких блоках и начнем с блока Rational Resampler (передискретизация с рациональным коэффициентом, находится в разделе resamplers). Понижение частоты выборок осуществляется коэффициентом Decimation (Децимация).

Материал из Википедии

Децима́ция (от лат. decimatio, от decem — «десять») — уменьшение частоты дискретизации дискретного во времени сигнала путём прореживания его отсчётов.

В данном случае будет использоваться коэффициент int(samp_rate/500e3) и в результате получим коэффициент 4. Значение 500e3 было выбрано, исходя из параметра Quadrature Rate демодулятора FM (который устанавливается далее), равного 500ks/s.

Далее в категории Filters ищем блок Low Pass Filter (фильтр нижних частот) и вставляем его в нашу схему. Устанавливаем частоту среза в 100кГц с помощью переменной cutoff.


Настройки блока Low Pass Filter

Теперь подключаем демодулятор сигнала FM из категории modulators, который называется WBFM Receive. В нем по умолчанию параметр Quadrature Rate равен 500кГц, таким его и оставим. Также в этом блоке производится еще раз децимация с коэффициентом 10, что уменьшает частоту выборок до 50ks/s.

После демодулятора нужно передать поток данных в звуковую карту, для этого надо уменьшить частоту выборок сигнала до 48кГц, это тот поток, который может обработать любая современная звуковая карта. И снова для этого будем использовать блок Rational Resampler, только теперь также используем параметр Interpolation (интерполяция, предварительное умножение со сглаживанием) с коэффициентом 48.


Multiply Const (умножитель на константу, находится в разделе math operators) позволяет регулировать громкость, путем изменения параметра Constant, который будет связан с графическим элементом QT GUI Range через его id volume.


Настройки QT GUI Range

И последний блок это Audio Sink, принимает в себя поток данных с определенным Sample Rate и выдает их в звуковую карту компьютера.

Я сперва заметил, но не мог понять, почему некоторые коннекторы блоков синие, а некоторые оранжевые, после нашел почему. Синие относятся к комплексным данным (Complex data, которые имеют реальную и мнимую составляющие). Оранжевые коннекторы показывают тип данных Float. И что самое интересное, в настройках блоков можно явно преобразовывать типы данных.

После запуска схемы получаем вот такой интерфейс нашего приемника:


Максимально простой, но послушать радио уже можно.

Некоторые варианты доработок и хаков с RTL-SDR

Теперь хотел бы оставить несколько ссылок с интересными хаками и модификациями для RTL-SDR приемников, некоторые я уже проделал, некоторые нет, но это уже история для другой статьи.

Думаю, что в ближайшее время будет больше статей по тематике SDR в блоге, так что подписывайтесь на мой канал в telegram и ждите скорых анонсов.

Похожие публикации по теме:

Как запустить Guake из Double Commander по F9

Как запустить Guake из Double Commander?


Сниффер Zigbee трафика в Linux

LAUNCHXL-CC26x2R1 подготовка рабочего окружения в Linux

программы linux для разработчика электроники и блогера

Мой список программ для Linux (2 года спустя)

Читайте также: