В арсенал радио-хакера: широкополосная замена RTL-SDR до 6 ГГц

image

Недавно я прочитал статью, в которой автор пророчит нам веселое, но светлое будущее. Кроме всего прочего, он говорит дословно следующее: «Если мы ничего не можем поделать с тем, что государство следит за нами, мы должны иметь право следить за ним».

Замечательный тезис! Даешь гонку радио-вооружений!

В правовых вопросах мне предложить нечего, а вот в плане техники можно внести свою малую толику. Дело, конечно, не только в радио. Есть много других информационных и технических средств, которыми надо обладать для такой слежки. Я сосредоточусь на радио-технических, так как это мне ближе по профессии.

Вы, возможно, уже читали про демонов и про робингудов. Продолжая работу в этом направлении, хочу рассказать о новой плате SDR-приемника.

Она построена на всем известных однокристальном трансивере AD9363(4) и USB3-контроллере CYUSB3014.

Кто-нибудь обязательно захочет забросать меня камнями за изобретение велосипедов. Если дочитаете до конца, то — милости просим.

Цель разработки платы — создать приемник со следующими свойствами:


  • компактный SDR-приемник;
  • простая схемотехника;
  • малое потребление;
  • широкий диапазон частот;
  • интеграция с симметричной антенной;
  • большая полоса приема;
  • вход внешней опорной частоты и синхронизации;
  • поддержка GNURadio.

Первые три пункта стали возможными благодаря способности CYUSB принимать данные от сложных источников. Таким образом, мы можем избавиться от FPGA на выходном интерфейсе микросхемы трансивера. AD9364 с режиме Dual Port Full Duplex выдает данные, клок и сигнал FRAME, по которому синхронизируются квадратурные составляющие выходного цифрового сигнала.

image

Временные диаграммы:

image

К счастью, интерфейс GPIFII микросхемы CYUSB3014 при определенной настройке может опираться на сигнал типа FRAME для синхронизации квадратурных составляющих. Надо лишь завести его в схему GPIFII и заставить ее ждать первого фронта FRAME и потом уже не обращать на него внимания. В диаграмме состояний GPIFII это выглядит так:

image

Передающий тракт трансивера выключаем, нам нужен только приемник. Его и нельзя завести напрямую в CYUSB, так как в контроллере есть баг, который проявляется только при работе на передачу и который можно исправить только с помощью FPGA.

Схема вот такая, очень простая:
image

Четвертый пункт, широкий диапазон частот, обеспечивает сам трансивер. И мы ему не мешаем — не ставим там никакого трансформатора. Чудно, но таким образом мы получаем возможность подключить симметричную антенну прямо ко входу приемника. Всегда можно, пожертвовав характеристиками, поставить в одно плечо 50 Ом и подключить обычную антенну.

image

Большая полоса приема обеспечивается интерфейсом USB3. Контроллер CYUSB3014 достигает скорости передачи данных 400 МБайт/с, что соответствует 100 МГц полосы 16-ти разрядного квадратурного сигнала. Это даже больше, чем может выдать приемник.

Разъемы внешней опоры и синхронизации сделаны сбоку, на переднем крае не поместились. Разъем внешней синхронизации понадобится для местоопределения помех, за которыми надо следить.

image

Ну и поддержка GNURadio обеспечивается руками и головой программиста. Ну и немножко задницей, конечно. Софт смотрите здесь и здесь.

По первой ссылке C++ библиотека, работающая с платой через libusb и дающая интерфейс для управления настройками AD9364 и ввода отсчетов. Библиотека реализует загрузку firmware, передачу команд в регистры AD9364 и получение отсчетов сигнала.

По второй ссылке форк GR-OSMOSDR, который упрощает включение новых плат в GNURadio. Здесь был добавлен блок Source для новой платы.

В результате получаются некоторые картинки спектра:
image
image

Теперь можно воткнуть плату в планшет и вот так красиво мониторить эфир.
image

P.S.
На основе схемотехники этой платы сейчас разработан SDR-модуль для Jetson TX2. В следующий раз напишу про него.
image

© Habrahabr.ru