Краткая инструкция как начать работать с LimeSDR-Mini на Windows 10
Данный метод проверен на Windows 10 версии 1709, 1803.
Краткая инструкция как начать работать с LimeSDR-Mini на Windows 10
Данный метод проверен на Windows 10 версии 1709, 1803.
В один прекрасный момент хочется релизовать что-то особое, что отсутвует в стандартной поставке GnuRadio. Выход из этого один — написание своего блока. Информациии об этом не так много, и большая часть информации сконцентрированна в официальной документации.
В этой статье я покажу как написать простой вспомогательный блок для GnuRadio используя Python. Это блок можно будет использовать для простого управления внешними устройствами, например включения усилителя, переключения антенного коммутатора и прочих вещей.
14 мая я выступлю с докладом «Технология SDR: радиоотмычка XXI века» на нижегородском DEF CON. Все интересующиеся могут получить дополнительную информацию на сайте http://defcon-nn.ru/
В составе GnuRadio существует такой блок как M&M clock recovery. Его задача — восстанавливать семплы из сигнала с одинаковой частотой и фазой, отправляемые передатчиком. Это необходимо, к примеру, когда вы хотите извлечь символы из асинхронного цифрового сигнала. Блок позволяет определить с центры единиц и нулей в поступающем сигнале.
По итогам трех последний статей мы имеем граф для приема, и граф для передачи. От полнофункционального трансивера на HackRF нас отделяет лишь отсутсвие возможности переключиться с приема на передачу быстро. Давайте исправлять это упущение!
Включаем часть схемы ответственной за прием, которую мы временно выключили в прошлой части.
В прошлой статье мы успешно собрали NBFM приемник на HackRF. Теперь соберем передатчик.
Выделите все блоки на схеме кроме переменных, и нажмите кнопку «D» чтобы отключить их.
Схема передатчика еще проще чем схема приемника. Вот она:
В процессе исследования чужих графов GnuRadio, увидел использование такого блока как «Patterned Interleaver». Что это? Как работает? Надо разобраться.
Мы подключили HackRf к ноутбуку, и увидели что он определяется корректно. Настала пора разобраться с программной частью. Для начала нам нужно установить ПО для HackRf. К счастью все необходимое ПО уже имеется в репозитории Ubuntu. Посмотрим что там есть.
igor@ghost64:~$ apt-cache search hackrf
gqrx-sdr — Software defined radio receiver
hackrf — Software defined radio peripheral
libhackrf-dev — Software defined radio peripheral
libhackrf0 — Software defined radio peripheral
gqrx — Software defined radio receiver
gr-osmosdr — Gnuradio blocks from the OsmoSDR project
Давай разберемся кто есть кто.
hackrf — утилиты для взаимодействия с приемником
libhackrf0 — библиотека для поддержки управления HackRf сторонними приложениями
libhackrf-dev — пакет содержащий заголовочные файлы, и прочие вещи, необходимые нам, если мы сами захотим скомпилировать какую-нибудь программу с поддержкой HackRf
Нам потребуется это все. Устанавливаем ПО командой:
$ sudo apt-get install hackrf libhackrf0 libhackrf-dev
Посмотрим что за утилиты мы установили. Пакет hackrf содержит следующие программы:
hackrf_info — вывод информации о устройстве.
hackrf_spiflash — программа для обновления прошивки в контроллере
hackrf_cpldjtag — программа для обновления прошивки в CLPD микросхеме.
hackrf_transfer — многофункциональная программа для передачи/приема данных
hackrf_max2837, hackrf_rffc5071, hackrf_si5351c — насколько я понял, данные программы служат для модификаций значений регистров в микросхемах. Возможно они нужны для разработиков прошивок в отладочных целях.
Запустим уже что-нибудь? 🙂 Что попроще, к примеру hackrf_info
$ hackrf_info
Found HackRF board.
Board ID Number: 2 (HackRF One)
Firmware Version: 2014.08.1
Part ID Number: 0x00584f5e 0x00584f5e
Serial Number: 0x00000000 0x00000000 0x15d463dc 0x186ca825
Вся информация о оборудовании как на ладони. Наиболее полезное тут для нас это Firmware Version. Сейчас в HackRf прошита самая последняя версия 2014.08.1. Проверять наличие новых прошивок нужно тут http://sourceforge.net/projects/hackrf/files/
Если в результате запуска команды вы получили ошибку:
hackrf_open() failed: HACKRF_ERROR_NOT_FOUND (-5)
то причины могут быть в следующем:
1. Отсутствие прав доступа к USB устройствам у текущего пользователя.
Проверить это можно запустив утилиту hackrf_info от имени root пользователя. Если от имени рута программа успешно считывает информацию с HackRf, а от пользователя не хочет, то значит проблема с правами. Исправить это можно, написав правило для udev
Создайте файл /etc/udev/rules.d/52-hackrf.rules , и впишите в него следующие правила:
ATTR{idVendor}==»1d50″, ATTR{idProduct}==»604b», SYMLINK+=»hackrf-jawbreaker-%k»
, MODE=»660″, GROUP=»plugdev»
ATTR{idVendor}==»1d50″, ATTR{idProduct}==»6089″, SYMLINK+=»hackrf-one-%k», MODE=
«660», GROUP=»plugdev»
ATTR{idVendor}==»1fc9″, ATTR{idProduct}==»000c», SYMLINK+=»hackrf-dfu-%k», MODE=
«660», GROUP=»plugdev»
Сохраните файл, и либо перезагрузите компьютер, либо перезапустите демон udev командой udevadm control --reload-rules
. Как вы уже догадались, этими тремя правилами мы задаем для устройств с определенными VendorID и ProductID права доступа 660, и доступ членам группы plugdev.
2. Другая причина — устаревшая версия программ и библиотек для HackRf
HackRf One поддерживается ПО версии 2014.04.1 и новее. Может получиться так, что в репозитории окажется старая версия ПО. Проверить версию установленного ПО в Debian/Ubuntu можно при помощи команды apt-cache show hackrf
Вот небольшая иллюстрация.
Ноут с Ubuntu 14.04 LTS
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION=»Ubuntu 14.04.2 LTS»
В репозитории — устаревший софт.
$ apt-cache show hackrf
Package: hackrf
Priority: extra
Section: universe/libs
Installed-Size: 120
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: A. Maitland Bottoms <bottoms@debian.org>
Architecture: i386
Version: 2013.07.1.16.d5cebd-2 — с этой версией жизни нет!
Depends: libhackrf0 (= 2013.07.1.16.d5cebd-2), libc6 (>= 2.7)
Filename: pool/universe/h/hackrf/hackrf_2013.07.1.16.d5cebd-2_i386.deb
Size: 29708
MD5sum: e4e8542460419a3c0e577dbd6f26ffe9
SHA1: 777ef6d304f2c5606d755291dc123c7c800ab42e
SHA256: 3200d2819cf3f67614f3dd1d2b81fe7adb5443be89e577d0499ae464ab931b21
А вот другой ноут с относительно свежей системой
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.10
DISTRIB_CODENAME=utopic
DISTRIB_DESCRIPTION=»Ubuntu 14.10″
$ apt-cache show hackrf
Package: hackrf
Priority: extra
Section: universe/libs
Installed-Size: 124
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: A. Maitland Bottoms <bottoms@debian.org>
Architecture: i386
Version: 2014.04.1-2 — тут в репозитории свежая версия.
Depends: libhackrf0 (= 2014.04.1-2), libc6 (>= 2.7)
Filename: pool/universe/h/hackrf/hackrf_2014.04.1-2_i386.deb
Size: 26718
MD5sum: 2658d15c2d09328049850cc41fb4e643
Выхода из этой ситуации два: либо ждать когда обновят софт в репозитории (ждать этого можно вечно 😉 ) или собрать свежий софт самому.
Собираем его так:
1. Ставим нужный для сборки софт
sudo apt-get install build-essential cmake libusb-1.0-0-dev
2. Удаляем неактуальный софт.
sudo apt-get remove hackrf libhackrf-dev libhackrf0
3. Получаем свежие версии исходников:
git clone https://github.com/mossmann/hackrf.git
4. Идем в папку host
cd hackrf/host/
5. Выполняем следующие команды
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
6. Теперь попытаемся выполнить команду hackrf_info (если у вас на эту команду bash выругался что-то вроде «команда не найдена», то просто откройте новое терминальное окно, и выполните в нем)
$ hackrf_info
Found HackRF board.
Board ID Number: 2 (HackRF One)
Firmware Version: 2014.08.1
Part ID Number: 0xa000cb3c 0x00584f5e
Serial Number: 0x00000000 0x00000000 0x15d463dc 0x186ca825
Ура! Работает!
Итак, софт мы поставили, и оборудование успешно определяется. Настала пора попробовать использовать HackRf как источник сигнала в GnuRadio.
Поддержку HackRf в GnuRadio обеспечивает OsmoSDR source (тот самый, что используется для работы с RTL донглами). Даже если у вас он уже был установлен ранее, то его надо будет пересобрать для поддержки HackRF. Сборка выполняется по инструкции из этой статьи . При сборке следует обратить внимание на вывод команды cmake. В ней он указывает какие компоненты он обнаружил и активировал. Запись о HackRF должна присутствовать в разделе «gr-osmosdr enabled components»
— ######################################################
— # gr-osmosdr enabled components
— ######################################################
— * Python support
— * FUNcube Dongle
— * IQ File Source
— * Osmocom RTLSDR
— * RTLSDR TCP Client
— * HackRF Jawbreaker
— * RFSPACE Receivers
После пересборки/установки OsmoSDR можно попробовать проверить работу HackRF с GnuRadio послушав FM станции с помощью графа приемника fm_radio_rx.grc Не забудьте поменять в этом графе частоту семплирования с 5 миллионов, до 8 (минимально поддерживаемую HackRF)
Вот как-то так оно работает. Не следует удивляться уровню сигнала, так как это принималось все квартире на антенну от Baofeng. 🙂
Наступила весна. Солнышко начало пригревать, запели птички. И помимо этих чудесных вещей случилось долгожданное событие — ко мне приехал заказаный перед Новым Годом HackRf! Он попал ко мне в руки буквально пару часов назад, и мне нетерпится поиграть с ним. Пока — распаковка и обзор. Открываем волшебную коробочку!
Как я уже писал в предыдущей заметке, я удачно победил приемник PCR-1000 и смог им управлять из GnuRadio. Все прекрасно, но вот хочется удобств. Хочется видеть спектр, и не упускать интересные вещи происходящие на пару килогерц от той частоты на которой ты сейчас находишься. В родном софте для PCR1000 имеется возможность видеть спектр. Изучив ситуацию поглубже я обнаружил что все данные для отображения на спектре передаются непосредственно через COM порт, а программа лишь рисует пики. Повозившись немного с этими данными, и попробовав их отобразить, я плюнул на это дело и решил искать обходные пути. И этот путь был найден.
Читать далее
Пару лет назад, я приобрел свой первый более-менее серьезный радоприемник: Icom PCR-1000. Одной из причин, по которой я выбрал именно его, было управление по RS-232. Итак, получил я его, подключил, погонял под Windows. Красота! Лишь одно омрачало прекрасное будущее, я пользуюсь Linux и FreeBSD, а родного софта от Icom под *nix системы как-то не наблюдалось.
Пошарившись в Интернете, я обнаружил что протокол управления приемником довольно прост, а посему почему бы не попробовать написать программу управления самому? Что ж, расчехляем свой любимый текстовый редактор, понеслись!
Читать далее
В наших прошлых примерах мы уже встречались с блоком Frequency Xlating FIR Filter. И как вы можете помнить у этого блока есть загадочное поле Taps (отсчеты). Мы даже вводили туда какую-то муру, примерно нам понятную (полоса фильтра, ширина переходного периода и др.). Но почему «отсчеты»? Зачем они нам нужны? Попробуем с этим разобраться.
Читать далее
Так как мне сегодня немного лень что-либо писать, то сил моих хватило лишь на пару строчек. 🙂
Итак, горячие клавиши для GnuRadio:
«D» — выключить блок (Disable)
«E» — включить блок (Enable)
«↓» и «↑» — сменить тип данных для блока (Complex, Float, Byte и т.д.)
«←» и «→» — вращать блок по часовой стрелке и против часовой стрелки.