SPY Server на Linux ARM и Airspy HF+.

Автор: Administrator вкл. . Опубликовано в Вспомогательные материалы.

Настройка spyserver для использования с RTL-SDR была описана несколько ранее, а теперь покажу как это сделать для Airspy HF+.

По идее, процесс настройки ровно такой же, с той-лишь разницей, что драйверы нужно ставить для Airspy HF+ и в конфигурационном файле spyserver сделать соответствующие изменения.

Железо: OrangePi One с Armbian 5.73 и приемник Airspy HF+.

 

 

 

 

Подключенный приемник HF+ по команде «lsusb» определился системой как «Atmel Corp.».

 

 

Что про настройку пишут в руководстве?

 

 

 

Что надо установить «libairspy», а потом скачать и настроить сам spyserver. Все так, кроме одной мелочи – ссылка на «libairspy» дана для Airspy R2 или Mini, но никак не для HF+   https://github.com/airspy/airspyone_host#how-to-build-the-host-software-on-linux

И при такой настройке получается ошибка в клиенте при попытке подключения – «Server is busy».

 

 

 

А сервер говорит – «Could not acquire the device».

 

 

Можно поулыбаться строкам в том же руководстве - «What could go wrong in the Linux world? Well, many things». Чуть ниже упоминаются уже две разных библиотеки (драйвера) – «libairspy/libairspyhf».

Таки получается, надо найти нечто, с названием «libairspyhf». Что-то можно почерпнуть со страницы форума, а на странице https://airspy.com/airspy-hf-plus/ можно увидеть следующую информацию:

 

 

 

И выудить оттуда полезную ссылку:

https://github.com/airspy/airspyhf#how-to-build-the-host-software-on-linux

 

 

 

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

sudo apt-get install build-essential cmake libusb-1.0-0-dev pkg-config

cd ~

wget https://github.com/airspy/airspyhf/archive/master.zip

 

 

unzip master.zip

rm master.zip

 

 

cd airspyhf-master

mkdir build

cd build

cmake ../ -DINSTALL_UDEV_RULES=ON

make

sudo make install

sudo ldconfig

 

 

Можно проверить, что приемник видится драйвером:

sudo airspyhf_info

 

 

 

 

Далее скачивается и ставится сам spyserver:

 

cd ~

mkdir spyserver

cd spyserver

wget https://airspy.com/downloads/spyserver-arm32.tgz

tar xzf spyserver-arm32.tgz

rm spyserver-arm32.tgz

 

 

Потом правится конфиг:

sudo nano spyserver.config

 

Тип устройтва. Указать «AirspyHF+», т.к. «Auto» доверия нет.

# Device Type

# Possible Values:

#   AirspyOne (R0, R2, Mini)

#   AirspyHF+

#   RTL-SDR

#   Auto      (Scans for the first available device)

#

device_type = AirspyHF+

 

 

Серийный номер. Т.к. устройство одно, то «0» - выберется первое доступное устройство.

# Device Serial Number as 64bit Hex

# For example: 0xDD52D95C904534AD

# A value of 0 will acquire the first available device.

#

device_serial = 0

 

 

Режим семплирования для RTL-SDR. Строка должна быть закомментирована путем добавления символа «#» в самом начале строки.

# RTL-SDR Sampling mode

# Quadrature = 0,

# Direct Sampling I Branch = 1

# Direct Sampling Q Branch = 2

#rtl_sampling_mode = 2

 

 

Сдвиг частоты конвертера. Тоже строка должна быть закомментирована.

# Converter Offset

# Set to -120000000 to enable the SpyVerter offset

#converter_offset = -125000000

Это пункты в файле конфигурации, которые явно влияют на работу с HF+. Остальные параметры тоже можно настроить под себя ( об этом частично писал тут.).

 

 

Сохранить и закрыть файл.

CTRL+X и нажать Enter

CTRL+O

 

 

Потом пробный запуск.

sudo ./spyserver spyserver.config

 

И подключение SDRSharp v1700.

 

 

На стороне сервера теперь видно обращение к приемнику - «Acquired an AirspyHF+ device».

 

 

Собственно говоря, работает. Некоторые вопросы вызывает отсутствие возможности управления аттенюатором и предусилителем, НО, тут, вероятно играет роль наличие АРУ, которое призвано автоматически управлять уровнем сигнала с антенны. По идее, приемник «сам» автоматически будет включать аттенюатор или предусилитель в зависимости от обстановки в эфире, избегая перегрузки АЦП. По крайней мере, при прямом подключении по USB к компьютеру возможно ручное управление аттенюатором и предусилителем, а также автоматическое (AGC). Еще бросилась в глаза максимальное значение ширины полосы обзора в 660кГц, в то время как через USB напрямую доступна полоса в 768кГц.

 

 

 

 

 

 

Что ж, теперь нужно прикрутить автозапуск сервера.

cd ~

sudo touch start_srv.sh

sudo nano start_srv.sh

 

В файл вписать это:

---------------------------

#! /bin/bash

sleep 60

cd /home/orangepi/spyserver

./spyserver spyserver.config &

----------------------------------------------

Сохранить и закрыть файл.

CTRL+O и нажать Enter

CTRL+X

 

 

sudo chmod +x start_srv.sh

sudo nano /etc/rc.local          

 

В файл вписать это до слов «exit 0»:

-----------------------------

sudo /home/orangepi/start_srv.sh

-------------------------------------

CTRL+O и нажать Enter

CTRL+X

 

sudo reboot 0

 

 

После перезапуска через 60 секунд в «htop» можно увидеть запущенный процесс «spyserver» и подключаться клиентом SDRSharp. Подробнее писал здесь про RTL-SDR.

 

 

 

 

 

 

Загрузка процессора сервера при одном подключенном клиенте составляет около 16% (c RTL-SDR была примерно 36%).

 

А при 11 подключенных клиентах нагрузка на процессор сервера составила около 53%, на запуск большего числа клиентов уже не хватило мощности моего настольного компьютера. Впечатляет!

 

 

 

 

 

Скорость потока данных от сервера. 

Один клиент в режиме сжатия потребляет около 350 кбит/сек. В режиме «Full IQ» при ширине полосы обзора 660кГц – примерно 12,5 Мбит/сек, а при 165 кГц – 3 Мбит/сек.

 

 

 

 

 

 

 

 

Управление питанием HF+.

После старта OrangePi и старта spyserver ток почти равен нулю. Во время подключения клиентом ток составил примерно 320мА, после отключения клиентом ток упал до 190мА и таковым и остался, т.е. до нуля он не опустился в режиме ожидания. Впрочем, 190мА в простое все же лучше, чем 320мА.

 

        

 

 

 

 

 

Про обновление прошивки на Airspy HF+ можно почитать здесь.