История проекта.
После запуска своей персональной вебстранички меня не отпускала мысль о
запуске вебсдрки, потому что почему бы и нет, раз уж я плачу за
статический ip для сайта, и кв мониторинг - одно из моих хобби. Это
простой способ поделиться приемниками с другими людьми которые хотят
глянуть что интересного есть на КВ.
Сначала я взял лежавший у меня RPI4, накатил на него готовую сборку Openwebrx (без плюса) и подключил SDRPLAY.


Некоторое время он повисел, но RPI4 - довольно дорогая и интересная
игрушка, плюс один приемник полосой 8 мгц это конечно круто, но я бы
предпочел иметь несколько полос которые можно настраивать. Это также
позволило бы увеличить количество клиентов, т.к. несколько узкополосных
приемников нагрузят систему меньше (учитывая переключения диапазонов
и.т.д).
В общем я купил Rockpi4a и несколько RTL-SDR, сначала три приемника и
кв-апконвертер с пассивным делителем, затем поставил пять приемников и
усилитель после апконвертера.
Три приемника

Пять приемников, фото версии с двумя приемниками на УКВ, потом диапазоны были распределены иначе, 4 на КВ и 1 на СИБИ.

Последние версии фильтров
КВ

СИБИ

Схема до переделки фильтров.

На Rock Pi 4 A rtl-sdr полосой 2.8 МГц первый клиент загружает проц на 11%, каждый следующий - 4%
Вебсдрка была так себе, во-первых дешевые rtl sdr излучают помехи при
работе, во-вторых нагрузка одноплатника вызывала просадку напряжения
питания конвертера и уход частоты, в третьих максимально дешевые
свистки на r828 дрейфуют по частоте после включения, из-за прогрева
кварца. Поэтому я решил перекатитья на клоны SDRPLAY без корпуса и вч
коммутаторов, которые к моменту принятия решения подешевели до 700р.
Вот такие.

После серии экспериментов с ними и rockpi4a выяснилось следующее:
Во-первых, у RSP1a меняется разрешение АЦП при изменении полосы обзора
14bit 2MSPS – 6.048MSPS
12bit 6.048MSPS – 8.064MSPS
10bit 8.064MSPS – 9.216MSPS
8bit >9.216MSPS
плюс реальная полоса пропускания немного ниже, примерно на 0.6МГц,
из-за скатов аналоговых фильтров ПЧ тюнера, так что для того чтобы
перекрыть весь КВ нужно 4 приемника, я установил полосы пропускания
8МГц, соответственно 12 бит разрешение и 7.6 МГц полосы на приемник. Я
считаю что падение разрешения в целых 4 бита ради увеличения полосы до
9.6 - неоправданная жертва.
Во-вторых rockpi4a с камнем rk3399 даже с большим радиатором-кирпичом
не тянет все 4 приемника, три приемника по одному клиенту, и то уже с
разрывами звука.

В-третьих (ньюанс) - через USB3 хаб их не включить, т.к. это USB2
устройства, и хабы в любом случае бдут работать с ними в режиме USB2, а
скорости шины хватит только на поток от одного приемника с такой
скоростью.
Затем я собрал вебсдрку в своем старом десктопе. Приемники - RSP1a полосой 8МГц.
core i3-4130, 4g ram
один приёмник нагружает систему на 42%
второй пользователь на приёмнике добавляет 1-2%
четыре приемника нагружают на 77% (но это очень неточно, ингода второй приёмник даже не добавляет нагрузки)
rk3399 4g ram
один приёмник нагружает систему на 38%
второй пользователь добавляет 7-8%
второй приёмник добавляет 39%
три приемника уже тянет с тормозами
В общем я купил Xeon E3-1270v3, подключил еще один RSP1a на укв и
HACKRF на сатком. Нагрузка на ксеоне с 5 RSP1a по 8МГц и HACKRF на
20МГц полосы.

Делители сигнала в новом SDR
Сначала, когда стоял только КВ блок я по-быстрому запилил примитивный
делитель на трансформаторе. Одна первичная обмотка на 10 витков, 4
вторичных обмотки (выходы на приемники) по 5 витков, плюс несколько
защит.

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



Внешний вид (монтаж плох, между катушками сильная индуктивная связь)

Плюс для запихивания КВ+УКВ в один кабель пришлось запилить еще пару
диплексеров, один установленный на балконе запихивающий УКВ и КВ в один
кабель.

Другой в корпусе пеки, разделяющий и обратно.


Полная схема сейчас (кроме RTL на 144, она шумела).

OpenWebRx
Бесплатный сервер вебсдр поддерживающий большое количество приемников,
распространяется без ограничений. Использует CSDR, так что он не так
экономичен как websdr от PA3FWM, но при небольшом количестве
пользователей это не критично, плюс имеет огромное количество фич,
встроенную карту на которой отображаются другие вебсдр
зарегистрированные на своих сервисах, OWRX, websdr, Kiwisdr, расписания
вещаний разных станций, плюс отображаются координаты декодированных
сообщений APRS,WSPR,HFDL, все в которых передаются координаты (да, есть
куча встроенных декодеров, метеофаксы, ISM. Много их.




Настройка
С использованием Docker
Нужен curl
sudo apt install curl
ставим докер
curl -sSL https://get.docker.com | sh
ставим OpenWebRx
sudo docker pull jketterl/openwebrx-full:stable
sudo docker volume create openwebrx-settings
Отключаем мешающие драйвера. Редактируем файл
sudo nano /etc/modprobe.d/blacklist.conf
добавляем в конец строчки
blacklist dvb_usb_rtl28xxu
blacklist sdr_msi3101
blacklist msi001
blacklist msi2500
blacklist hackrf
выход из редактора - Ctrl+O, Enter - сохранить файл, Ctrl+Х закрыть редактор
Чтобы приемник запускался автоматом после включения одноплатника достаточно ввести один раз
sudo docker run --restart always --name OPENWEBRX --device /dev/bus/usb
-p 8073:8073 -v openwebrx-settings:/var/lib/openwebrx
jketterl/openwebrx-full:stable
перезагружаем
sudo reboot
создаем аккаунт для веб-интерфейса приемника (доступ к настройкам на веб-странице радио)
sudo docker exec -it OPENWEBRX bash
python3 openwebrx.py admin adduser username
Далее с этими логином и паролем заходим в настройки в веб-интерфейс.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Если использовалась убунта с этого сайта то процесс установки нужно пропустить, там уже стоят драйвера и сам openwebrx.
Оригинал инструкции OpenWebRX+ Package Repository | ppa (luarvique.github.io)
Установка
sudo su
apt install gpg (вроде его в убунте нет по дефолту)
Добавляем репозитории
для Debian
wget -O - https://luarvique.github.io/ppa/openwebrx-plus.gpg | gpg --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/debian ./" > /etc/apt/sources.list.d/openwebrx-plus.list
wget -O - https://repo.openwebrx.de/debian/key.gpg.txt | gpg --dearmor -o /usr/share/keyrings/openwebrx.gpg
echo "deb [signed-by=/usr/share/keyrings/openwebrx.gpg] https://repo.openwebrx.de/debian/ bullseye main" > /etc/apt/sources.list.d/openwebrx.list
для Ubuntu
wget -O - https://luarvique.github.io/ppa/openwebrx-plus.gpg | gpg --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/ubuntu ./" > /etc/apt/sources.list.d/openwebrx-plus.list
wget -O - https://repo.openwebrx.de/debian/key.gpg.txt | gpg --dearmor -o /usr/share/keyrings/openwebrx.gpg
echo "deb [signed-by=/usr/share/keyrings/openwebrx.gpg] https://repo.openwebrx.de/ubuntu/ jammy main" > /etc/apt/sources.list.d/openwebrx.list
apt update
apt install openwebrx
В процессе установки система попросит поставить пароль к веб-интерфейсу
настроек приемника, имя пользователя сменить сейчас нельзя.
Блокируем драйвера
nano /etc/modprobe.d/blacklist.conf
добавляем в конец открывшегося файла строчки
blacklist dvb_usb_rtl28xxu
blacklist sdr_msi3101
blacklist msi001
blacklist msi2500
blacklist hackrf
сохраняем
ctrl+o
enter
закрываем редактор
ctrl+x
установка драйвера sdrplay
wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run
chmod 755 ./SDRplay_RSP_API-Linux-3.07.1.run
./SDRplay_RSP_API-Linux-3.07.1.run
apt install soapysdr-module-sdrplay3
необязательно, удаление модуля miri (старый linux драйвер для тв-тюнеров на базе микросхем на которых делается SDRPlay)
apt purge soapysdr0.8-module-mirisdr
Дополнительно.
Если компьютер будет работать именно как сервер, и рабочий стол не
нужен то можно управлять загрузкой графической оболочки командами ниже
(требуется перезагрузка)
отключение рабочего стола (консоль будет доступна)
sudo systemctl set-default multi-user
вернуть рабочий стол
sudo systemctl set-default graphical
У меня была проблема: openwebrx теряет приемник после выключения\включения питания но после перезагрузки sudo reboot - работает.
Проблема оказалась где-то на стыке usb3 драйверов, sdrplay и soapy.
Если я отключал в BIOS XHCI полностью - радио работало после
выключения-включения питания, но нельзя было одновременно запустить
приемники включенные в соседние порты на материнке (на ней всего 2 EHCI
контроллера, и их пропускной способности хватает только на 2 приемника
в режиме 8MSPS 12 bit). Если я включах XHCI в любом режиме (enabled,
manual, auto, smar auto) и с любым режимом XHCI hand-off все
четыре приемника могли работать одновременно, но при пропадании и
восстановлении питания терялись, lsusb устройства видел, SoapySDRUtil
--find же устройств не видел. Но если после включения питания
перезагрузить машину sudo reboot, все работало. Я оставил XHCI
включенным, не покупать же еще два pci-express>usb контроллера, и
добавил в crontab ежесуточную перезагрузку ночью, на всякий.
Настройка:
Первым делом в консоли на сервере выполняем:
sudo openwebrx admin adduser [username]
Вводим имя и пароль нового юзера.
Затем, если у вас больше одного приемника и они подключены к разным
антеннам или фильтрам то нам надо определить их серийники чтобы указать
в настройках. Если у вас один приемник или несколько подключены к одной
антенне через простой делитель то на серийники можно забить.
SoapySDRUtil --find
Пример вывода с обрезанной лишней информацией, подключено 3 устройства,
серийный номер при работе soapy зависит от того к какому порту
подключен клон sdrplay
.......
Found device 6
driver = sdrplay
label = SDRplay Dev0 RSP1 B0003P0001
serial = B0003P0001
Found device 7
driver = sdrplay
label = SDRplay Dev1 RSP1 B0003P0003
serial = B0003P0003
Found device 8
driver = sdrplay
label = SDRplay Dev2 RSP1 B0003P0002
serial = B0003P0002
Строки вида serial = B0003P0002 представляют собой номера устройств
RSP1a в системе, это не реальные серийники, это номера USB портов на
шинах в которые вставлены приемники. Запишите их, они используются в
качестве идентификаторов при назначении приемников.
В случае с RTL-SDR серийники можно менять.
В линуксе можно втыкать приемники по одному в компьютер, и менять серийники командой
rtl_eeprom -s XXXXХXXX (x-серийный номер, восемь цифр).
Либо если несколько приемников воткнуты через хаб то:
rtl_eeprom -d n -s XXXXXXXX где n - порядковый номер, начинается с нуля

В винде можно сменить серийник с помощью rtl1090:
Создаем ярлык для программы, заходим в свойства ярлыка и в поле
"объект" дописываем после пробела /EEPROM , сохраняем и запускаем, жмем
в программе кнопку START, откроется окно где можно выставить новый
серийник.


Далее в веб-интерфейсе настроек идем в настройки устройств, добавляем новое

Выбираем сдр и драйвер

В настройках приемника Settings/SDR device
settings/Device settingsкаждого приемника нужно добавить параметр
device identifier.
Additional optional settings>device identifier

Добавляем серийник приемника вида serial=xxxxxxxx,

Затем идем в настройки устройства, создаем профиль (или несколько,
профиль это пресет для приемника, может использоваться только один
профиль одновременно очевидно, в OWRX+ когда один пользователь из
нескольких переключает профиль он переключается у всех остальных
слушателей, в классическом OWRX пользователь не может переключить
профиль если приемником пользуется больше одного человека), если вы
настроили несколько разных устройств то они могут работать одновременно.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Установка websdr PA3FWM
Вебсдр распространяется по личному запросу, и в теории использование
без разрешений это пиратство. Но дистрибутив валяется в интернете,
сборка 14 года, в современных браузерах нужно в настройках разрешать
воспроизведение звука на нем вручную, сервер с одним клиентом дрет 3\4
ресурсов по сравнению с OpenWebRx+ с аналогичными настройками
приемника. Но нагрзка на дополнительных клиентов у него меньше, так что
есть смысл его использовать.
Установка
Установка на убунту 22.04 описана тут https://www.sdrutah.org/info/websdr_Ubuntu_2204_install_notes.html
В Ubuntu 22.04:
add-apt-repository ppa:linuxuprising/libpng12
apt update
apt install libpng12-0
nano /etc/apt/sources.list
в конец файла добавляем строчку
deb [trusted=yes] http://security.ubuntu.com/ubuntu xenial-security main
жмем ctrl+o для сохранения, ctrl+x для закрытия редактора.
apt update
apt install libssl1.0.0
Копируем дистрибутив websdr в /opt
в /opt/websdr/cfg/websdr.cfg раскомментируйте #noorgserver или вебсдр потребует ваш мейл и координаты и не запустится.
теперь можно запустить сервер для проверки с вводом сигнала через звуковую карту (для работы с приемниками SOFTROCK)
cd /opt/websdr/dist11
sudo ./websdr64
(если тупо не стартует возможно нужно сделать его исполняемым и дать права на запись\чтение)
Посмотрите что сервер вывалит в консоль, он очень капризный и если ему
что-то не по нраву он не запустится и не покажет веб-страничку, также в
первый запуск он проводит калибровку и возможно потребуется рестартнуть
его прибив killall'ом и запустив снова.
Теперь можно открыть страничку вебсдр в браузере, на сервере адрес
будет http://localhost http://127.0.0.1 ВНИМАНИЕ, НЕ https, также
можно указать порт :80
Конфигурационный файл находится в папке /opt/websdr/cfg/websdr.cfg
Для работы с приемником rtl-sdr в конфигурационном файле после строчки # We need to configure at least one band: добавьте
band 2m
device !rtlsdr 127.0.0.1:64000 //ip и порт RTL_TCP сервера
samplerate 2048000 // полоса
centerfreq 145000
//
центральная частота
antenna dipole
//тип антенны (для описания на сервере
gain -25
// усиление
extrazoom1
Затем в консоли запустите RTL_TCP сервер
cd /opt/websdr/dist11/
rtl_tcp -a 127.0.0.1 -p 64000 -f 145000K -g 0 -s 2048000 &
Затем запустите сам сервер
./websdr64
теперь он работает с приемнипком rtl_sdr
Для автоматического запуска создайте файл, например websdr.sh в папке /etc/init.d с содержимым
#!/bin/sh
sleep 12
cd /opt/websdr/dist11/
rtl_tcp -a 127.0.0.1 -p 64000 -f 145000K -g 0 -s 2048000 &
sleep 10
./websdr64
сделайте его выполняемым. теперь после перезагрузки серверы RTL_TCP и websdr будут запускаться автоматом.
конфигурация нескольких приемников на сервере (не пробовал, и непонятно
как указывать конкретные приемники по серийнику, похоже нужно каждый
раз сопоставлять серийник и условный номер устройства, см.
тутhttps://derushadigital.com/other%20projects/2019/02/15/RTLSDR-service.html)
Для начала в случае с rtl-sdr нужно запустить серверы rtl-tcp в скрипте
автозапуска, на разных портах, затем указать их в файле конфигурации
сервера
Пример запуска двух приемников
Файл автозапуска /etc/init.d/websdr.sh
---------------------------------------------------------------
#!/bin/sh
cd /opt/websdr/dist11/
rtl_tcp -a 127.0.0.1 -p 64000 -f 145000K -g 0 -s 2048000 -d0 &
rtl_tcp -a 127.0.0.1 -p 64001 -f 433000K -g 0 -s 2048000 -d1 &
sleep6
./websdr64
--------------------------------------------------------------
где:
-p 64000 порт сервера rtl_tcp (разные приемники на разные порты)
-f 145000K центральная частота
-g 0 усиление ( 0-автоматически)
-s 2048000 полоса частот
-d0 условный порядковый номер устройства
Файл конфигурации сервера /opt/websdr/cfg/websdr.cfg
секция настройки диапазонов
------------------------------------------------------------------------------
############################################################################
# We need to configure at least one band:
band 2m название диапазона
device !rtlsdr 127.0.0.1:64000 устройство (необходимо запустить его в скрипте автозапуска)
samplerate 2048000 рабочая полоса
centerfreq 145000 центральная частота
antenna dipole тип антенны (просто для справки слушателей0
gain -25
extrazoom1
band 70сm название диапазона
device !rtlsdr 127.0.0.1:64001 устройство (необходимо запустить его в скрипте автозапуска)
samplerate 2048000 рабочая полоса
centerfreq 433000 центральная частота
antenna gp тип антенны (просто для справки слушателей0
gain -25
extrazoom1
Сравнение нагрузок OWRX и WEBSDR при одинаковых настройках приемника:
Один пользователь


4 пользователя


SDRPLAY и PA3FWM websdr
https://www.sdrutah.org/info/sdrplay_rx.htmll
https://www.sdrutah.org/info/higher_rate_16b_websdr.html
websdr который PA3FWM распространяет изначально работал только с
аудиовходами звуковых карт (приемниками типа softrock), этот интерфейс
дает 16бит вход и предельную теоретическую полосу в звуковой системе
ALSA 768kSPs, возможность подключать rtl_tcp была прикручена
позже, и интерфейс делался под RTL, и работает только с 8 битами.
Для SDRPLAY написаны пара вариантов утилит rsp_tcp. Эта
версия выдает 8 и 16 бит поток, по выбору, и не управляет усилением и
аттенюатором приемника, выставляя захардкоженное очень низкое,
неюзабельное значение усиления. Вторая
версия может управлять усилением и включать АРУ, но выдает только 8бит.
Во всем остальном, в теории если запустить эти серверы и подключить к
ним websdr он будет работать, но зачем, 8 бит выдаст и РТЛка.
Сисадмины вебсдр Северной Юты настолько преисполнились от работы с этим софтом что пустились во все тяжкие.
Во-первых они пробовали запускать 16 битный сервер rsp_tcp и с помощью
netcat отправлять из него данные в звуковую систему.
старт сервера
rsp_tcp -a 127.0.0.1 -p 1234 -f 5000000 -s 192000 -b 16 &
создание виртуального звукового интерфейса
sudo modprobe snd_aloop
запихиваем поток с выхода сервера rsp_tcp прямо в звуковую подсистему
nc 127.0.0.1 1234 | aplay -D <sound_device_name> -r 192000 -c 2 -f s16_le
узнаем id звукового устройства
aplay -l
если к примеру оно получило id hw:2,1,0 то в websdr.config нужно
указать hw:2,1,1 (последняя цифра указывает вход это или выход)
Полчим 768 кгц 16 бит с приемника который в состоянии работать полосой
в десять раз больше. И без возможности регулировать усиление которое
установлено в нереально низкое значение.
Админы Northern Utah Websdr в попытке использовать sdrplay не через жопу написали несколько программ
https://github.com/CrumResearch/sdrplayalsa берет поток с приемника и
запихивает его звуковую систему минуя tcp_ip и netcat. Умеет в
реглировки АРУ, усиления, аттенюатора, децимации, полосы. Скачать бинарник 64х. использование и настройки описаны на этой странице.
Ах да, для того чтобы зарядить 768кгц полосы через звуковую подсистему
вам нужно заменить утилиту aplay на написанную админами N.U.Websdr
утилиту fplay.
Еще можно используя CSDR снять с одного приемника потоки на несколько диапазонов.
https://www.sdrutah.org/info/using_csdr_for_auxiliary_receivers_on_a_websdr.html
В общем ребята знатно заморочились и это стоило упомянуть здесь,
простого способа реализовать зотя бы преимущество SDRPLAY в битах перед
rtl нет. А в полосе - все равно эта вебсдрка больше двух не может
прожевать.
Прочие игрища
За внешний вид страницы отвечает файл /dist/pub2/websdr-control.html
Его можно отредактировать даже редактором типа Kompozer


Добавление кнопки "Включить звук" (решение проблемы с отсутствием звука в браузерах после 2019 года)
https://www.sdrutah.org/info/chrome_WebSDR_fix.html
--------------------------------------------------------------------------------------------------------------------------------------------
Настройка сети.
Для того чтобы сделать наш сервер доступным из внешнего интернета нам нужно следующее (делать в любом порядке).
1: Внешний IP (арендуется у вашего провайдера, но если это невозможно
есть способы создания туннелей к другим серверам которые имеют внешний
IP, вебсдр это обыччный сайт и все трюки связанные с этим работают и
для него)
2: (опционально) DNS имя для того чтобы иметь легко запоминающееся имя
вместо 12 цифр записанны через точки, также с DNS именем ваш вебсдр
будет индексироваться гуглом.
Если ваш кабель от провайдера воткнут прямо в вебсервер то больше
настраивать ничего не нужно, но я думаю вы сами хотите пользоваться
интернетом, тем более что вебсдр - не особо посещаемые ресурсы, поэтому
нужны еще два пункта.
3: Настроенный статический IP в локальной сети на сервере вебсдр (настраивается на сервере вебсдр).
4: Роутер настроенный на проброс порта 8073 (для OpenWebRx) или 8901
(для websdr, но в моем случае при запуске от root он работал на 80
порту) на IP нашего сервера в локальной сети (настраивается в панели
настроек роутера).
Настройка статического IP на сервере.
Проще всего сделать с рабочего стола. На сервере вебсдр тыкаем мышкой в
значок сети на рабочем столе, выбираем настройки проводной сети.

Тыкаем на значок шестеренки у работающего соединения

Ставим ручной режим и выставляем ip адрес, маску подсети, адрес шлюза и DNS.
Обычно домашние роутеры имеют сеть вида:
Адрес шлюза 192.168.0.1 или 192.168.1.1
Маска подсети 255.255.255.0
Адрес DNS гугла 8.8.8.8
Адрес самого сервера может лежать в пределах 192.168.0.2-192.168.0.254
или 192.168.1.2-192.168.1.254, запишите его, он понадобится при
настройке проброса портов в роутере.

Тут внимание, нужно чтобы выбранный вами адрес НЕ ПОПАДАЛ в пул адресов
которые выдаются вашим роутером динамически, в моем тп-линке настройка
по умолчанию выглядит так

Пул адресов которыми распоряжается DHCP 192.168.0.100 - 192.168.0.199,
значит я могу выбрать адрес сервера в диапазонах 192.168.0.2 -
192.168.0.99 или 192.168.0.200 - 192.168.0.254
Проброс портов в роутере.
В роутерах разных производителей это делается по-разному, суть в
следующем: по умолчанию роутер не пропускает в локальную сеть запросы
из внешнего интернета, поскольку так работает сам NAT, роутер не знает
какому из подключенных компьютеров пришел внешний запрос. Поэтому для
того чтобы наш сервер стал доступен извне нам нужно сказать роутеру
чтобы все запросы приходящие на определенный порт он отправлял на
определенный ip адрес в локальной сети (адрес сервера который мы
настроили выше). Например адрес моего сервера в локальной сети
192.168.0.8, у OpenWebRx рабочий порт 8073. Соответственно это
внутренний адрес и порт в настройке. А вот внешний порт можете
поставить другой, тогда из внешнего интернета вы сможете открыть ваш
вебсдр по ссылке http://ваш внешний ip: внешний порт в настройках
роутера.
Внешний ip же выдается провайдером.
Вот пример настройки моего tp-link, наверно одна из самых распространенных марок роутеров.

Настройка внешнего ip
Это делается через вашего интернет-провайдера. У меня эта услуга стоит
дополнительные 150 р/мес, но услуги по стране сильно различаются,
олдовые провайдеры по умолчанию выдавали внешние ip. Как настроить
роутер также узнайте у провайдера, хотя сейчас это обычно делается
автоматом, вариантов работы с внешним ip масса, и тут не угадать.
DNS запись (необязательно, см подробности)
Если вы только подключили внешний ip то во-первых его сложно запомнить,
чтобы допустим зайти с чужого компьютра, а во-вторых, но самое важное -
приемник не будет индексироваться гуглом. Для этого нужно купить DNS
имя. Это то самое имя типа google.ru которое вводится в строке
браузера. Служба DNS это такой автоматизированный "телефонный
справочник" который автоматически передает вашему браузеру ip адрес
который соответствует доменному имени.
Для этого стоит посмотреть какие регистраторы имен есть,
зарегистрироваться в одном из них, выбрать свободное доменное имя,
оплатить регистрацию , (обычно на год, имена стоят по-разному, в
зависимости от популярности и.т.д) а потом зайти в личный кабинет и
вбить ваш внешний ip адрес который вам выдал провайдер.
Ниже пример, настройки моего адреса hoshinokoe.ru

Обратите внимание: если вы в пункте настройки роутера настроили проброс
портов вида "внешний ip:8073 - ip адрес сервера:8073" то
чтобы попасть на вебсдр вам после регистрации DNS нужно в адресной строке браузера вводить адрес в
виде "http://доменное_имя.ru:8073"
Чтобы не вводить вручную порт можно настроить на роутере проброс портов вида
"внешний ip:80 - ip адрес сервера:8073". Дело в том что порт 80
стандартный для http, и браузеру не нужно будет указывать порт чтобы
попасть на интерфейс OpenWebRx, то есть вебсдр будет доступен просто "http://доменное_имя.ru".
Если у вас ip внешний но динамический (провайдер меняет его на свое
усмотрение, такое встречается) то придется воспользоваться сервисами
dyndns. Взаимодействие с ними нужно дополнительно настраивать в роутере.
Чтож, поздравляем (хотя кто мы то, я один здесь), ваше радио доступно из любого уголка земли где есть интернет
--------------------------------------------------------------------------------------------------------------------------------------------
К вебсдр это не относится, но если есть пара (десятков) сдр приемников
то можно организовать нехилый виртуальный онлайн-радар для кораблей и
самолетов.
Virtual radar server
Linux - Virtual Radar Server
Программа создает веб-страничку с картой, принимает от разных декодеров данные и отображает на карте самолеты.

Принимать данные может через UART, TCP, UDP порты.
HFDL
Для линукс есть консольный декодер HFDL который может обработать
столько каналов HFDL сколько позволяет полоса SDR и мощность
компьютера, а потом скормить декодированные данные в Virtual Radar
Server или подобный софт.
Установка требует компиляции самого dumphfdl и еще нескольких софтин.
GitHub - szpajder/dumphfdl: Multichannel HFDL decoder
Локальная копия исходников (сохранена на случай вторжения некронов)
Пример запуска с отправкой декодированного на виртуальный радар по TCP
dumphfdl --soapysdr driver=sdrplay --gain-elements IFGR=40,RFGR=0
--sample-rate 6000000 8825 8834 8843 8885 8886 8894 8912 8921 8927 8936
8939 8942 8948 8957 8977 10027 10060 10063 10066 10075 10081 10084
10087 10093 11306 11312 11318 11321 11327 11348 11354 11384 11387 11184
11306 13264 13270 13276 13303 13312 13315 13321 13324 13342 13351 13354
--freq-as-squawk --output
decoded:basestation:tcp:address=127.0.0.1,port=20005 --system-table
/home/aholt/dumphfdl/etc/systable.conf
Пример трехчасового мониторинга на нескольких диапазонах

ADS-B
Антенна

В случае с ADS-B всю работу делает программа dump1090. При запуске
командой dump1090 --interactive --net --net-http-port 8080 (возможно
если хотите еще прием AIS с картой запилить стоит сменить порт) читает
с rtl-sdr, декодирует, создает веб-сервер и рисует карту с самолетами
на веб-страничке. Карта по умолчанию работает по адресу localhost:8080
Опции программы
rtlsdr-specific options (use with --device-type rtlsdr)
--device <index|serial> select device by index or serial number
--enable-agc enable digital AGC (not tuner AGC!)
--ppm <correction> set oscillator frequency correction in PPM
--direct <0|1|2> set direct sampling mode

modesdeco2 - еще один декодер ADS-B A/C с виртуальным радаром
карта на порту 8585

ACARS
Данные системы acars тоже можно скормить виртуальному радару.
Программа acarsdeco2 или acarsdec
GitHub - TLeconte/acarsdec: ACARS SDR decoder
VDL MODE 2
Смена акарсу, но оказалась особо никому не нужна, мало кто ей пользуется.
декодер vdl mode 2 для линукс, правда с отправкой данных в VRS непонятки, вот plane plotter поддерживается.
GitHub - szpajder/dumpvdl2: VDL Mode 2 message decoder and protocol analyzer
ADS-C
JAERO декодер нескольких систем работающих через спутники inmarsat, для радаров интересна ADS-C
thebaldgeek | C-Band ADSC aka Satellite ADSB
Для приема нужна тарелка под два метра и конвертер C-диапазона

JAERO тоже умеет отправлять декодированное в виртуальный радар, радиус
действия такого наблюдения - обзор с геостационарного спутника, почти
половина земного шара.
IRIDIUM-ACARS
Iridium ACARS Decoding. | thebaldgeek.github.io
ACARS сообщения также пердаются через спутники IRIDIUM. Декодер
иридиума умеет парсить акарс сообщения, но вот для отправки данных в
виртуальный радар используется дополнительный скрипт на питоне.
AIS
Антенна

Чтение с rtl-sdr и декодирование - aisdeco2
Запуск приложения sudo aisdeco2 --udp 127.0.0.1:10110
AIS Dispatcher - free AIS data sharing tool | AISHub
За веб-сервер с картой отвечает AIS Dispatcher
wget https://www.aishub.net/downloads/dispatcher/install_dispatcher
chmod 755 install_dispatcher
sudo ./install_dispatcher
Заходим в настройки
http://IPADDRESS:8080
Username: admin
Password: admin
Заходим в конфиг

настраиваем передачу данных из UDP порта указанного при запуске.


сохраняем настройки, запускаем сервер и смотрим на кораблики
(если подключили приемник с антенной и находимся рядом с судоходным
водоемом, лол)

Результат работы AIS Dispatcher

Также есть програмка ais catcher которая сочетает в себе sdr приемник
сигнала с rtl, декодер и вебсервер с отображением судов на карте - AIS
Catcher

Метеозонды
Метеозонды это шары с метеодатчиками и gps приемниками которые
запускается дважды в сутки с метеостанций и передают свои координаты и
телеметрию.

Для их приема под линукс есть программа radiosonde-auto-RX которая
выводит принятые сигналы на веб-страничку, отображает графики изменения
телеметрии и положение зондов на карте.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Железо некоторых вебсдрок
PA3FWM вебсдр.
http://websdr.ewi.utwente.nl:8901/
После нескольких итераций железа вебсдр пришел к АЦП со скоростью
77.76MSPS, 16bit, FPGA производящей децимацию 3/4 и запихивающей поток в ETHERNET и компьютера который уже
занимается расчетом и отрисовкой FFT и демодуляцией, при чем на GPU.


Антенна - самопальный mini-whip, не лучшее решение честно говоря, создатель самого явления веб-сдр мог бы заморочиться.

Northern Utah websdr
https://www.sdrutah.org/
Тут все серьезнее, вебсдр представляет собой небольшую будку которая
стоит вдалеке от городов, посреди пустыни, имеет несколько серверов, в
качестве основных приемников используются Sofrock и качественные
звуковые карты. Антенны - несколько промышленных антенн, в основном
ЛПВА, как направленные так и всенаправленные.

Основные приемники - Softrock с внешними синтезаторами, также
используются RTL-SDR с внешними блоками АРУ (!), конвертерами,
усилителями, и все они собраны в стиле manhattan (навесным монтажом).
Примеры ниже.

Пример внешних блоков АРУ для "широкополосных" (по сравнению с Softrock) RTL-SDR.

Для примера блок-схема распределения ВЧ сигнала на одном из серверов.

KFS SDR
http://websdr1.kfsdr.com:8901/
Тоже использует жирные ЛПВА от TCI. Помимо серверов pa3fwm к ним подключено несколько kiwisdr.


Блоки делителей и кастомных фильтров.

Приемники подключены к серверу pa3fwm с помощью модифицированных rsp_tcp.

Стойка целиком.

KPH
https://www.radiomarine.org/kph-sdrs
Находится в здании сообщества истории морского радио, использует пачку
кивисдр и опять же промышленные ЛПВА (или активную рамку для НЧ
диапазонов).

