Spis treści

Niniejszy opis jest inspirowany i zawiera fragmenty opisów zawartych na innych stronach - spis na końcu Opis powstał przy okazji tworzenia wsadu na Raspberry Pi 3B+ w skład którego wchodzą:
Serwer HBLink, HBmonitor, FRN serwer, FRN klient, DVSwitch_mobile tools.
Wsad będzie dostępny na stronie Do Pobrania

Plan działania:
1) Serwer DMR - instalacja HBLink + HBMonitor
2) Serwer FRN - instalacja AlterFRN serwer
3) Serwer DVSwitch_mobile - instalacja niezbednych narzędzi DVSwitchTools

Zacznijmy od przygotowania sprzetu i systemu




RaspberyPi3B+ , karta pamięci, kabel zasilania, czytnik kart SD


Udajemy sie na stronę i pobieramy dogodny dla nas wsad Raspbian. Normalnie używam wersji bez pulpitu ale wychadząc na przeciw gustom dziś będzie wersja z desktop.


Po pobraniu należy rozpakować plik *.zip i wgrać go na kartę. Oczywiście ja ze względu na posiadany system Linux na PC bedę zamieszczał zdjęcia poglądowe a każdy musi użyć odpowiedniego oprogramowania stosownego do jego systemu operacyjnego



Jeśli nasz Raspberry będzie używał połączenia WIFI a nie LAN to warto przygotować stosowny plik informujący system Raspbian z jaką siecią chcemy sie połączyć i jakie jest hasło.
Przydatna tutaj jest strona https://www.pistar.uk/wifi_builder.php



Na stronie wystarczy jedynie poprawnie wpisac nazwe sieci i hasło, w moim przypadku nazwa sieci to pi a hasło raspberry tak dla przykładu.

Uzyskany plik zapisujemy na dysku gdyż bedziemy musieli wgrać go na karte pamieci




Teraz zaczynamy prace na samym RaspberryPi. Aby to uczynić wkładamy karte , podłączamy zasilanie i wyszukujemy w sieci lokalnej jaki adres IP ma nasze urządzenie. Mozna to zrobić poprzez skanowanie sieci dzieki programom na telefonie lub zalogować sie na router i sprawdzić jakie są podłączone urządzenia.


Przykładowo u mnie wygląda to tak i wiem że raspberry ma adres IP 192.168.1.24
Uruchamiamy program do połączeń SSH i wpisujemy adres ip i dane do logowania



I będziecie mieli komunikat o braku możliwości połączenia. Jest to efektem zmian w systemie Raspbian i domyślnie wyłączono SSH podobno z powodów bezpieczeństwa
Rozwiązaniem jest albo podłączenie raspberry do monitora i uruchomienie z poziomu klawiatura lub jak ktoś lubi mimo wszystko zdalną prace to wraz z wgrywaniem pliku z ustawieniami sieci WiFi na partycją BOOT utworzyć tam plik o nazwie SSH bez rozszeżenia.




Kolejne podejście do zalogowania jest już udane i można wstepnie skonfigurować nasze RaspberryPi. Domyślny login SSH to 'pi' a hasło 'raspberry'.


Po zalogowaniu wpisujemy sudo raspi-config i wybieramy 5 a następnie uruchamiamy P2 i P3 czyli SSH oraz VNC-zdalny pulpit.



Logujemy się za pomocą zdalnego pulpitu VNC bo pewnie tak będzie łatwiej ludziom z pod znaku MS-Windows.


Po zalogowaniu mamy komunikat powitalny i jednocześnie konfigurator systemu.


Wybieramy interesujacy nas język systemu oraz układ klawiatury


System zapyta nas o zmianę hasła domyślnego 'raspberry' na nasze prywatne. - ZALECANE


Pozwoli nam wybrać inną sieć WiFi jeśli tego chcemy.


Na końcu pozwoli nam UAKTUALNIĆ system operacyjny - ZALECANE


Finalnie po restarcie mamy system w jezyku polskim z aktualnym systemem dopasowanym do naszego modelu RaspberryPi




1) Serwer DMR - instalacja HBLink + HBMonitor

Czas na instalację serwera DMR - HBlink

Uruchamiamy terminal i Wpisujemy:

sudo -s
cd /opt

git clone https://github.com/n0mjs710/HBlink3.git

cd /opt/HBlink3




Dzięki tym komendom pobraliśmy instalkę HBLink i dokonamy teraz jej instalacji dzięki poniższym komendom

chmod +x install.sh
./install.sh




Po instalacji możemy przejść do etapu wstępnej konfiguracji.

Plik konfiguracyjny hblink.cfg
Wydając komende cp hblink-SAMPLE.cfg hblink.cfg robimy kopię przykładowego pliku konfiguracyjnego nadając mu jednocześnie docelową nazwę którą rozpozna program HBLink

Edytujemy ten plik poprzez nano hblink.cfg i dokonujemy zmian w konfiguracji. Wiele stron ma te opisy ja podam MÓJ i nie traktować go proszę jako poprawny

Przedstawiam moje zmiany w pliku i prosze sobie porównać z waszymi - jednocześnie prosze o lekturę stron źródłowych aby zapoznać się z innymi konfiguracjami i sposobami wyjaśnienia co-jak-dlaczego


[GLOBAL]
PATH: ./
PING_TIME: 15
MAX_MISSED: 3
USE_ACL: False
REG_ACL: PERMIT:ALL
SUB_ACL: PERMIT:ALL
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL



Ustawienia wysyłania RAPORTÓW niezbednych do pracy monitora www
[REPORTS]
REPORT: True
REPORT_INTERVAL: 10
REPORT_PORT: 4321
REPORT_CLIENTS: 127.0.0.1



Ustawienia LOGów systemowych
[LOGGER]
LOG_FILE: /tmp/hblink.log
LOG_HANDLERS: console-timed
LOG_LEVEL: INFO
LOG_NAME: HBlink



Ustawienia pobierania aktualizacji bazy danych użytkowników
[ALIASES]
TRY_DOWNLOAD: True
PATH: ./
PEER_FILE: peer_ids.json
SUBSCRIBER_FILE: subscriber_ids.json
TGID_FILE: talkgroup_ids.json
PEER_URL: https://www.radioid.net/static/rptrs.json
SUBSCRIBER_URL: https://www.radioid.net/static/users.json
STALE_DAYS: 7



Ustawienia OPEN BRIDGE służącego do połączeń miedzy-serwerowych. Na początku jest niepotrzebna i zmieniamy paramert ENABLED z True na False
[OBP-1]
MODE: OPENBRIDGE
ENABLED: False




Tworzymy własny MASTER do którego bedziemy podłączać nasz HotSpoty.
[MASTER-1]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 10
EXPORT_AMBE: False
IP:
PORT: 54000
PASSPHRASE: passw0rd
GROUP_HANGTIME: 5
USE_ACL: False
REG_ACL: PERMIT:ALL
SUB_ACL: PERMIT:ALL
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL



Ten dział można kopiować w zależności ile kont chcemy zrobić, ale należy pamiętać aby NAZWA i PORT sie nie pokrywały
[MASTER-2]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 10
EXPORT_AMBE: False
IP:
PORT: 54010
PASSPHRASE: passw0rd
GROUP_HANGTIME: 5
USE_ACL: False
REG_ACL: PERMIT:ALL
SUB_ACL: PERMIT:ALL
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL


Wyłączamy resztę funkcji
[REPEATER-1]
MODE: PEER
ENABLED: False
...

[XLX-1]
MODE: XLXPEER
ENABLED: False


Wiem wiem ciągnie się jak flaki w oleju ale staram sie wytłumaczyć najprościej jak potrawię
Po przebrnięciu tego można zapisac plik i prześć do kolejnego etapu.




Plik reguł rules.py
Kolejnym etapem jest przygotowanie pliku który jest odpowiedzialny za kierowanie ruchem w naszym serwerze. Wstepnie zrobimy ten plik pusty a dalsze tłumaczenie bedzie w innym dziale, Narazie chodzi nam o samo uruchomienie serwera i możliwość podłączenia do niego hostpota.
Komenda cp rules_SAMPLE.py rules.py robi kopię przykładowego pliku regół nadając mu jednocześnie docelową nazwę którą rozpozna program HBLink

I następnie go edytujemy komendą nano rules.py

BRIDGES = {
'WORLDWIDE': [
{'SYSTEM': 'MASTER-1', 'TS': 1, 'TGID': 1, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': ............
{'SYSTEM': 'CLIENT-1', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': ............
],
'ENGLISH': [
{'SYSTEM': 'MASTER-1', 'TS': 1, 'TGID': 13, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': ............
{'SYSTEM': 'CLIENT-2', 'TS': 1, 'TGID': 13, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': ............
],
'STATEWIDE': [
{'SYSTEM': 'MASTER-1', 'TS': 2, 'TGID': 3129, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': ............
{'SYSTEM': 'CLIENT-2', 'TS': 2, 'TGID': 3129, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': ............
]
}


kasujemy wszystko pomiędzy znakami { } i pozostawiamy plik pozbawiony regół w celu uruchomienia serwera. To najbezpieczniejsza opcja, a do edycji i tworzenia regół kanałów wracać można w każdej chwili

BRIDGES = {
}


Taki plik zapisujemy i przechodzimy do następnego kroku czyli utworzenie pliku startowego/autostart.
zanim to zrobimy możemy poprzez komende /usr/bin/python3 /opt/HBlink3/bridge.py uruchomić HBLink ręcznie i sprawdzić czy raportuje nam w terminalu jakieś błędy



AutoStart
Tworzymy plik startowy hblink komendą nano /lib/systemd/system/hblink.service a następnie wklejamy poniższą zawartość po czym zapisujemy ów plik

[Unit]
Description=HB bridge all Service

After=network-online.target syslog.target
Wants=network-online.target

[Service]
StandardOutput=null
WorkingDirectory=/opt/HBlink3
RestartSec=3
ExecStart=/usr/bin/python3 /opt/HBlink3/bridge.py
Restart=on-abort

[Install]
WantedBy=multi-user.target


Sterowanie teraz odbywa się poprzez komendy :
systemctl enable hblink włączenie autostart
systemctl disable hblink wyłączenie autostart
systemctl start hblink uruchomienie hblink
systemctl stop hblink wyłączenie hblink
systemctl status hblink status hblink


Po wydaniu koment ENABLE, START i STATUS powinniście mieć taki wynik

I mamy zielone światło do przejścia o krok dalej



HBmonitor - czyli interfejs www - instalacja
Opis zrobię w/g opisu kolegi SP2ONG który podjął się naniesienia własnych modyfikacji na istniejący HBmonitor w ramach dvswitch.groups.io
Należy tu zaznaczyć iż wszystko jest na zasadach OpenSource i wykonywane jest w ramach wolontariatu bezpłatnego Jak coś się dostaje ZA DARMO to nie ma co narzekać, tymbardziej iż projekt HBLink i HBmonitor jest rozwojowy i nigdy nie będzie można powiedzieć iż jest to jakaś finalna stabilna pozbawiona błędów wersja

Pobieranie i instalacja
cd /opt

git clone https://github.com/sp2ong/HBmonitor.git

cd HBmonitor

chmod +x install.sh

./install.sh

cp config_SAMPLE.py config.py



Edycja i konfiguracja nano config.py

W tym pliku możemy na początek zmienić nazwę własnego serwera, ale i to niekonieczne
Wyjaśnienie wszystkich a raczej tych niezbędnych funkcji w konfiguracji czy to HBLink czy HBmonitor bedzie tematem innej strony


HBmonitor - Autostart
Podobnie jak z HBlink tworzymy teraz pliki AUTOSTARTU

Trorzymy plik startowy nano /lib/systemd/system/hbmon.service i wklejamy poniższą zawartość
[Unit]
Description=HBmon Service

After=network-online.target syslog.target
Wants=network-online.target

[Service]
StandardOutput=null
WorkingDirectory=/opt/HBmonitor
RestartSec=3
ExecStart=/usr/bin/python3 /opt/HBmonitor/monitor.py
Restart=on-abort

[Install]
WantedBy=multi-user.target



Sterowanie teraz odbywa się poprzez komendy :
systemctl enable hbmon włączenie autostart
systemctl disable hbmon wyłączenie autostart
systemctl start hbmon uruchomienie hbmon
systemctl stop hbmon wyłączenie hbmon
systemctl status hbmon status hbmon


Po wydaniu koment ENABLE, START i STATUS powinniście mieć taki wynik


Po wpisaniu w przeglądarkę www adresu http://ip-raspberry:8080 powinniśmy zobaczyć





I mamy zielone światło do przejścia o krok dalej. A NIE TO KONIEC INSTALACJI :)



2) Serwer FRN - instalacja AlterFRN serwer


Instalacja i uruchomienie

cd /opt
wget http://alterfrn.ucoz.ru/S6352/FRNServerConsole.Linux-armhf.6352r.tgz
tar -zxvf FRNServerConsole.Linux-armhf.6352r.tgz
mv FRNServerConsole.Linux-armhf.6352r FRNserver

cd FRNserver
mv FRNServerConsole.Linux-armhf.r6352 FRNserver


Plik AUTOSTAT wykonujemy podobnie, czyli tworzymy plik startowy nano /lib/systemd/system/frnserver.service i wklejamy poniższą zawartość

[Unit]
Description=FRN_SERVER
After=network.target

[Service]
ExecStart=/opt/FRNserver/FRNserver
TimeoutSec=30
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10

[Install]
WantedBy=multi-user.target


Sterowanie teraz odbywa się poprzez komendy :
systemctl enable frnserver włączenie autostart
systemctl disable frnserver wyłączenie autostart
systemctl start frnserver uruchomienie frnserver
systemctl stop frnserver wyłączenie frnserver
systemctl status frnserver status frnserver


Konfiguracja


W katalogu FRNserver mamy 2 pliki konfiguracyjne networks.cfg odpowiedzialny za układ kanałów serwera oraz server.ini odpowiedzialny za ustawienia serwera i jego współprace z SYSmanager serwerami w Holandii czy Nienczech

Edytujemy plik nano networks.cfg
który wygląda tak


dokonujemy zmian w układzie kanałów i dla przykładu można tak jak na zdjęciu poniżej. Postaram sie wyjaśnić podstawowe funkcje.



Przykładowa linijka:
KANAL_1 | Hidden=N ; ManagerMode=N ; QuarantineTime=5000 ; SpeechPause=3000 ; AccessInfoMode=A ; OwnerEMail=Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.
NAZWA KANAŁU | FUNKCJE KANAŁU

Hidden= Y/N - Kanał ukryty
ManagerMode=F/N/S - Współpraca z MANAGEREM ( jest nim Holandia lub Niemcy ) F- pełna wymagane poprawne hasła, N- powiadamianie - hasła dowolne a serwer tylko powiadamia Manager o kliencie, S- Samostanowiący - kanał JAWNY ale kanału na spisie holandii.
QuarantineTime=5000 - Czas zwłoki kiedy klient podłączy sie do serwera a kiedy zobaczy jego zawartość. Pomaga przy czesto podłączających sie bramkach ale i przydatne w przypadku posiadania listy ludzi do zablokowania/teleportacji na inny kanał
SpeechPause=3000 - wymuszony czas przerwy pomiedzy nadawaniami klientów.
AccessInfoMode=A - wyswietlanie wiadomości powitalnej na kanale
OwnerEMail= - adres email administratora kanału. Nie mylić z uprawnieniami MODERATORA nadawanymi przez ADMINISTRATORA

Więcej, dużo więcej jest na stronie http://alterfrn.ucoz.ru/index/standalone_frn_server/0-24 - my tu nie bedziemy się zabawiać więcej niż podstawową konfiguracją.


Czas na konfigurację serwera jako takiego i edytujemy nano server.ini
który wygląda tak


Dokonujemy zmian w wierszach jak poniżej
ServerCharsetName=WINDOWS-1250

PresentServerAddress=adres publiczny serwera ( jeśli używasz MANAGER) jeśli serwer jest tylko jako lokalny wpisać localhost lub 127.0.0.1
ServerOwnerEMail=Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript. - Konfo FRN klienta superadministratora mającego dostęp wszędzie i mogącego wszystko niezależnie od ustawień kanałów ( tryb niewidoczny klient dla innych itp )
BackupServerAddress=adres.serwera.zapasowego - w przypadku serwera loklnego niewymagane

[Manager]
ManagerEnabled=no - włączyć usługę połączenia się z Holadią Yes/No
ManagerAuthEMail=email_registered_with_sysman_EU - email konta FRN z Holandii przypisanego TYLKO do serwera - inne niż niżej
ManagerAuthPassword=password_received_from_sysman_EU - hasło konta FRN

[Manager1] ManagerEnabled=no - Włączyć usługę połączenia się z Niemcami Yes/No
ManagerAuthEMail=email_registered_with_sysman_DE - email konta FRN z Niemiec przypisanego TYLKO do serwera - inne niż wyżej
ManagerAuthPassword=password_received_from_sysman_DE - hasło konta FRN




Osobiście zachęcam do używania serwera NL jak i DE bo jak działa Holandia każdy z FRN'owiczów wie a Niemcy w tym czasie nie zaliczyły ani jednej zwiechy i gratulacje tu dla kolegi Dirk'a za kawał dobrej roboty




Po wszystkich tych zabiegach konfiguracji wpisujemy komende uruchomienia systemctl start frnserver
i łączymy się FRN klientem z adresem IP naszej maliny

Konto normalnego klienta
Konto admin/superadmin



3) Serwer DVSwitch_mobile - instalacja



Bardziej powinno się nazwać to bramką lub narzędziem dla DVSwitch_mobile aplikacji na system android, dzięki której jest możliwe wykonywane połączeń DMR/Dstar dzieki telefonowi. Łopatologicznie to taki pośrednik a jednocześnie przetwornik analogowo/cyfrowy

Przechodzimy do pobrania i instalacji


cd /tmp
wget http://dvswitch.org/install-dvswitch-repo
chmod +x install-dvswitch-repo
./install-dvswitch-repo
apt-get update
apt-get install analog-bridge
apt-get install mmdvm-bridge



Po poprawnej instalacji wydajemy komendy sprawdzające status zainstalowanych usług przed przejściem do konfiguracji systemctl status (analog_bridge/mmdm_bridge/md380-emu)


Jeśli wszystkie są wyłączone przechodzimy do konfiguracji. Na początek mmdvm_bridge.


cd /opt/MMDVM_Bridge
nano MMDVM_Bridge.ini

Dokonujecie zmian w wierszach :

Callsign=Marcin
Id=161000001

[DMR]
Enable=1
ColorCode=1
EmbeddedLCOnly=1
DumpTAData=0

[DMR Network]
Enable=1
Address=127.0.0.1
Port=50010
Jitter=360
Local=62032
Password=passw0rd

W zakładce [DMR Network] wpisujecie adres/hasło/port waszego nowozainstalowanego serwera HBLink lub innego do którego macie dostęp. Jak konfigurowaliśmy serwer HBLink w zakładce [MASTER-1] mamy te dane podane
Oczywiście zakładam że serwer jest instalowany lokalnie do zabawy czyli nie jesteście zobowiązani podać znaku i numeru DMR Id.

Aby sprawdzić poprawność tej części wystarczy nakazać uruchomić się temu programowi systemctl start mmdvm_bridge


Widać że wstępnie klient mmdvm posadził się na naszym serwerze i czas na jego część analogową czyli analog_bridge



cd /opt/Analog_Bridge
nano Analog_Bridge.ini


Dokonujecie zmian w wierszach :

useEmulator = true

gatewayDmrId = 1610000
repeaterID = 161000001

[USRP]
address = 169.254.42.42
txPort = 5505
rxPort = 5505
aslAudio = AUDIO_USE_GAIN
agcGain = -3
dmrAudio = AUDIO_UNITY
dmrGain = 0.4



Teraz dla sprawdzenia możemu uruchomić analog_bridge i md380-emu
systemctl start analog_bridge
systemctl start md380-emu

Zalecam sprawdzenie poprawność uruchomienia się wszystkich w/w modułów poprzez komende systemctl status (analog_bridge/md380-emu)




Możemy zaprogramować telefon i sprawdzić działanie









I to chyba WSZYSTKO z instalacji resztę zagadnienia konfiguracji pozostawiam dla kumatych
'73 Marcin HF4ALL/M0IQF







Niniejszym informuję iż opis powstał w/g mojej najlepszej intencji lecz ograniczonym zasobie wiedzy i doświadczenia. Nie ponoszę odpowiedzialności za ewentualne szkody. Robisz to na własne ryzyko i dlatego pamiętaj o kopii zapasowej






Źródła:
http://sq9lm.lukaszmisiura.com/jak-uruchomic-wlasny-lokalny-hblink/
http://sp2ong.noip.pl/pl/blog/stworz-swoj-wlasny-serwer-dmr
https://www.chrishoodblog.com/make-your-own-dmr-server/
https://dvswitch.groups.io

Wsad do pobrania Do pobrania

 

Kontynuacją tego projekty jest MULTI-RoIP Gateway Multi-RoIP Gateway v1.0