mirror of
http://git.ua1zbe.ru/ua1zbe/manuals.git
synced 2026-04-03 23:32:33 +00:00
604 lines
16 KiB
Markdown
604 lines
16 KiB
Markdown
# 📖 Полная инструкция по установке DVSwitch-Server на Ubuntu 22.04
|
||
|
||
> **Автор:** ua1zbe
|
||
> **Дата:** Апрель 2026
|
||
> **Сервер:** 192.168.1.34 (Ubuntu 22.04 LTS)
|
||
|
||
---
|
||
|
||
## 📋 Оглавление
|
||
|
||
1. [Введение](#введение)
|
||
2. [Требования к системе](#требования-к-системе)
|
||
3. [Проблемы при установке и их решения](#проблемы-при-установке-и-их-решения)
|
||
4. [Пошаговая установка](#пошаговая-установка)
|
||
5. [Настройка веб-дашборда](#настройка-веб-дашборда)
|
||
6. [Настройка Android приложения](#настройка-android-приложения)
|
||
7. [Конфигурация DVSwitch](#конфигурация-dvswitch)
|
||
8. [Управление сервисами](#управление-сервисами)
|
||
9. [Диагностика проблем](#диагностика-проблем)
|
||
|
||
---
|
||
|
||
## 📌 Введение
|
||
|
||
**DVSwitch-Server** — это серверное ПО для радиолюбителей, позволяющее подключаться к цифровым сетям (DMR, D-STAR, YSF, NXDN, P25) через IP. Состоит из нескольких компонентов:
|
||
|
||
| Компонент | Назначение |
|
||
|-----------|------------|
|
||
| **Analog_Bridge** | Преобразование между аналоговым и цифровым аудио (AMBE/IMBE ↔ PCM) |
|
||
| **MMDVM_Bridge** | Мост между различными цифровыми режимами |
|
||
| **DVSwitch-Server** | Основной серверный пакет |
|
||
| **Web_Proxy** | Веб-интерфейс для передачи аудио |
|
||
| **DVSwitch Dashboard** | Веб-дашборд для мониторинга |
|
||
| **md380-emu** | Эмулятор AMBE вокодера |
|
||
|
||
---
|
||
|
||
## 🖥️ Требования к системе
|
||
|
||
- **ОС:** Ubuntu 20.04/22.04 LTS или Debian 10/11/12
|
||
- **RAM:** Минимум 512 MB (рекомендуется 1 GB)
|
||
- **Диск:** 2 GB свободного места
|
||
- **Сеть:** Статический IP-адрес
|
||
- **Права:** root или sudo доступ
|
||
|
||
---
|
||
|
||
## ⚠️ Проблемы при установке и их решения
|
||
|
||
### Проблема 1: Репозиторий DVSwitch недоступен для Ubuntu 22.04
|
||
|
||
**Симптомы:**
|
||
```bash
|
||
wget http://dvswitch.org/buster
|
||
./buster
|
||
# Ошибка: Distribution is 'bookworm', exiting.
|
||
```
|
||
|
||
**Причина:** Скрипт `buster` проверяет версию ОС и отказывается работать на Ubuntu 22.04 (jammy).
|
||
|
||
**Решение:** Использовать скрипт `bookworm` вместо `buster`:
|
||
```bash
|
||
wget http://dvswitch.org/bookworm
|
||
chmod +x bookworm
|
||
sudo ./bookworm
|
||
```
|
||
|
||
---
|
||
|
||
### Проблема 2: Конфликт веб-серверов (Apache vs lighttpd)
|
||
|
||
**Симптомы:**
|
||
```bash
|
||
Job for apache2.service failed because the control process exited with error code.
|
||
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
|
||
```
|
||
|
||
**Причина:** DVSwitch устанавливает lighttpd, но Apache также пытается занять порт 80.
|
||
|
||
**Решение:**
|
||
```bash
|
||
# Остановить Apache
|
||
sudo systemctl stop apache2
|
||
sudo systemctl disable apache2
|
||
|
||
# Запустить lighttpd
|
||
sudo systemctl restart lighttpd
|
||
```
|
||
|
||
---
|
||
|
||
### Проблема 3: Dashboard показывает страницу Apache вместо DVSwitch
|
||
|
||
**Симптомы:** При открытии http://IP-адрес/ показывается "Apache2 Ubuntu Default Page"
|
||
|
||
**Причина:** DVSwitch Dashboard установлен в `/usr/share/dvswitch/`, но lighttpd настроен на `/var/www/html`.
|
||
|
||
**Решение:**
|
||
```bash
|
||
# Изменить конфигурацию lighttpd
|
||
sudo sed -i 's|server.document-root.*|server.document-root = "/usr/share/dvswitch/"|' /etc/lighttpd/lighttpd.conf
|
||
|
||
# Перезапустить lighttpd
|
||
sudo systemctl restart lighttpd
|
||
```
|
||
|
||
---
|
||
|
||
### Проблема 4: Сервисы не запускаются автоматически
|
||
|
||
**Симптомы:**
|
||
```bash
|
||
systemctl status analog_bridge
|
||
# Active: inactive (dead)
|
||
```
|
||
|
||
**Причина:** Конфигурационные файлы могут содержать ошибки или отсутствовать.
|
||
|
||
**Решение:**
|
||
```bash
|
||
# Проверить конфигурацию
|
||
cat /opt/Analog_Bridge/Analog_Bridge.ini
|
||
|
||
# Запустить вручную для проверки
|
||
/opt/Analog_Bridge/Analog_Bridge /opt/Analog_Bridge/Analog_Bridge.ini
|
||
|
||
# Если OK, запустить сервис
|
||
sudo systemctl start analog_bridge
|
||
sudo systemctl enable analog_bridge
|
||
```
|
||
|
||
---
|
||
|
||
### Проблема 5: Ошибки при загрузке TGList и YSFHosts
|
||
|
||
**Симптомы:**
|
||
```bash
|
||
Error, YSFHosts.txt file does not seem to be valid
|
||
Warning, download failure
|
||
Error, TGList_TGIF.txt file does not seem to exist
|
||
```
|
||
|
||
**Причина:** Файлы баз данных не загрузились при установке.
|
||
|
||
**Решение:**
|
||
```bash
|
||
# Перезапустить сервисы для повторной попытки
|
||
sudo systemctl restart mmdvm_bridge
|
||
|
||
# Или скачать вручную
|
||
cd /opt/MMDVM_Bridge
|
||
wget https://raw.githubusercontent.com/DVSwitch/YSFGateway/master/YSFHosts.txt
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 Пошаговая установка
|
||
|
||
### Шаг 1: Подготовка системы
|
||
|
||
```bash
|
||
# Обновить систему
|
||
sudo apt update && sudo apt upgrade -y
|
||
|
||
# Установить необходимые пакеты
|
||
sudo apt install -y wget curl git net-tools
|
||
```
|
||
|
||
---
|
||
|
||
### Шаг 2: Добавление репозитория DVSwitch
|
||
|
||
```bash
|
||
# Скачать скрипт репозитория (bookworm для Ubuntu 22.04)
|
||
cd ~
|
||
wget http://dvswitch.org/bookworm
|
||
|
||
# Сделать исполняемым
|
||
chmod +x bookworm
|
||
|
||
# Запустить от root
|
||
sudo ./bookworm
|
||
```
|
||
|
||
**Ожидаемый вывод:**
|
||
```
|
||
Starting DVSwitch repository install/correction
|
||
Downloading DVSwitch GPG keyring...
|
||
Verified: Valid DVSwitch Keyring (72147EC1E788D4C3)
|
||
Configuring /etc/apt/sources.list.d/dvswitch.list...
|
||
Updating package information...
|
||
Finished DVSwitch repository install
|
||
```
|
||
|
||
---
|
||
|
||
### Шаг 3: Установка DVSwitch-Server
|
||
|
||
```bash
|
||
# Обновить список пакетов
|
||
sudo apt update
|
||
|
||
# Установить DVSwitch-Server с веб-сервером
|
||
sudo apt install -y dvswitch-server lighttpd php-cgi
|
||
```
|
||
|
||
**Время установки:** ~5-10 минут
|
||
**Занимаемое место:** ~238 MB
|
||
|
||
---
|
||
|
||
### Шаг 4: Исправление конфликта веб-серверов
|
||
|
||
```bash
|
||
# Остановить Apache (если установлен)
|
||
sudo systemctl stop apache2
|
||
sudo systemctl disable apache2
|
||
|
||
# Настроить lighttpd для DVSwitch Dashboard
|
||
sudo sed -i 's|server.document-root.*|server.document-root = "/usr/share/dvswitch/"|' /etc/lighttpd/lighttpd.conf
|
||
|
||
# Перезапустить lighttpd
|
||
sudo systemctl restart lighttpd
|
||
```
|
||
|
||
---
|
||
|
||
### Шаг 5: Проверка установки
|
||
|
||
```bash
|
||
# Проверить версию
|
||
dvs --version
|
||
|
||
# Проверить сервисы
|
||
sudo systemctl status analog_bridge
|
||
sudo systemctl status mmdvm_bridge
|
||
sudo systemctl status webproxy
|
||
|
||
# Проверить веб-дашборд
|
||
curl http://localhost/ | grep "DVSwitch Dashboard"
|
||
```
|
||
|
||
---
|
||
|
||
## 🌐 Настройка веб-дашборда
|
||
|
||
### Доступ к дашборду
|
||
|
||
1. Откройте браузер
|
||
2. Введите: `http://192.168.1.34/` (замените на ваш IP)
|
||
3. Должен открыться **DVSwitch Dashboard**
|
||
|
||
### Разделы дашборда:
|
||
|
||
| Раздел | Описание |
|
||
|--------|----------|
|
||
| **Last Heard** | Последние прослушанные станции |
|
||
| **Local RF** | Локальные передачи |
|
||
| **System Monitor** | Загрузка CPU, память, температура |
|
||
| **Settings** | Текущие настройки сервера |
|
||
|
||
---
|
||
|
||
## 📱 Настройка Android приложения
|
||
|
||
### Шаг 1: Установка DVSwitch Mobile
|
||
|
||
**Вариант A: Google Play Store**
|
||
```
|
||
1. Откройте Google Play Store
|
||
2. Найдите "DVSwitch Mobile"
|
||
3. Установите приложение
|
||
```
|
||
|
||
**Вариант B: APK файл**
|
||
```
|
||
1. Посетите: https://apkpure.com/dvswitch-mobile/org.dvswitch
|
||
2. Скачайте последнюю версию APK
|
||
3. Установите на устройство (разрешите установку из неизвестных источников)
|
||
```
|
||
|
||
---
|
||
|
||
### Шаг 2: Настройка подключения
|
||
|
||
1. **Откройте DVSwitch Mobile**
|
||
|
||
2. **Нажмите "Add Connection"**
|
||
|
||
3. **Заполните параметры:**
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| **Connection Type** | USRP (Analog_Bridge) |
|
||
| **IP Address** | 192.168.1.34 (IP вашего сервера) |
|
||
| **Port** | 31001 |
|
||
| **Username** | (оставьте пустым) |
|
||
| **Password** | (оставьте пустым) |
|
||
| **Caller ID** | Ваш DMR ID |
|
||
|
||
4. **Нажмите "Save"**
|
||
|
||
5. **Подключитесь:** Нажмите на созданное подключение
|
||
|
||
---
|
||
|
||
### Шаг 3: Проверка подключения
|
||
|
||
1. Нажмите **PTT** (Push-To-Talk) в приложении
|
||
2. Говорите в микрофон
|
||
3. Проверьте дашборд — должна появиться активность
|
||
4. Проверьте логи сервера:
|
||
```bash
|
||
sudo journalctl -u analog_bridge -f
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ Конфигурация DVSwitch
|
||
|
||
### Настройка Analog_Bridge
|
||
|
||
**Файл:** `/opt/Analog_Bridge/Analog_Bridge.ini`
|
||
|
||
```ini
|
||
[GENERAL]
|
||
logLevel = 2
|
||
exportMetadata = true
|
||
transferRootDir = /tmp
|
||
subscriberFile = /var/lib/dvswitch/subscriber_ids.csv
|
||
decoderFallBack = true
|
||
useEmulator = true
|
||
emulatorAddress = 127.0.0.1:2470
|
||
pcmPort = 2222
|
||
|
||
[AMBE_AUDIO]
|
||
address = 127.0.0.1
|
||
txPort = 31103
|
||
rxPort = 31100
|
||
ambeMode = DMR
|
||
minTxTimeMS = 2500
|
||
gatewayDmrId = 1234567 ; ← Ваш DMR ID
|
||
repeaterID = 123456789 ; ← Ваш ID повторителя
|
||
txTg = 9 ; ← TG по умолчанию
|
||
txTs = 2 ; ← Слот (1 или 2)
|
||
colorCode = 1
|
||
|
||
[USRP]
|
||
address = 0.0.0.0 ; ← Слушать все интерфейсы
|
||
txPort = 31001 ; ← Порт для DVSwitch Mobile
|
||
rxPort = 31001
|
||
usrpAudio = AUDIO_USE_GAIN
|
||
usrpGain = 1.10
|
||
```
|
||
|
||
---
|
||
|
||
### Настройка MMDVM_Bridge
|
||
|
||
**Файл:** `/opt/MMDVM_Bridge/MMDVM_Bridge.ini`
|
||
|
||
```ini
|
||
[General]
|
||
Callsign=UA1ZBE
|
||
RptAddress=127.0.0.1
|
||
RptPort=31103
|
||
LocalAddress=127.0.0.1
|
||
LocalPort=31100
|
||
Debug=0
|
||
|
||
[DMR Network]
|
||
Enable=1
|
||
Address=brandmeister.network
|
||
Port=62031
|
||
Password=ваш_пароль ; ← Пароль от BrandMeister
|
||
Id=1234567 ; ← Ваш DMR ID
|
||
```
|
||
|
||
---
|
||
|
||
### Настройка для BrandMeister
|
||
|
||
1. **Получите пароль:**
|
||
- Посетите: https://brandmeister.network/
|
||
- Войдите под своим DMR ID
|
||
- Получите пароль для DVSwitch
|
||
|
||
2. **Отредактируйте MMDVM_Bridge.ini:**
|
||
```ini
|
||
[DMR Network]
|
||
Enable=1
|
||
Address=brandmeister.network
|
||
Port=62031
|
||
Password=ваш_пароль_от_BrandMeister
|
||
Id=1234567
|
||
```
|
||
|
||
3. **Перезапустите сервисы:**
|
||
```bash
|
||
sudo systemctl restart mmdvm_bridge
|
||
sudo systemctl restart analog_bridge
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 Управление сервисами
|
||
|
||
### Запуск/остановка/перезапуск
|
||
|
||
```bash
|
||
# Analog_Bridge
|
||
sudo systemctl start analog_bridge
|
||
sudo systemctl stop analog_bridge
|
||
sudo systemctl restart analog_bridge
|
||
|
||
# MMDVM_Bridge
|
||
sudo systemctl start mmdvm_bridge
|
||
sudo systemctl stop mmdvm_bridge
|
||
sudo systemctl restart mmdvm_bridge
|
||
|
||
# Web_Proxy
|
||
sudo systemctl start webproxy
|
||
sudo systemctl stop webproxy
|
||
sudo systemctl restart webproxy
|
||
|
||
# Все сервисы сразу
|
||
sudo systemctl restart analog_bridge mmdvm_bridge webproxy
|
||
```
|
||
|
||
### Автозапуск при загрузке
|
||
|
||
```bash
|
||
sudo systemctl enable analog_bridge
|
||
sudo systemctl enable mmdvm_bridge
|
||
sudo systemctl enable webproxy
|
||
sudo systemctl enable md380-emu
|
||
```
|
||
|
||
### Просмотр логов
|
||
|
||
```bash
|
||
# В реальном времени
|
||
sudo journalctl -u analog_bridge -f
|
||
sudo journalctl -u mmdvm_bridge -f
|
||
|
||
# Последние 50 строк
|
||
sudo journalctl -u analog_bridge -n 50
|
||
|
||
# За сегодня
|
||
sudo journalctl -u analog_bridge --since today
|
||
```
|
||
|
||
### Проверка статуса
|
||
|
||
```bash
|
||
# Все сервисы DVSwitch
|
||
sudo systemctl list-units --type=service | grep -E "analog|mmdvm|webproxy|dvswitch"
|
||
|
||
# Детальный статус
|
||
sudo systemctl status analog_bridge --no-pager
|
||
```
|
||
|
||
---
|
||
|
||
## 🐛 Диагностика проблем
|
||
|
||
### Сервис не запускается
|
||
|
||
```bash
|
||
# Проверить статус
|
||
sudo systemctl status analog_bridge
|
||
|
||
# Проверить логи
|
||
sudo journalctl -u analog_bridge -n 100
|
||
|
||
# Проверить конфигурацию
|
||
/opt/Analog_Bridge/Analog_Bridge --check /opt/Analog_Bridge/Analog_Bridge.ini
|
||
|
||
# Запустить вручную для отладки
|
||
/opt/Analog_Bridge/Analog_Bridge /opt/Analog_Bridge/Analog_Bridge.ini
|
||
```
|
||
|
||
---
|
||
|
||
### Веб-дашборд не открывается
|
||
|
||
```bash
|
||
# Проверить lighttpd
|
||
sudo systemctl status lighttpd
|
||
|
||
# Проверить порт 80
|
||
sudo netstat -tlnp | grep :80
|
||
|
||
# Проверить конфигурацию
|
||
cat /etc/lighttpd/lighttpd.conf | grep document-root
|
||
|
||
# Перезапустить
|
||
sudo systemctl restart lighttpd
|
||
```
|
||
|
||
---
|
||
|
||
### Нет звука при передаче
|
||
|
||
1. **Проверьте настройки gain в Analog_Bridge.ini:**
|
||
```ini
|
||
usrpAudio = AUDIO_USE_GAIN
|
||
usrpGain = 1.50 ; Увеличьте значение
|
||
```
|
||
|
||
2. **Проверьте логи на ошибки AMBE:**
|
||
```bash
|
||
sudo journalctl -u analog_bridge | grep -i ambe
|
||
```
|
||
|
||
3. **Убедитесь, что md380-emu запущен:**
|
||
```bash
|
||
sudo systemctl status md380-emu
|
||
```
|
||
|
||
---
|
||
|
||
### Приложение не подключается
|
||
|
||
1. **Проверьте брандмауэр:**
|
||
```bash
|
||
sudo ufw status
|
||
sudo ufw allow 31001/udp
|
||
sudo ufw allow 2222/udp
|
||
```
|
||
|
||
2. **Проверьте, что порт слушается:**
|
||
```bash
|
||
sudo netstat -ulnp | grep 31001
|
||
```
|
||
|
||
3. **Проверьте IP-адрес в приложении:**
|
||
- Должен совпадать с `hostname -I` на сервере
|
||
|
||
---
|
||
|
||
## 📊 Порты и протоколы
|
||
|
||
| Порт | Протокол | Назначение |
|
||
|------|----------|------------|
|
||
| 31001 | UDP | USRP (DVSwitch Mobile) |
|
||
| 31100 | UDP | MMDVM_Bridge ↔ Analog_Bridge (RX) |
|
||
| 31103 | UDP | MMDVM_Bridge ↔ Analog_Bridge (TX) |
|
||
| 2222 | UDP | Web_Proxy (аудио поток) |
|
||
| 2470 | UDP | md380-emu (AMBE эмулятор) |
|
||
| 80 | TCP | Веб-дашборд |
|
||
|
||
---
|
||
|
||
## 📝 Полезные команды
|
||
|
||
```bash
|
||
# Проверка версии DVSwitch
|
||
dvs --version
|
||
|
||
# Меню конфигурации (интерактивное)
|
||
sudo dvs
|
||
|
||
# Пересоздать конфигурацию
|
||
sudo /usr/local/dvs/init_config.sh
|
||
|
||
# Обновить базу DMR ID
|
||
sudo /usr/local/dvs/tgdb.sh
|
||
|
||
# Проверка сети
|
||
ping -c 4 brandmeister.network
|
||
|
||
# Мониторинг в реальном времени
|
||
watch -n 1 'sudo systemctl status analog_bridge mmdvm_bridge --no-pager'
|
||
```
|
||
|
||
---
|
||
|
||
## 🔗 Полезные ссылки
|
||
|
||
- **Официальный сайт:** http://dvswitch.org/
|
||
- **GitHub DVSwitch:** https://github.com/DVSwitch
|
||
- **DVSwitch Mobile (APK):** https://apkpure.com/dvswitch-mobile/org.dvswitch
|
||
- **BrandMeister:** https://brandmeister.network/
|
||
- **Форум DVSwitch:** https://dvswitch.groups.io/g/main
|
||
- **Wiki DVSwitch Mobile:** https://dvswitch.groups.io/g/Mobile/wiki
|
||
|
||
---
|
||
|
||
## 📞 Поддержка
|
||
|
||
Если возникли проблемы:
|
||
|
||
1. Проверьте логи: `sudo journalctl -u analog_bridge -f`
|
||
2. Проверьте конфигурацию: `cat /opt/Analog_Bridge/Analog_Bridge.ini`
|
||
3. Обратитесь на форум: https://dvswitch.groups.io/
|
||
4. Проверьте wiki: https://dvswitch.groups.io/g/main/wiki
|
||
|
||
---
|
||
|
||
**Версия инструкции:** 1.0
|
||
**Последнее обновление:** Апрель 2026
|
||
**Протестировано на:** Ubuntu 22.04 LTS
|