Речь идёт про достаточно дешевый клон SDR приёмника RSP1A.
Информацию об оригинальном продукте можно получить у авторов (SDRplay Ltd): https://www.sdrplay.com/rsp1a/
Стоимость оригинального приёмника на момент написания данных заметок составлял около $109, что не дешево (когда-то мы за эти деньги покупали и LimeSDR-mini и ADALM-Pluto, но это это уже приёмо-передатчики).
Из интересных особенностей RSP1A:
- АЦП 14 разрядов - очень неплохо в сравнении с 8 разрядами народного RTL-SDR, на уровне большинства популярных SDR типа LimeSDR, ADALM Pluto, AirSpy, USRP.
- Приём от 1 кГц до 2 ГГц (но в "нашем" случае будет скорее до 1 ГГц).
- Полоса приёма до 10 МГц (но 14 бит АЦП только до 2 МГц).
- Стабильность опорного генератора (TCXO 24МГц) 0.5PPM (достойный уровень).
- В целом заявляются не плохие параметры чувствительности (для оригинального продукта).
- Оригинальный продукт содержит диапазоные переключаемые фильтры (0-2МГц, 2-12МГц, 12-30МГц, 30-60МГц, 120-250МГц, 250-300МГц, 300-380МГц, 380-420мГц, 420-1000МГц, >1ГГц), малошумящий управляемый усилитель (LNA, Gain Control).
Устройство основано на двух чипах:
- MSI001 - аналоговый приёмник;
- MSI2500 - АЦП, модуль DSP и USB контроллер.
На Aliexpress представлены некоторые упрощенные клоны данного SDR приемника. Сейчас их цена за плату оставляет от 3 тыс. руб. РФ. Некоторое время это было всего 1,5 тыс. руб., что практически приравнивает стоимость этих устройств к "тюнинговым" версиям RTL-SDR продаваемых специально для SDR энтузиастов (не путать с бестолковыми DVB-T донглами с бытовым, а не SMA разъемом и ужасным опорным генератором).
Клон является несколько упрощенным устройством на котором имеются два основных чипа, TCXO 0.5PPM, упрощённые (более "широкие") диапазонные фильтры не переключаемые фильтры (для каждого диапазона выбирается свой входной SMA разъем), отсутствует управляемый МШУ (LNA).
На github имеется некоторый "реверс" этой платы: https://github.com/EndlessEden/msiSDR/tree/RSP1-S
И, соответственно, есть Open Sorce (Open Hardware) дизайн подобной платы в KiCAD https://github.com/EndlessEden/msiSDR/
Именно подобные платы нас и интересует в первую очередь за счёт малой цены, простоты приобретения и, даже в некотором смысле, открытости железа.
Мы получаем 5 входом для 5 диапазонов: 0-30 МГц, 30-60 МГц, 50-120 МГц, 120-250 МГц, 400-1000 МГц.
Есть и другие варианты исполнения "клонов" с иными входами: 0-60 МГц, 30-60 МГц, 50-120 МГц, 120-250 МГц, 250-420, 400-1000 МГц
Для Windows производитель предлагает использовать некоторый SDRuno в качестве ПО. Это не наш вариант! Что есть под Linux и желательно Open Source?
Что опробовано:
- работает проприетарная библиотека API для sdrplay;
- вяло работает soapyMiri (врет по частоте);
- не работает miri (нужно разбираться);
- работает gqrx "из коробки" с sdrplay;
- как-то работает CubicSDR.
Что не работает и это возмутительно:
- пока не удалось запустить Gnuradio с RSP1A (gnuradio-companion).
Есть библиотека от производителя "API", которая поддерживается для большинства платформ. Библиотека закрытая (проприетарная), но "на безрыбье и рак рыба". Ссылка: https://www.sdrplay.com/api/
На момент паписания заметки это был файл SDRplay_RSP_API-Linux-3.12.1.run
.
Для данного API имеется Open Sorce драйвер Soapy и Gnuradio, имется возможность запуска "готовых" приложений типа gqrx-sdr и CubicSDR, заявляется возможность использовать gnuradio-companion для прототипирования. В настоящее время (у меня ядро 6.1.0) пока не поддерживается "как надо" данное железо на уровне ядра (приходится отключать модули, чтобы работать с устройством, через проиприетарную библиотеку от разработчика и lubusb).
Но обо всем по порядку.
Далее все действия производились в Debian-12 (вероятно в случае Ubuntu или Debian других версий могут быть те или отличия).
$ sudo apt install libusb-dev libudev-dev
$ sudo apt install git build-essential automake cmake
$ sudo apt install soapysdr-tools libsoapysdr-dev soapysdr-module-audio
$ sudo apt install gnuradio
$ sudo modprobe -r msi2500 msi001
Создаем файл /etc/modprobe.d/blacklist-msi-rsp.conf
следующего содержания:
blacklist sdr_msi3101
blacklist msi001
blacklist msi2500
Это можно сделать с помощью echo или вашего любимого текстового редактора] (vim/nano и т.п.).
- идем на https://www.sdrplay.com/downloads/
- скачиваем архив вида
SDRplay_RSP_API-Linux-3.12.1.run
(или другой актуальной версии) - запускаем:
$ chmoad a+x ./SDRplay_RSP_API-Linux-3.12.1.run
$ ./SDRplay_RSP_API-Linux-3.12.1.run
- соглашаемся с лицензией (а кто их читает?)
- соглашаемся с установкой файлов в /opt/sdrplay_api, /usr/local/ и др.
- запускаем сервис
sdrplay
:
$ sudo systemctl enable sdrplay --now
Далее, в случае "глюков" (а они могут быть) запоминаем команду для перезапуска сервиса после переподключения устройства:
$ sudo systemctl restart sdrplay
- посмотреть системный журнал сервиса можно традиционным образом:
$ sudo journalctl -u sdrplay -o cat -f
Далее "развилка" - для работы можно использовать несколько различных библиотек следующего уровня: Soapy "miri" или "sdrplay" или "soapyMiri". Да! Можно запутаться! Ну придется все по порядку
У меня этот драйвер кажется не работает "как надо", возможно нужно удалить 'sdrplay' драйвер, ещё не проверял. Потому, вероятно можно пропустить данный раздел.
$ sudo apt install soapysdr-module-mirisdr
$ SoapySDRUtil --info
Проверить, что устройство "находится":
$ SoapySDRUtil --find
Правильный вывод должен содержать что-то вроде:
Found device 2
driver = miri
label = Mirics MSi2500 default (e.g. VTX3D card)
miri = 0
Проверить работы драйвера:
$ SoapySDRUtil --probe="driver=miri"
Вот тут я и получил сообщение об ошибке вида:
Lost samples!
OOOOOOOOOOOOOOOOOOO...
Повторюсь, возможна проблема связана с одновременной установкой sdrplay драйвера, возможно стоит попробовать установить miri драйвер из исходников.
Этот вариант мне показался рабочим, потому выполняем:
$ git clone https://github.com/pothosware/SoapySDRPlay.git
$ cd SoapySDRPlay
$ mkdir _build
$ cd _build
$ cmake .. -DCMAKE_BUILD_TYPE=Release
$ make -j 4
$ sudo make install
$ sudo ldconfig
$ SoapySDRUtil --info
Проверить, что устройство "находится":
$ SoapySDRUtil --find
Правильный вывод должен содержать что-то вроде:
Found device 3
driver = sdrplay
label = SDRplay Dev0 RSP1 0000000001
serial = 0000000001
Проверить работы драйвера:
$ SoapySDRUtil --probe="driver=sdrplay"
У меня в отличии от "miri" эта операция выполнилась без ошибок! Ура!
$ git clone https://github.com/ericek111/libmirisdr-5
$ cd libmirisdr-5
$ mkdir _build && cd _build
$ cmake ..
$ make -j4
$ sudo make install
$ sudo ldconfig
$ git clone https://github.com/ericek111/SoapyMiri
$ cd SoapyMiri
$ mkdir _build && cd _build
$ cmake ..
$ make -j4
$ sudo make install
$ sudo ldconfig
Проверить, что устройство "находится":
$ SoapySDRUtil --find
Правильный вывод должен содержать что-то вроде:
Found device 4
driver = soapyMiri
index = 0
label = Mirics MSi2500 default (e.g. VTX3D card) :: 00000001
manufacturer = Mirics
product = MSi2500
serial = 00000001
Проверить работы драйвера:
$ SoapySDRUtil --probe="driver=soapyMiri"
Операция должна завершиться без ошибок!
$ git clone https://github.com/f4exb/libmirisdr-4
$ cd libmirisdr-4
$ mkdir _build && cd _build
$ cmake ..
$ make -j4
$ sudo make install
Я использовать gqrx из поставки Debian-12:
$ sudo apt install gqrx-sdr
Все заработало "из коробки".
При первом запуске нужно выбрать устройство (Device): "SDRplay DevX RSP1..." -
т.е. выбираем драйвер sdrplay
с проприетарной API библиотекой.
С драйвером soapyMiri
программа работает "как-то странно" (не работает,
как надо).
Программа иногда "глючит", чтоб "сбросить" все настройки нужно удалить каталог
с файлами конфигурации:
$ rm ~/.config/gqrx/
К этой программе у меня "особые" теплые чувства, много лет назад я добавил в нее стереодекодер для WFM и мой патч принял разработчик. Позже кто-то добавил и стереодекодер для российского (советского) УКВ диапазона (WFM orit), но это уже был не я, но предполагаю, что наш соотечественник из USSR.
Эта программа тоже работает, у меня не большой опыт ее использования, но она тоже как-то работает, если выбрать sdrplay, а не miri.
$ sudo apt install cubicsdr
Смотрим тут: https://github.com/f4exb/sdrangel/wiki/Compile-from-source-in-Linux
$ sudo apt install qtbase5-dev qtbase5-private-dev qtlocation5-dev \
qtmultimedia5-dev qtpositioning5-dev qtwebengine5-dev libqt5charts5-dev \
libqt5serialport5-dev libqt5texttospeech5-dev libqt5websockets5-dev \
libqt5gamepad5-dev
$ sudo apt install ibserialdv-dev libfftw3-dev libboost-dev libopus-dev \
libhackrf-dev libiio-dev libopengl-dev
$ git clone https://github.com/f4exb/sdrangel.git
$ cd sdrangel
$ mkdir _build && cd _build
$ cmake ..
$ make -j4
Пока не разбирался...
см. https://github.com/AlexandreRouma/SDRPlusPlus ...
$ git clone https://gitlab.com/HB9FXQ/gr-sdrplay
$ cd gr-sdrplay
$ mkdir _build && cd _build
$ cmake ..
И! Получаем ошибки.... Нужн оразбираться. Тут надо понимать, что данный проект уже 5 лет не обновлялся! Вероятно это тупиковая ветка развития ПО для RSP1 + Gnuradio....
$ sudo aptitude install libosmosdr-dev
$ git clone https://github.com/csete/gr-osmosdr-gqrx
$ cd gr-osmosdr-gqrx
$ mkdir _build && cd _build
$ cmake ..
Пока не понятно как... Исходники gq-osmosdr куда-то пропали
-DENABLE_NONFREE=TRUE
$ git clone https://github.com/dicta/gr-soapy
$ cd gr-soapy
$ mkdir _build && cd _build
$ cmake ..
$ make
Ошибки компиляции - опять заминка...
В gnuradio-companion можно использовать gr-osmosdr
.
В "Device arguments" для блока "osmocom Source" нужно указать: "sdrplay", но это пока НЕ работает!! ... Нужно разбираться дальше...
- https://www.sdrplay.com/rsp1a/
- https://www.sdrplay.com/downloads/
- https://revspace.nl/Msi2500SDR
- https://github.com/pothosware/SoapySDR/wiki
- https://github.com/EndlessEden/msiSDR/
- https://github.com/pothosware/SoapySDRPlay3/wiki
- https://victor-sudakov.livejournal.com/478315.html
- https://aliexpress.ru/item/1005003654127606.html?gatewayAdapt=nld2rus&sku_id=12000027257897598