08 мая 2026

Установка OpenWebRX+ на Raspberry PI 3 Model B

Если SDR приёмник подключается к rtl_tcp, который запущен на Raspberry PI 3 Model B через Wi-Fi сеть (эта модель поддерживает только 2.4 ГГц Wi-Fi), то её скорости иногда не хватает чтобы принимать сигнал без запинок. Решил попробовать OpenWebRX+ чтобы декодирование I/Q сигнала выполнялось локально на Raspberry а по сети передавалось меньше данных.

Записал образ Debian 13 для Raspberry на microSD карту которая подключена через USB считыватель и видна в системе как /dev/sda

curl -fsSLO https://cloud.debian.org/images/cloud/trixie/daily/latest/debian-13-raspi-arm64-daily.tar.xz

tar -xzf debian-13-raspi-arm64-daily.tar.xz

sudo dd if=disk.raw of=/dev/sda bs=10M oflag=direct status=progress

После записи образа установил microSD карту в одноплатник, подключил проводную сеть, клавиатуру и монитор и загрузился в систему (при первой загрузке попросит задать пароль для root пользователя и часовой пояс).

Далее поставил минимальный набор пакетов, настроил имя хоста, локаль и отключил проверку дубликатов IP адресов в Network Manager.

sudo apt --update install network-manager openssh-server openssh-client locales vim less

echo pi3 | sudo tee /etc/hostname

echo '127.0.1.1 pi3.local pi3' | sudo tee -a /etc/hosts

sudo hostname -F /etc/hostname

cat << _EOF_ | sudo tee /etc/locale.gen
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
_EOF_

sudo locale-gen

cat <<_EOF_ | sudo tee /etc/NetworkManager/conf.d/50-no-ipv4-dad.conf
[connection-dad-default]
ipv4.dad-timeout=0
_EOF_

sudo systemctl restart NetworkManager.service

Дальше настроил подключение к Wi-Fi точке через nmtui и установил сервис для управления антенной из SDR приложения.

sudo apt install rtl-sdr

curl -fsSLO https://raw.githubusercontent.com/tataranovich/magnetic-loop-antenna/refs/heads/master/magloop-tuner.py

curl -fsSLO https://raw.githubusercontent.com/tataranovich/magnetic-loop-antenna/refs/heads/master/magloop-tuner.service

sudo mkdir /opt/magloop

sudo useradd -r -d /opt/magloop -s /usr/sbin/nologin -G plugdev magloop

sudo install -o root -m 644 magloop-tuner.py /opt/magloop/

sudo install -o root -m 644 magloop-tuner.service /etc/systemd/system/

sudo systemctl daemon-reload

sudo systemctl enable --now magloop-tuner.service

Последним этапом была установка OpenWebRX+ по инструкции разработчика

sudo apt install gnupg

curl -s https://luarvique.github.io/ppa/openwebrx-plus.gpg | sudo gpg --yes --dearmor -o /etc/apt/trusted.gpg.d/openwebrx-plus.gpg

echo "deb [signed-by=/etc/apt/trusted.gpg.d/openwebrx-plus.gpg] https://luarvique.github.io/ppa/trixie ./" | sudo tee /etc/apt/sources.list.d/openwebrx-plus.list

sudo apt --update install -y openwebrx

После установки нужно зайти на http://pi3:8073/ (pi3 это DNS имя Raspberry в домашней сети) и в настройках задать конфигурацию RTL-SDR приёмника с учётом что он будет доступен через rtl_tcp соединение (127.0.0.1:1234).

Поначалу немного непривычный интерфейс, но быстро привыкаешь. Работает из любого современного браузера включая мобильные.

Есть встроенный декодер цифровых видов связи.

Чтобы появилась возможность устанавливать произвольную частоту в окне приёмника нужно сделать несколько дополнительных настроек:

  1. Установить галочку в "General Settings / Receiver limits / Allow users to change center frequency"
  2. Задать пустое значение для "General Settings / Receiver limits / Magic key" (для персональной установки это допустимо, но для публичных стоит задать какое-то значение)
  3. Переименовать файл /usr/lib/python3/dist-packages/htdocs/plugins/receiver/init.js.sample в /usr/lib/python3/dist-packages/htdocs/plugins/receiver/init.js
  4. Добавить плагин frequency_far_jump
    Plugins.load(rp_url + '/frequency_far_jump/frequency_far_jump.js');

Из недостатков заметил отстутствие опции удаления пика в центре ("DC remove" в GQRX или "IQ Correction" в SDR++). Обойти это можно задавая центральную частоту в стороне от интересующих сигналов.

Если сравнивать OpenWebRX+ с SDR++ и GQRX, то они по разному настраивают усиление в rtl_tcp:

GQRX

set gain mode 1
set agc mode 0
set gain 86

SDR++

set gain mode 1
set agc mode 0
set tuner gain by index 13

OpenWebRX+

set gain mode 1
set gain 150

SDR++ задаёт усиление из набора значений, которые можно посмотреть в исходниках rtl-sdr, а GQRX/OpenWebRX+ - напрямую устанавливают усиление в десятых долях дБ (например 150 это 15 дБ). Судя по документации на тюнер R820T у него есть возможность плавно регулировать усиление от +1дБ до +48дБ, но я пока не смотрел что именно в железе настраивает команда "set gain".

Теперь что касается требуемой полосы пропускания сети - если подключаться к rtl_tcp на raspberry из SDR++, то скорость передачи около 20 МБит/с, а в случае OpenWebRX+ всего 200 кБит/с!


Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

Комментариев нет:

Отправить комментарий