Изучаем возможности HackRF One
8 сентября 2025
Ранее в этом блоге я рассказывал о LimeSDR и RTL-SDR. Не менее интересным устройством в плане отношения цены и качества является HackRF One. Давайте разберемся, что же он из себя представляет.
HackRF One является открытым железом. Проект разработан Michael Ossmann в 2014-м году. Живет в репозитории на GitHub под лицензией GPL 2.0. Благодаря своей открытости HackRF доступен и сравнительно дешев, ведь производить его может кто угодно. Свой экземпляр я приобрел в популярном интернет-магазине за 5900 руб, или ~74$ по курсу на день покупки:
Платы бывают разных ревизий. На моей написано «r10». Это наиболее новая ревизия на сегодняшний день. Для HackRF есть модель корпуса, которую можно напечатать на 3D-принтере. Также доступны готовые алюминиевые корпуса.
Характеристики HackRF по сравнению с RTL-SDR и 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:
hackrf_info
Вывод утилиты hackrf_info
показал, что в моем HackRF используется последняя на сегодняшний день прошивка 2024.02.1. При необходимости прошивку можно обновить. Процесс описан в документации.
Попробуем послушать эфир. Для этого воспользуемся старым-добрым Gqrx:
Gqrx на современном GNOME не добавляется должным образом в Dock. Данная проблема есть у многих программ. К счастью, исправить ее просто.
Создаем ~/.local/share/applications/Gqrx.desktop следующего содержания:
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 радиостанции:
Выглядит, как если бы приемник работал.
Для приема коротких волн я воспользовался самодельным диполем:
Весь диапазон 40 метров как на ладони, без алиасинга и апконвертеров.
Чувствительность на КВ была проверена инструментально на частоте 14 МГц. С включенным предуселителем (ползунок RF в положении +14 dB) HackRF отчетливо принимает -120 dBm. Сигнал с уровнем -126 dBm технически тоже принимает, хотя его и трудновато разбирать в шумах. Достойный результат.
Надо бы еще проверить работу на передачу. Подключаем HackRF к анализатору спектра. В консоли выполняем команду:
Вообще-то, утилита hackrf_transfer
предназначена для записи и передачи IQ-данных. Но также предусмотрен флаг -c
для передачи несущей. Число 127 означает максимальный уровень. Флаги -a 1 -x 47
включают ВЧ усилитель и выбирают максимальное усиление УУН соответственно. Флаг -C
предназначен для коррекции частоты. В данном случае коррекция составляет 58 ppm.
Получаем такую картину:
Уровень сигнала весьма внушителен. Его с запасом хватает, чтобы раскачать линейный УМ на паре RD15 и получить радиолюбительский QRP трансивер. А для какого-нибудь WSPR маяка можно обойтись и без усилителя. Понадобятся только полосовые фильтры.
Также проверим зависимость уровня передаваемого сигнала от частоты. Для это воспользуемся небольшим скриптом на Python:
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 МГц получаем такую картину:
Измерения проводились через один метр кабеля RG-58. Потери в кабеле не были скомпенсированы. На частоте 435 МГц они составляют около 0.4 dB.
Чем примечателен HackRF, так это своей востребованностью на протяжении вот уже 10+ лет. По железным меркам это очень много. Удивительно, что элементная база еще доступна. По-видимому, причин такого спроса несколько.
Во-первых, это изначально правильно выбранный компромисс между ценой и предоставляемыми возможностями. Во-вторых, открытость проекта. Открытый проект поддерживается и улучшается энтузиастами на протяжении десятков лет. Когда проект открыт, он не может взять и исчезнуть. Ведь собрать HackRF для себя или на продажу может кто угодно. Если я делаю проект на базе HackRF, то желающие всегда смогут его повторить. В том числе, и лет через 20, потому что HackRF существует в огромном количестве экземпляров. Он еще долго будет доступен с рук даже после того, как исчезнет элементная база. И наконец, в-третьих, HackRF просто был одним из первых доступных SDR. Когда проект первый, то его сообщество и его экосистема при прочих равных больше, чем у проектов, появившихся позднее.
Вот и получается, что по прошествии лет HackRF не только не устаревает, а напротив, становится еще более популярным и зрелым проектом.
Метки: Linux, SDR, Беспроводная связь, Электроника.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.