Изучаем возможности HackRF One

8 сентября 2025

Ранее в этом блоге я рассказывал о LimeSDR и RTL-SDR. Не менее интересным устройством в плане отношения цены и качества является HackRF One. Давайте разберемся, что же он из себя представляет.

HackRF One является открытым железом. Проект разработан Michael Ossmann в 2014-м году. Живет в репозитории на GitHub под лицензией GPL 2.0. Благодаря своей открытости HackRF доступен и сравнительно дешев, ведь производить его может кто угодно. Свой экземпляр я приобрел в популярном интернет-магазине за 5900 руб, или ~74$ по курсу на день покупки:

HackRF One версии r10

Платы бывают разных ревизий. На моей написано «r10». Это наиболее новая ревизия на сегодняшний день. Для HackRF есть модель корпуса, которую можно напечатать на 3D-принтере. Также доступны готовые алюминиевые корпуса.

Характеристики HackRF по сравнению с RTL-SDR и LimeSDR:

                                RTL-SDR    HackRF    LimeSDR
------------------------------------------------------------
Частоты [МГц]                   24-1766    1-6000     ?-3800
АЦП [бит]                             8         8         12
Частота дискретизации [MS/s]        3.2        20       61.4
Полоса пропускания [МГц]            2.4        20         61
Работа на передачу                  нет       да*         да
Multiple input/output (MIMO)        нет       нет        2x2
Стоимость в РФ на 2025 [USD]        ~25       ~75       ~850

Вопрос о том, на что влияют разрядность АЦП и частота дискретизации, в свое время подробно разбирался в посте Шпаргалка по работе DSP фильтров.

Основными компонентами HackRF являются микроконтроллер NXP LPC4320, ПЛИС Xilinx XC2C64A, АЦП/ЦАП MAX5864 и трансивер MAX2839. Структурная схема есть в документации. Больше деталей можно получить, открыв проект платы в KiCAD.

HackRF работает в полудуплексе — прием и передача происходят поочередно. Однако на практике это не такая уж большая проблема. Учитывая стоимость, в случае необходимости можно просто использовать несколько HackRF.

Практика показывает, что RTL-SDR и LimeSDR плохо подходят для приема коротких волн, частот от 3 до 30 МГц. Что досадно, ведь там происходит много интересного. RTL-SDR может принимать КВ в режиме direct sampling, однако делает это с алиасингом. В LimeSDR заявлен прием от 0.1 МГц. Но на самом деле производитель нас дурит. Приемник на этих частотах абсолютно глух, и нужен апконвертер. Меня особенно интересовало, насколько хорошо HackRF принимает КВ.

Эксперименты проводились на Xiaomi Redmibook Pro 16 под управлением Ubuntu 24.04 LTS. Первым делом нужно убедиться, что HackRF виден в системе, будучи подключенным по USB:

sudo apt install hackrf
hackrf_info

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

Попробуем послушать эфир. Для этого воспользуемся старым-добрым Gqrx:

sudo apt install --no-install-recommends gqrx-sdr

Gqrx на современном GNOME не добавляется должным образом в Dock. Данная проблема есть у многих программ. К счастью, исправить ее просто.

Создаем ~/.local/share/applications/Gqrx.desktop следующего содержания:

[Desktop Entry]
Type=Application
Name=Gqrx
StartupWMClass=gqrx
Exec=gqrx
Terminal=false
Icon=gqrx
Categories=AudioVideo;Audio;Qt;HamRadio;
Keywords=SDR;Radio;HAM;

При первом запуске Gqrx попросит выбрать устройство. В выпадающем списке находим наш HackRF. Прочие настройки оставляем как есть.

В комплекте с HackRF шла небольшая телескопическая антеннка. По традиции, первым делом попробуем принять на нее вещательные FM радиостанции:

Прием FM-радиостанций на HackRF

Выглядит, как если бы приемник работал.

Для приема коротких волн я воспользовался самодельным диполем:

Прием радиолюбительского диапазона 40 метров на HackRF

Весь диапазон 40 метров как на ладони, без алиасинга и апконвертеров.

Чувствительность на КВ была проверена инструментально на частоте 14 МГц. С включенным предуселителем (ползунок RF в положении +14 dB) HackRF отчетливо принимает -120 dBm. Сигнал с уровнем -126 dBm технически тоже принимает, хотя его и трудновато разбирать в шумах. Достойный результат.

Надо бы еще проверить работу на передачу. Подключаем HackRF к анализатору спектра. В консоли выполняем команду:

hackrf_transfer -C 58 -f 15000000 -a 1 -x 47 -c 127

Вообще-то, утилита hackrf_transfer предназначена для записи и передачи IQ-данных. Но также предусмотрен флаг -c для передачи несущей. Число 127 означает максимальный уровень. Флаги -a 1 -x 47 включают ВЧ усилитель и выбирают максимальное усиление УУН соответственно. Флаг -C предназначен для коррекции частоты. В данном случае коррекция составляет 58 ppm.

Получаем такую картину:

Передача несущей при помощи HackRF

Уровень сигнала весьма внушителен. Его с запасом хватает, чтобы раскачать линейный УМ на паре RD15 и получить радиолюбительский QRP трансивер. А для какого-нибудь WSPR маяка можно обойтись и без усилителя. Понадобятся только полосовые фильтры.

Также проверим зависимость уровня передаваемого сигнала от частоты. Для это воспользуемся небольшим скриптом на Python:

#!/usr/bin/env python3

import subprocess

while True:
    for freq in range(10, 5011): # [1, 501] MHz
        print(f"== {freq}00000 ==")
        cmd = "timeout 0.5 hackrf_transfer "
        cmd += f"-C 58 -f {freq}00000 -x 47 -a 1 -c 127"
        subprocess.call(cmd, shell=True)

На интервале от 1 до 501 МГц получаем такую картину:

Равномерность уровня передаваемого сигнала HackRF

Измерения проводились через один метр кабеля RG-58. Потери в кабеле не были скомпенсированы. На частоте 435 МГц они составляют около 0.4 dB.

Чем примечателен HackRF, так это своей востребованностью на протяжении вот уже 10+ лет. По железным меркам это очень много. Удивительно, что элементная база еще доступна. По-видимому, причин такого спроса несколько.

Во-первых, это изначально правильно выбранный компромисс между ценой и предоставляемыми возможностями. Во-вторых, открытость проекта. Открытый проект поддерживается и улучшается энтузиастами на протяжении десятков лет. Когда проект открыт, он не может взять и исчезнуть. Ведь собрать HackRF для себя или на продажу может кто угодно. Если я делаю проект на базе HackRF, то желающие всегда смогут его повторить. В том числе, и лет через 20, потому что HackRF существует в огромном количестве экземпляров. Он еще долго будет доступен с рук даже после того, как исчезнет элементная база. И наконец, в-третьих, HackRF просто был одним из первых доступных SDR. Когда проект первый, то его сообщество и его экосистема при прочих равных больше, чем у проектов, появившихся позднее.

Вот и получается, что по прошествии лет HackRF не только не устаревает, а напротив, становится еще более популярным и зрелым проектом.

Метки: , , , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.