Finalna i ostatnia wersja DMR/Dstar'a i SVXreflector klient w jednym. Z praktycznego powodu czas zapomnieć o DVPi ( DMR/Dstar ) i skupić się na samym SVX kliencie. Postaram sie w tym artukule przybliżyć konfiguracjię poszczególnych elementów tego programu, tak aby każdy mógł sobie go ustawić pod siebie.
Od samego początku zastanawiałem się od czego zacząć kolejny raz opisywać projekt Analogowego Network Radio na bazie SVXLink, i przyszło mi na myśl że skoro to ostatnia edycja aDVPi to chyba zacznę od tego od czego się ta cała przygoda moja ale i nie tylko moja zaczeła.
Na początku było DVPi , czyli programowe podejście do zagadnienia DMR/Dstar zaprezentowane przez kolegę KD8CEC, ale równie prędko było coś w czym się zakochałem, a to coś zazwyczaj znajduje się na końcu artykułów, jako zwieńczenie każdego projektu.
OBUDOWA do DVPi zaprojektowana przez Dawida MSR z hblink.de
Prawda jest taka że to właśnie obudowa powodowała że tak często wracałem do tego projektu jak zainteresowanie DMR'ami , HBLink'ami już przemineło. Dzięki takiej bazie powstało wiele moich "wariacji" i wiele godzin spędziłem w przyjemny dla mnie sposób - a chyba to jest najważniejsze w hobby , by cieszyło.
Dlatego z przyjemnością pragnę wspomnieć o tym iż można sobie taką obudowę wydrukować samemu na drukarce 3D lub zlecić zewnętrznemu podmiotowi, dzięki plikom udostępnionym przez kolegę Dawida. Oto link do strony z której można je pobrać https://www.thingiverse.com/thing:6413629
Przyznać muszę że w momencie gdy takie coś stoi na półce to grzechem jest aby się obrastało kurzem , dlatego zawsze chciałem temu dać jakieś dodatkowe życie. Dlatego były wszystkie wariacje i modyfikacje programowe opisane głównie w DVPi+ , i zachowując standard połączeń GPIO i wszystkiego co przedstawił kolega KD8CEC jako DVPi postanowiłem że dlaczego nie dodać tu jeszcze analogu. Na początku były wariacje z oprogramowaniem AlterFRN ale finalnie padło na SVXlink ze względów na większe "zaufanie" do softu jaki pakujemy sobie w sieć lokalną, ale i z czasem doceniłem za ogrom możliwości jakie on daje i jak bardzo sormotnie można go modzić.
aDVPi 2024 - budowa
I tak z DVPi ( Digital Voice Pi ) powstała wariacja aDVPi ( Analog-Digital Voice Pi ) którego ostatnią edycję 2024 pragnę Wam zaprezentować.
Dla przypomnienia warstwa sprzętowa DVPi która a raczej do której wszystko było dostosowywane w aDVPi, tak aby cały czas była w pełni kompatybilność wsteczna. Oczywiście należy uwzględnić iż schemat pokazuje elementy niezbędne do pełnej obsługi DMR/Dstar jako DVPi.
W przypadku jedynie SVXlink to potrzebne nam jest swtitch PTT S/W, i jeśli ktoś chce diody sygnalizujące status.
Do tego trzeba jeszcze dodać ekran dotykowy 3,5" , kartę dźwiękową USB , wzmacniacz audio i głośniczek, oraz mikrofon. Moją bazą na ten projekt jest Raspberry 3B+ i to jest najmniejsze co można do tego projektu użyć.
Należy także uwzględnić że do samego uruchomienia SVXlink nie są nam potrzebne wszystkie przedstawione na powyższym zdjęciu komponenty. Wystarczy przycisk PTT oraz opcjonalnie diody.
Klient SVXLink został wyposażony w modyfikacje svxlink jakie Waldek SP2ONG udostępnił w ramach projektu FM POLAND, oraz to co najważniejsze w tym projekcie to fakt że dzięki "SvxLink Dashboard © SP2ONG 2021" mogłem poprzez modyfikację zbudować i dostosować panel sterowania pod ekran 3,5"
To co widzimy to zdjęcie głównego panelu sterowania na którym mamy moim zdaniem wszystkie istotne informacje o stanie połączenia z SVXreflectorem, oraz informacje o aktywności na reflektorze pobierane poprzez API. Mamy także cztery programowalne przyciski pozwalające na wybór grupy TG lub szybkie zlinkowanie i rozlinkowanie z reflectorem. Na samym dole mamy przyciski funkcyjne pozwalające nam na przemieszczanie się pomiędzy Klawiaturą DTMF, Szybkim wyborem TG, Ostatnio słyszanymi stacjami, dashboardem reflektora, EchoLinkiem, FRNem, i konfiguracją.
W ramach prezentacji jak wygląda szata graficzna i dostępne funkcje które będą tu opisywane pozwolę sobie przedstawić materiał video który w sposób trochę płynniejszy przedstawi sposób poruszania się po aDVPi.
Pragnę zaznaczyć iż przedstawione materiały pochodzą z sieci FM POLAND ale także z prywatnego reflektora, dlatego czasami na zdjęciach nie będziecie widzieli "krótkofalarskich" znaków, ponieważ Network Radio jest dla każdego.
Plik *.iso
Skoro zaczęte było od końca to idźmy dalej w tym kierunku. Zaprezentowany wsad na RaspberryPi jest i będzie wiecznie w wersji BETA i nie przewiduje aby kiedykolwiek powstała wersja taka w 100% dokończona.
https://d4a.uk/index.php/pobieranie/category/1-raspberrypi?download=67:advpi-2024-v1-beta
Obraz *.iso jest w wersji 2024_v1.1 ( 2024.01.14 ) - zawiera naniesione zmiany odnośnie kolorystyki czcionki, autouruchamianie SVXLink, oraz auto powracanie menu do ekranu głównego po upływie 20-30 sekund, a także zmieniony tryb wyświetlania "kafelków" aktywności tak aby uwzględniały parametr MODE wpisany w pliku node_info.json Tak więc "kafelek" może teraz wyświetlać takie dane z tego pliku jak: Znak, TG, Imię, Miejscowość, Modulację, Częstotliwość
Opis funkcji i metod zmiany ustawień - personalizacji
Proszę również zapoznać się z tekstem który napisałem odnośnie starszych wersji aDVPi ponieważ może się okazać iż w tym opisie nie umieściłem czegoś o czym zapomniałem a tam to było opisane. Zalecam zapoznanie się z DVPi+
Edycja odbywa się poprzez połączenie SSH
Login : pi
Hasło : dvpi
Podłączenie do SVXreflector
No i chyba to od czego powinniśmy zacząć czyli konfiguracja SVXLINK aby połączył się z wybranym SVXreflectorem. Aby to uczynić edytujemy plik svxlink.conf
a potem node_info.json
. Edycję pliku konfiguracyjne robimy komendą sudo nano /etc/svxlink/svxlink.conf
W pliku tym zmianiamy dane połączenia z SVXreflector oraz grupy TG jakie mają być domyślne i monitorowane. DANE TE OTRZYMAMY od administratora / opiekuna SVXreflector'a
HOSTS= ( tu wpisujemy adres reflectora )
HOST_PORT= ( port reflectora )
CALLSIGN= ( twój znak )
AUTH_KEY= ( hasło jakie dostaliśmy od administratora )
DEFAULT_TG= ( główna grupa TG - taka z którą łączymy się tylko poprzez naciśnięcie PTT domyślnie )
MONITOR_TGS= ( Grupy TG których aktywności nasłuchujemy, jeśli pojawi się na nich jakikolwiek sygnał, automatycznie będziemy na nią przeniesieni )
/ Dostępne są również warianty z konfiguracją serwera głównego i zapasowego - dlatego ZAWSZE najpierw poproś o pomoc opiekuna serwera, w poprawnej konfiguracji. Przykład pokazany jest PODSTAWOWĄ opcją. /
Podobnie jest z plikiem informacji node_info.json
- generalnie każdy reflektor może zawierać więcej lub mniej danych, lub w innym formacie, Dlatego podłączając się do jakiegoś reflektora należy najpierw uzyskać informacje odnośnie konfiguracji lub poprosić o "przykłądowe" pliki svxlink.conf , node_info.json.
Edycja pliku node_info
realizujemy poprzez komendę sudo nano /etc/svxlink/node_info.json
Bazą tego pliku był plik udostępniony przez FM Poland w 2021 roku, jedyne co dodałem to "Name": " ", by mieć na wzór hotspotów DMR pełniejszą informację o nadawcy. Oczywiście dane jakie są wyświetlane są uzależnione od samego reflectora i tak przykładowo te same dane mogą być wyświetlane na różne sposoby. Generalnie do pewnego momentu jestem w stanie utrzymać kompatybilność z FM POLAND aby w miarę poprawnie działały te kafelki.
Te same dane wyświetlane na moim serwerze
oraz na FM POLAND
Różnice są niewielkie i praktycznie nie dotykają nodów publicznych/przemienników a brak Imienia może jedynie delikatnie wpływać na klientów indywidualnych. Lecz ponieważ dane z tego pliku są używane przez wiele elementów w dashboard to można oczekiwać tu wielu zmian i wielu innych danych koniecznych do wpisania, ponieważ przykładowo mapa która ma przedstawiać "szacowany" zasięg stacji na mapie musi posiadać kilka wiecej zmiennych: jak antena, zysk , moc wysokość instalacji. Na podstawie takich danych można wygenerować coś więcej na mapie niż tylko punkt, lub kolejny przykład to informacja o "sprzęcie" pozwalałaby na wyświetlanie informacji na dashboard o rodzaju używanego sprzetu przez klientów SVXreflectora. Czy jest to OrangePi z nakładką jeśłi tak to jaką, czy jest to RaspberryPi z nakładką lub bez, czy jest to opcja anyradio - jakie radio, czy ktoś używa Network Radio ( VOIP ) jeśli tak to jakie, - jak widać na podstawie danych które klienci dobrowolnie wypełniają będzie można wzbogacić wygląd dashboard serwera.
Personalizacja
Zacznijmy od samego ekranu początkowego
Aby ten element pracował poprawnie należy w pliku konfiguracyjnym poprawnie wpisać API reflektora. Dzięki temu zabiegowi będziemy widzieli "kafelki" z korespondentami i inne aktywności na reflektorze.
Edytujemy plik konfiguracyjny komendą: sudo nano /var/www/html/480x320/include/config.php
W tymsamym pliku definiujemy 4 przyciski funkcyjne
Szybka pamięć
Szybka pamięć ma ułatwić wybieranie zdefiniowanych grup TG jakie potencjalnie będziemy często używać.
Personalizacja i wpisanie własnych przycisków realizujemy edytując plik sudo nano /var/www/html/480x320/include/config.php
Przykładowo chcemy zmienić klawisz TG 9 , odnajdujemy linijkę zawierającą nazwę TG9 i mamy define("KEY5", array('TG 9','919#','green'));
, aby zmieniamy nazwę TG 9
i dalej zmieniamy kod DTMF 919#
, możemy jeszcze zmienić kolor. Jeśli przykładowo chceliśmy zmienić na TG 262 z opisem Germany po winno to wyglądać tak : define("KEY5", array('FM Germany','91262#','green'));
W taki sposób możemy sobie stworzyć własną tablicę pamięci.
Dashboard reflektora
Ostatnia wersja posiada Dashboard pochodzący z SVXlink Dashboard by SP2ONG, został trochę zmniejszone tak aby mieściły jak najwięcej "kafelków" na tak małym ekranie, przy zachowaniu jakiejś czytalności.
Proszę pamietać że ten dashboard będzie widoczny TYLKO w momencie poprawnego wpisania adresu API/status naszego reflectora w sudo nano /var/www/html/480x320/include/config.php
EchoLink
Ta zakładka ma pomagać wszystkim tym którzy mają zamiar uruchamiać na własnym nodzie obsługę EchoLink. Moim zdaniem jest to bardzo dobra opcja i zachęcam do uruchomienia EchoLink, ponieważ mamy obecnie część przemienników podłączonych do sieci FM Poland , ale część nadal długo będzie wspierała tylko EchoLink i dlatego warto mieć możliwość połączenia z nimi także w ramach jednego urządzenia.
Personalizacja odbywa się popraez edycję pliku sudo nano /var/www/html/480x320/include/config.php
i odszukanie w nim fragmentu odpowiedzialnego ze te właśnie przyciski
Obecna konfiguracja nie pozwala na połączenie ze zdefinowanymi stacjami ponieważ brakuje w nich kompletnego kodu DTMF.
Przykładowo, przycisk połączenia ze stacją HF4ALL-L wygląda tak:
define("KEY36", array('HF4ALL-L','2#','purple'));
a powinna tak:
define("KEY36", array('HF4ALL-L','2#990091#','purple'));
ponieważ 2# uruchamia moduł echolink a 990091# wykonuje połączenie do echonk stacji o numerze 990091 - w tym przypadku HF4ALL-L.
Oczywiście aby to zadziałało to konieczne jest edytowanie i konfiguracja pliku odpowiedzialnego za moduł echolink sudo nano /etc/svxlink/svxlink.d/ModuleEchoLink.conf
oraz dopisanie do svxlink.conf modułu echolink aby się uruchamiał.
Free Radio Network
Free Radio Network to kolejny klient sieci VOIP opisany tu https://freeradionetwork.eu/
Zakładka została wyposażona w 3 przyciski odpowiadające trzem różnym klientom FRN. Można sobie zaprogramować 3 różne serwery lub 3 różne kanały w ramach jednego serwera, jak kto woli. Nowością jest okno powiadomień o aktywności stacji, podobnie jak w SVXreflector i MMDVM. Okno to ma wyświetlać informacje o znaku i imieniu korespondenta.
Za konfigurację odpowiadają odpowiednio pliki które można edytować :
FRN 1 - sudo nano /etc/svxlink/svxlink.d/ModuleFrn.conf
FRN 2 - sudo nano /etc/svxlink/svxlink.d/ModuleFrn2.conf
FRN 3 - sudo nano /etc/svxlink/svxlink.d/ModuleFrn3.conf
Po edycji zobaczymy okno konfiguracji w którym musimy uzupełnić niezbędne pola o nasze dane
Posiadamy także możliwość wyświetlenia dashboard serwera FRN jesli ów serwer taki posiada.
Zmianę dokonujemy edytując sudo nano /var/www/html/480x320/frndash.php
i zmieniamy adres z https://www.d4a.uk/frnnet/index_mini.php na dashboard naszego serwera FRN
RTL-SDR klient
RTL-SDR klient to opcja badziej dla zastosowań przy posiadaniu własnego SVXreflectora, ponieważ pozwala na ustawienie przykładowo na częstotliwości przemiennika i "wstrzyknięcie" jego sygnału do reflektora. Ja osobiście mam tak zrobione z przemiennikiem GB3LT i nie muszę mieć radia uruchomionego aby wiedzieć co się na nim dzieje.
RTL-SDR jest uruchamiany jako kolejny SVXlink z innym plikiem konfiguracyjnym niż standardowy. Czyli mamy klasyczny SVXlink z plikiem konfiguracyjnym svxlink.conf i to jest klient nazwijmy go "ekranowy" , ponieważ to ten odpowieda za to co się na ekranie wyświetla i tym sterujemy poprzez dotyk, ale mamy jeszcze dodatkowe dwa SVXlink z dedykacją dla RTL-SDR oraz AnyRadio analogowy hotspot.
Aby edytować konfigurację tego SVX klienta wydajemy komendę sudo nano /etc/svxlink/svxlink_rtl.conf
W pliku tym standardowo wpisujemy dane serwera do którego chcemy się podłączyć, znak, hasło grupa TG itd ale również w dziale Rx wpisujemy częstotliwość pracy RTL-SDR jak i inne parametry jak CTCSS czy sposób detekcji sygnału.
Większy opis kalibracji SQL-DET=SIGLEV
będzie zamieszczony tu za jakiś czas.
Plikiem informacyjnym tego klienta jest /etc/svxlink/node_info3.json
Komendy dla tego klienta to :
sudo systemctl status svxlink_rtl
sudo systemctl restart svxlink_rtl
sudo systemctl start svxlink_rtl
sudo systemctl stop svxlink_rtl
Testowe uruchomienie w terminalu :
svxlinkrtl --config /etc/svxlink/svxlink_rtl.conf
Analog Hotspot
AnyRadio to dodatkowy klient SVXlink z dedykowanym plikiem konfiguracyjnym stworzony na potrzeby uruchomienia analogowego Hotspota. Jest to 3 klient licząc klienta "ekranowego", klienta RTL-SDR i AnyRadio.
Sposobów na podłączenie Radia analogowego jest wiele i na wielu portalach znajdziecie opisy jak to zrobić. Ja jedynie przedstawię moją wersję opartą od lat na sprawdzonym schemacie z AllStar czyli karta CM108 FOB.
Jest to karta CM108 przerobiona zgodnie z opisem kolegów z projektu AllStar i podłączone do niej jakieś radio. Następuje klasyczna wymiana audio pomiędzy radiem a kartą plus karta ma możliwość za pośrednictwem swoich PINów gpio realizowaź PTT a także COS. Nic nie stoi na przeszkodzie aby w tym celu nadal używać GPIO z RaspberryPi, lecz z uwagi na specyfikę tej obudowy jaką zastosowaliśmy, uznałem że dodatek w postaci CM108 w pełni u mniesię sprawdza.
Aby edytować plik konfiguracyjny wydajemy komendę sudo nano /etc/svxlink/svxlink2.conf
i konfigurujemy go tak jakby to był kompletnie nowy / osobny klient reflektora bo tak dokładnie jest.
Domyślna konfiguracja zakłada że karta CM108 jest drugą kartą dźwiękową i najprostrzym sposobem uzyskania tego efektu jest po prostu włożenie jej do USB po uruchomieniu się systemu. A laczego nie jest tak zrobione aby domyślnie taka karta była jako plugwh:2 ? Ponieważ nie jestem w stanie przewidzieć kto z jakich podzespołów będzie budował własny zestaw. Oczywiście że można przypisać karcie konkretne miejsce ale lepiej niech to sobie każdy zrobi we własnym zkresie, niż zmuszać kogoś to konfiguracji która będzie ograniczała mu pole manewru.
Widać po konfiguracji że HID_DEVICE jest hidraw1 a nie hidraw0 - wynika to z faktu że główna karta dźwiękowa dla "ekranowego" klienta także w sterownikach posiada interfejs HID.
Generalnie klient jest domyślnie działający na konfiguracji jaką ja mam i niestety każdy w TYM punkcie będzie musiał dokonać własnej personalne konfiguracji w przypadku nie zadzałania domyśłnej. Postaram się uzupełnić tą część o wskazówki i komendy mogące być potrzebne lub przydatne - bo nie ma jak samemu rozwiązywać napotkane problemy.
Plikiem informacyjnym tego klienta jest /etc/svxlink/node_info2.json
Komendy dla tego klienta to :
sudo systemctl status svxlink2
sudo systemctl restart svxlink2
sudo systemctl start svxlink2
sudo systemctl stop svxlink2
Testowe uruchomienie w terminalu :
svxlink2 --config /etc/svxlink/svxlink2.conf
MMDVM Hotspot
Koncept hotspota MMDVM była u mnie dostępna prawie od samego początku, ponieważ prace nad aDVPi były intesywniejsze w czasie "pandemii kaszlu" i jak wiadomo w tym i późniejszym czasie były problemy aby zakupić RaspberyPi. Dlatego tak ważne było wykożystanie do maksimum posiadanych zasobów. Ponadto wydawało mi się dobrym rozwiązaniem aby mieć takie COMBO wszystko w jednym, pomimo obaw przed interferencjami DMR / Analog.
Zainstalowany MMDVMHost został ustawiony na pracę z modemem poprzez złącze USB. JA wiem że nie każdy ma MMDVM zdolne pracować poprzez USB bo nie ma takiego złącza ale każdy może sobie zrobić takie. Wystarczy nasze MMDVM podłączyć z konwerterem USB - TTL
Taki konwerter ma złącza TX/RX Masa, 3,3V ( pamiętajcie 3,3V nie 5V ) , można także kupić dotowe podkładki zastępujące RaspberryPi a w bedące TTL'ką do USB
Edycja pliku konfiguracyjnego robimy poprzez sudo nano /opt/MMDVMHost/MMDVM.ini
W tym pliku wykonujemy wszelkie niezbędne zmiany i konfiguracje w celu połączenia z serwerem nas interesującym ( Ja bazowałem na serwerach HBLINK nie BM - tak więc nie biorę odpowiedzialności za problemy z przyłączeniem się do tej drugiej sieci ) Niemniej jednak postaram się tu umieścić opis konfiguracji pod BM.
Po połączeniu się z sewerem na naszym DASH będą widoczne proste informacje odnośnie naszego Znaku, DMR_ID, częstotliwości pracy hotspota i adresu serwera do którego się podłaczyliśmy.
Dashboard pokazuje także aktywność hotspota w postaci znaku i TG jaki jest używany
!!! UWAGA !!! z uwagi na posiadanie tylko DMR'owego radia nie testowałem i nie optymalizowłem tego pod inne emisje cyfrowe
APRS-IS
Funkcja APRS-IS została zaprezentowana i dostarczona przez Waldka SP2ONG wraz z jedną z pierwszych edycji instrukcji instalacji na RaspberryPi. Oczywiście SVXlink sam w sobie ma możliwość wysyłania do systemu APRS-IS informacji ale są one ograniczone do konieczności użycia EL- ER- przed znakiem co jest reliktem przeszłości gdy SVXlink był gównie używany do EchoLink.
Dostaczony skrypt pozwala na pewsonalizacje i posadzenie znacznika ze znakiem jaki chcemy i opisem jaki chcemy, można ustawić go do pełnej pracy w tle jak i wysyłać ramki tylko w momwncie gdy tego chcemy.
Konfigurację dokonujemy poprzez sudo nano /etc/svxlink/aprsnet-pi i uzupełniamy o nasze dane
Czego efektem będzię
Oczywiście możemy zrobić tak aby ów skrypt działał w tle cały czas. W tym celu edytujemy sudo nano /etc/cron.d/svxlink
Wystarczy wykasować # i po restarcie funkcja będzie działała cały czas w tle. Ja osobiście pozostawiłem sobie wysyłanie ramek do APRS-IS ręcznie poprzez przycisk
Auto uruchamianie
Mamy możliwość zdefiniowania co ma się nam domyśłnie uruchamiać. Możemy wybrać uruchamianie po starcie programu DVPi i w tym celu należy wykasować #
z linii #/home/pi/dvpi/dvpi
, lub wybrać SVXlink jako program uruchamiający się domyśłnie robiąc podobnie, czyli kasujemy #
z linii /home/pi/svxstart.sh
Aby tego dokonać edytujemy plik sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
Przykład autouruchamiania SVXlink
Wygaszacz ekranu
UWAGA - wygaszacz ekranu opisany w DVPi+ nie ma zastosowania w SVXLink. Jego uruchomienie deaktywuje pracę diody TX/RX
Zmiana koloru czcionki lub nazwy STATUS
Jeśli ktoś chce to może zmienić sobie wygląd tego okna z takiego
na taki
przy jednoczesnej zmianie nazw umieszczonych w tych polach. W zależności od rodzaju użytego wyświetlacza i własnych preferencji można sobie to zmienić poprzez edycję pliku i zmianę koloru.
Aby tego dokonać zmiany na białe napisy wystarczy edytować plik sudo nano /var/www/html/480x320/include/status.php
i odszukać linie na ja zdjęciach
We wszystkich tych liniach jest wpisane "color: black;\"
- wystarczy zmienić na "color: white;\"
lub inny kolor jaki Wam pasuje. Oczywiście można także zmienić zamieszczone tam nazwy Monitorowane, Aktywna, Reflector na inne lub w innym języku.
Podsumowanie
Wydaje mi się że projekt trochę się udał i pomimo że robił go uparty gościu ze znikomą wiedzą to efekt nie jest taki zły, a jeśli nawet jest zły i posiada ( a z pewnością posiada) błędy dyskredytujące go to może stał się inspiracją aby zrobić to lepiej. Finał jest taki że zawsze to wyjdzie na dobre dla społeczności.
aDVPi_2024 jak i poprzednie wersje powstawał głównie na własne potrzeby i nie był skierowany do szerokiego grona odbiorców, ponieważ to zawsze dostarcza potem problemów, i wielu korespondencji że coś nie działa tak jak powinno. Dlatego jest to końcowa ale nadal BETA i prosze na nią patrzeć jako na niedokończoną i wymagającą naprawy - ale mimo wszystko jakoś działającą.
Materiały video
VIDEO-1
VIDEO-2
Materiały źródłowe:
Główną źródłem informacji były materiały dostarczone przez Waldka SP2ONG