как правильно установить hackrf one gnuradio linux
GnuRadio и все все все
Блог о ЦОС. И не только.
Обзор HackRf One: Часть 2 Настройка софта
Мы подключили 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
Нам потребуется это все. Устанавливаем ПО командой:
$ 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
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)
то причины могут быть в следующем:
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
Original-Maintainer: A. Maitland Bottoms
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
Original-Maintainer: A. Maitland Bottoms
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
Как правильно установить hackrf one gnuradio linux
[Попробуйте запустить 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.
Вы можете ввести в командной строке startx, чтобы запустить графический рабочий стол Pentoo. В первом диалоговом окне примите «default config» (конфигурация по умолчанию). Рабочий стол полезен для программы GNU Radio Companion и других графических приложений, однако это не требуется для базовых операций, таких как обновление firmware.
Теперь Вы можете использовать такие программы, как gnuradio-companion или gqrx, чтобы начать экспериментировать с HackRF. Попробуйте примеры, описанные ниже. Если Вы новичок с GNU Radio, то лучше всего начать с просмотра обучающих видео [1] (в русском переводе [2]).
[Установка и настройка ПО]
[Тестирование HackRF]
1. Подключите HackRF к порту USB.
2. Запустите команду hackrf_info:
Если все в порядке, то на экране консоли появится примерно такой текст:
[Радиоприем станций FM]
Этот пример получен на основе следующих рабочих источников:
• Создание приемника FM на RTL-SDR с помощью GNU Radio Companion (перевод инструкции с сайта instructables.com).
• How To Build an FM Receiver with the USRP in Less Than 10 Minutes site:youtube.com.
1. Загрузите скрипт FM Radio Receiver на языке Python.
2. Запустите этот скрипт:
3. Соответствующий исходный GRC-файл с аналогичным функционалом для GNU Radio Companion.
[Где получить помощь?]
Сначала попробуйте найти решение своей проблемы в списке FAQ [10], или ответ на вопрос есть в архивах списков рассылки [11].
Помощь в процессе обычного использования HackRF или при разработке ПО ищите на страничке решения проблем HackRF [12]. Это самое лучшее место, где можно задать вопрос, и где другие пользователи могут воспользоваться Вашим решением вопроса в будущем.
Если Вам больше нравится электронная почта, то вместо этого можете использовать список рассылки HackRF-dev [13]. Можете просмотреть старые архивы [11] для прошлых обсуждений.
Множество пользователей проводит время в IRC-канале #hackrf на freenode [14]. Канал IRC является великолепным местом для совместного обучения, но это не самое лучшее место для запроса поддержки.
GnuRadio и все все все
Блог о ЦОС. И не только.
HackRF как трансивер: Часть 1. Установка SoapySDR
Наконец появилось время писать статейки. Ну что же, поехали!
Решение было найдено в багтрекере HackRF: https://github.com/mossmann/hackrf/issues/195 Суть ее такова, надо воспользоваться драйвером-прослойкой от программы SoapySDR, который возьмет на себя отслеживание режима «прием/передача»
Предварительные условия: я использую Ubuntu, и GnuRadio из репозитория, и все требуемые зависимости и библиотеки у меня установлены. Если нет, то выполните их установку командой «sudo apt-get install gnuradio hackrf gr-osmosdr libhackrf-dev libhackrf0 libusb-1.0-0 libusb-1.0-0-dev git»
— SoapySDR version: v0.6.0-g5e823fc1
— ABI/so version: v0.6-dev
— Install prefix: /usr/local
— Configuring done
— Generating done
— Build files have been written to: /storage/Temp/SoapySDR/build
6. Компилируем при помощи команды «make»
$ make
Scanning dependencies of target SoapySDR
[ 3%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Device.cpp.o
[ 6%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Factory.cpp.o
[ 9%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Registry.cpp.o
[ 12%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Types.cpp.o
[ 15%] Building CXX object lib/CMakeFiles/SoapySDR.dir/NullDevice.cpp.o
[ 18%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Logger.cpp.o
[ 21%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Errors.cpp.o
[ 24%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Formats.cpp.o
[ 27%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Modules.cpp.o
[ 30%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Version.cpp.o
[ 33%] Building CXX object lib/CMakeFiles/SoapySDR.dir/TypesC.cpp.o
[ 36%] Building CXX object lib/CMakeFiles/SoapySDR.dir/ModulesC.cpp.o
[ 39%] Building CXX object lib/CMakeFiles/SoapySDR.dir/VersionC.cpp.o
[ 42%] Building CXX object lib/CMakeFiles/SoapySDR.dir/DeviceC.cpp.o
[ 45%] Building CXX object lib/CMakeFiles/SoapySDR.dir/FactoryC.cpp.o
[ 48%] Building CXX object lib/CMakeFiles/SoapySDR.dir/LoggerC.cpp.o
[ 51%] Building CXX object lib/CMakeFiles/SoapySDR.dir/TimeC.cpp.o
[ 54%] Building CXX object lib/CMakeFiles/SoapySDR.dir/ErrorsC.cpp.o
[ 57%] Building CXX object lib/CMakeFiles/SoapySDR.dir/FormatsC.cpp.o
[ 60%] Linking CXX shared library libSoapySDR.so
[ 60%] Built target SoapySDR
Scanning dependencies of target SoapySDRUtil
[ 63%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapySDRUtil.cpp.o
[ 66%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapySDRProbe.cpp.o
[ 69%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapyRateTest.cpp.o
[ 72%] Linking CXX executable SoapySDRUtil
[ 72%] Built target SoapySDRUtil
Scanning dependencies of target TestTimeConversion
[ 75%] Building CXX object tests/CMakeFiles/TestTimeConversion.dir/TestTimeConversion.cpp.o
[ 78%] Linking CXX executable TestTimeConversion
[ 78%] Built target TestTimeConversion
Scanning dependencies of target TestFormatParser
[ 81%] Building CXX object tests/CMakeFiles/TestFormatParser.dir/TestFormatParser.cpp.o
[ 84%] Linking CXX executable TestFormatParser
[ 84%] Built target TestFormatParser
Scanning dependencies of target TestKwargsMarkup
[ 87%] Building CXX object tests/CMakeFiles/TestKwargsMarkup.dir/TestKwargsMarkup.cpp.o
[ 90%] Linking CXX executable TestKwargsMarkup
[ 90%] Built target TestKwargsMarkup
[ 93%] Swig source
Scanning dependencies of target _SoapySDR
[ 96%] Building CXX object python/CMakeFiles/_SoapySDR.dir/SoapySDRPYTHON_wrap.cxx.o
[100%] Linking CXX shared module _SoapySDR.so
[100%] Built target _SoapySDR
7. Устанавливаем собранное командой «sudo make install»
$ sudo make install
[sudo] пароль для igor:
[ 60%] Built target SoapySDR
[ 72%] Built target SoapySDRUtil
[ 78%] Built target TestTimeConversion
[ 84%] Built target TestFormatParser
[ 90%] Built target TestKwargsMarkup
[100%] Built target _SoapySDR
Install the project…
— Install configuration: «Release»
— Installing: /usr/local/share/cmake/SoapySDR/SoapySDRConfig.cmake
— Installing: /usr/local/share/cmake/SoapySDR/SoapySDRUtil.cmake
— Installing: /usr/local/share/cmake/SoapySDR/SoapySDRConfigVersion.cmake
— Up-to-date: /usr/local/include/SoapySDR
— Installing: /usr/local/include/SoapySDR/Version.h
— Installing: /usr/local/include/SoapySDR/Modules.hpp
— Installing: /usr/local/include/SoapySDR/Config.h
— Installing: /usr/local/include/SoapySDR/Time.hpp
— Installing: /usr/local/include/SoapySDR/Types.h
— Installing: /usr/local/include/SoapySDR/Types.hpp
— Installing: /usr/local/include/SoapySDR/Version.hpp
— Installing: /usr/local/include/SoapySDR/Formats.hpp
— Installing: /usr/local/include/SoapySDR/Modules.h
— Installing: /usr/local/include/SoapySDR/Formats.h
— Installing: /usr/local/include/SoapySDR/Device.hpp
— Installing: /usr/local/include/SoapySDR/Logger.h
— Installing: /usr/local/include/SoapySDR/Errors.h
— Installing: /usr/local/include/SoapySDR/Registry.hpp
— Installing: /usr/local/include/SoapySDR/Logger.hpp
— Installing: /usr/local/include/SoapySDR/Device.h
— Installing: /usr/local/include/SoapySDR/Time.h
— Installing: /usr/local/include/SoapySDR/Errors.hpp
— Installing: /usr/local/include/SoapySDR/Constants.h
— Installing: /usr/local/include/SoapySDR/Config.hpp
— Installing: /usr/local/lib/libSoapySDR.so.0.6.0
— Up-to-date: /usr/local/lib/libSoapySDR.so.0.6-dev
— Up-to-date: /usr/local/lib/libSoapySDR.so
— Installing: /usr/local/lib/pkgconfig/SoapySDR.pc
— Installing: /usr/local/bin/SoapySDRUtil
— Set runtime path of «/usr/local/bin/SoapySDRUtil» to «»
— Installing: /usr/local/share/man/man1/SoapySDRUtil.1
— Installing: /usr/local/lib/python2.7/dist-packages/_SoapySDR.so
— Set runtime path of «/usr/local/lib/python2.7/dist-packages/_SoapySDR.so» to «»
— Installing: /usr/local/lib/python2.7/dist-packages/SoapySDR.py
8. Приступаем к установке драйвера-прослойки. Переходим в начальный каталог (у меня это /storage/Temp), и получаем исходный код SoapyHackRF
$ cd /storage/Temp/
$ git clone https://github.com/pothosware/SoapyHackRF.git
Клонирование в «SoapyHackRF»…
remote: Counting objects: 257, done.
remote: Total 257 (delta 0), reused 0 (delta 0), pack-reused 257
Получение объектов: 100% (257/257), 49.82 KiB | 0 bytes/s, готово.
Определение изменений: 100% (170/170), готово.
Проверка соединения… готово.
9. Заходим в SoapyHackRF
$ cd SoapyHackRF/
11. Устанавливаем драйвер
$ sudo make install
[sudo] пароль для igor:
Scanning dependencies of target HackRFSupport
[ 20%] Building CXX object CMakeFiles/HackRFSupport.dir/HackRF_Registation.cpp.o
[ 40%] Building CXX object CMakeFiles/HackRFSupport.dir/HackRF_Settings.cpp.o
[ 60%] Building CXX object CMakeFiles/HackRFSupport.dir/HackRF_Streaming.cpp.o
/storage/Temp/SoapyHackRF/HackRF_Streaming.cpp: In member function ‘virtual void SoapyHackRF::releaseReadBuffer(SoapySDR::Stream*, size_t)’:
/storage/Temp/SoapyHackRF/HackRF_Streaming.cpp:734:22: warning: unused variable ‘data’ [-Wunused-variable]
SoapyHackRFStream * data = (SoapyHackRFStream*)stream;
^
/storage/Temp/SoapyHackRF/HackRF_Streaming.cpp: In member function ‘virtual void SoapyHackRF::releaseWriteBuffer(SoapySDR::Stream*, size_t, size_t, int&, long long int)’:
/storage/Temp/SoapyHackRF/HackRF_Streaming.cpp:793:22: warning: unused variable ‘data’ [-Wunused-variable]
SoapyHackRFStream * data = (SoapyHackRFStream*)stream;
^
[ 80%] Building CXX object CMakeFiles/HackRFSupport.dir/HackRF_Session.cpp.o
[100%] Linking CXX shared module libHackRFSupport.so
[100%] Built target HackRFSupport
Install the project…
— Install configuration: «Release»
— Installing: /usr/local/lib/SoapySDR/modules0.6-dev/libHackRFSupport.so
— Set runtime path of «/usr/local/lib/SoapySDR/modules0.6-dev/libHackRFSupport.so» to «»
12. Теперь нам надо проверить работу драйвера. Подключите HackRF к компьютеру, перейдите в начальный каталог, и выполните команду «SoapySDRUtil —probe=»driver=hackrf»»
$ cd /storage/Temp/
$ SoapySDRUtil —probe=»driver=hackrf»
######################################################
## Soapy SDR — the SDR abstraction library
######################################################
—————————————————-
— Device identification
—————————————————-
driver=HackRF
hardware=HackRF One
clock source=internal
part /> serial=000000000000000015d463dc186ca825
version=2014.08.1
—————————————————-
— Peripheral summary
—————————————————-
Channels: 1 Rx, 1 Tx
Timestamps: NO
Other Settings:
* Antenna Bias — Antenna port power control.
как правильно установить hackrf one gnuradio linux
—————————————————-
— RX Channel 0
—————————————————-
Full-duplex: NO
Supports AGC: NO
Stream formats: CS8, CS16, CF32, CF64
Native format: CS8 [full-scale=128]
Stream args:
* Buffer Count — Number of buffers per read.
как правильно установить hackrf one gnuradio linux
Antennas: TX/RX
Full gain range: [0, 116] dB
LNA gain range: [0, 40] dB
VGA gain range: [0, 62] dB
AMP gain range: [0, 14] dB
Full freq range: [0, 7250] MHz
RF freq range: [0, 7250] MHz
Sample rates: [1, 20] MHz
Filter bandwidths: [1.75, 28] MHz
—————————————————-
— TX Channel 0
—————————————————-
Full-duplex: NO
Supports AGC: NO
Stream formats: CS8, CS16, CF32, CF64
Native format: CS8 [full-scale=128]
Stream args:
* Buffer Count — Number of buffers per read.
как правильно установить hackrf one gnuradio linux
Antennas: TX/RX
Full gain range: [0, 61] dB
VGA gain range: [0, 47] dB
AMP gain range: [0, 14] dB
Full freq range: [0, 7250] MHz
RF freq range: [0, 7250] MHz
Sample rates: [1, 20] MHz
Filter bandwidths: [1.75, 28] MHz
Как видите, наш HackRF был успешно опознан. Значит остался последний шаг.
Теперь у нас есть установленный драйвер SoapyHackRf, и в следующих статьях мы наладим работу в режиме трансивера с помощью GnuRadio.
HackRF как трансивер: Часть 1. Установка SoapySDR : 13 комментариев
У кого не встали дрова — не совокупляйтесь лишний раз, ставьте по инструкции разраба на Github. У меня по инструкции в статье не взлетел.
Инструкция HackRF One
Замечу, что эта статья написана только для образовательных целей. Мы никого ни к чему не призываем, изучайте в целях ознакомления!
Что такое SDR — Software-defined radio
А вот определение и Википедии:
Ну, то есть, это такое радио, в котором для смены частоты не нужно крутить колёсико.
Какое железо выбрать для SDR?
Бытовых (любительских) SDR, которые можно просто купить в магазине, очень много: Funcube Dongle, RTL-SDR, USRP, OsmoSDR, BladeRF, HackRF, AirSpy, устройства LimeSDR USB Type-A и другие. Вот здесь собран большой список с их характеристиками.
Одним из самых популярных устройств является HackRF. У этого устройства большой диапазон поддерживаемых частот, а также приемлемая (по сравнению с некоторыми другими моделями) цена.
HackRF не дешёвый. Есть намного более дешёвые модели, но, понятно, и с более скромными характеристиками (меньше поддерживаемых частот). Есть более продвинутые чем HackRF модели, но их цена (для меня) слишком высокая. Возможно, если вас интересует не весь спектр частот, а какие-то определённые частоты, то вы сможете найти другое устройство, которое будет работать лучше с этими частотами или стоить дешевле чем HackRF. #HackRF — это довольно универсальное устройство с доступной ценой.
HackRF
HackRF ONE— это дешёвая, с открытым исходным кодом платформа Software Defined Radio.
HackRF One имеет следующие характеристики:
Как можно увидеть, у устройства довольно медленный интерфейс USB 2.0, а также частота пропускания только 20 MHz, то есть это не самый «ТОП». Но для обучения этого хватит. К тому же, за последнее время на устройство сильно снизилась цена. И ещё, хотя в характеристиках указана поддерживаемая частота 1 MHz – 6 GHz, но можно выйти за этот диапазон чуть ниже и чуть выше.
У этого устройства прошивка с открытым исходным кодом. Оно совместимо с GNU Radio, SDR# и другими программами. Хорошая совместимость с Linux.
Меры предосторожности для HackRF
Нельзя запускать приём или передачу данных без подключённой антенны! Это очень важно, поскольку прибор не контролирует, подсоединена ли антенна и в любом случае под нагрузкой подаёт электричество, поэтому без антенны HackRF может просто сгореть.
Либо вместо антенны используйте заглушку — имеется ввиду не пластиковые красные заглушки, которые защищают от пыли, а заглушку с функцией потребления нагрузки — золотистая «гайка», которая наворачивается на гнездо антенны
У прибора три одинаковых SMA female разъёма: два на одной стороне и один на другой стороне. Разъём для антенны это тот, который размещён один (другие два предназначены для синхронизации нескольких устройств HackRF).
Значение кнопок и индикаторов HackRF
При подключении к компьютеру HackRF на нём загораются индикаторы.
Первые три индикатора справа:
Это индикаторы питания различных элементов. Они могут гаснуть при включении режима экономии энергии. 1V8 и RF могут гаснуть, если HackRF ничего не делает. Но при работе HackRF (приём и передача данных) все три должны гореть. Если какой-либо из них не горит, то это означает, что имеется проблема.
Следующий:
Когда он горит, то это означает, что компьютер «общается» с HackRF как с USB устройством. Этот индикатор загорается чуть позднее первых трёх.
Последние два:
Последние три индикатора находятся под управлением программного обеспечения. Поэтому можно установить пользовательскую прошивку и переназначить их функции.
Что касается цветов, то они вообще ничего не означают: цвета разные только чтобы вы могли отличать светодиоды друг от друга.
Теперь рассмотрим кнопки
Первая кнопка:
Следующая кнопка:
Эта кнопка функционально только при включении устройства или нажатии кнопки RESET. Всё остальное время эта кнопка не выполняет никаких функций, поэтому при установлении пользовательской прошивки этой кнопке можно назначить какую-нибудь функцию ввода.
Как HackRF вывести из состояния «кирпича»?
Если вы прошили устройство так, что оно больше не работает, то вам нужно загрузиться используя DFU загрузчик — он прописан в ROM, поэтому его невозможно испортить. Для перехода в режим DFU вам нужно зажать эту кнопку, всё ещё удерживая эту кнопку отключить USB кабель и, продолжая удерживать эту кнопку, вновь подключить USB кабель. Если загорится только индикатор 3V3, но не загорятся другие, это означает, что вы успешно вошли в DFU режим
Ещё один способ перейти в режим DFU, это зажать кнопку DFU и при нажатой кнопке нажать и отпустить кнопку RESET.
В этом режиме вы можете использовать соответствующую программу на вашем компьютере для перепрошивки HackRF.
Кабель для HackRF — почему крайне желательно кабель с шумоподавлением?
Для HackRF много разных дополнительных опций, например, экранированный чехол. На самом деле, по-настоящему важной опцией, результат от которой вы заметите сразу, является качественный USB кабель с возможностью подавлением шума.
Выбранный вами USB может иметь большое влияние на то, что вы видите используя ваш HackRF, особенно используя его на частотах в районе 120 и 480 MHz, на которых USB делает всю свою работу.