Wirtualny HotSpot

Moja przygoda z pakietem programów DVSwitch zaczęła właśnie od napisania tego tutoriala! W ramach projektu DVSwitch są dostępne programy MMDVM_Bridge, który służy do połączenia z siecią cyfrową i Analog_Bridge, który służy do przesyłania audio analogowego 8000 Hz 16 bitowego do MMDVM_Bridge. W większości wypadków takich rozwiązań przejścia analogu do cyfry było wykorzystanie sprzętowego vocoder AMBE na USB DV3000 którego koszt był rzędu ok $120. Ale propozycja DVSwitch jest na tyle ciekawa, że wykorzystano do kodowania i dekodowania AMBE itp emulator md380 z pakietu md380-tools. Dzięki temu sygnał analogowy wysłany w formacie USRP do Ananlo_Bridge zostaje kodowany i dekodowany przez programowy emulator vocodera AMBE.
Diagram rozwiązania technicznego przedstawiony jest poniżej.

Jednym z najważniejszych elementów tej grupy programów to jest emulator vocodera md380-emu. Emulator działa natywnie na procesorach ARM RPi2, 3, H3, H5, pod Linux na procesorach x86 może być uruchomiony przy pomocy „qemu-arm-static” na dowolnej platformie oraz starszych RPi i ARM procesorach. Oczywiście porównanie jakości audio między DV3000 a md380-emu jest na korzyść DV3000 ale jakość otrzymywanego audio z md380-emu jest zadowalająca do takiego zadania jakie chcemy zrealizować. Zrobiłem Trzy próby na różnych komputerach. Terminal HP5730 emulator dławił się, na RPi 3B+ niestety emulator dostał czkawki! Mam jeszcze w rękawie Rpi4 – test będzie niebawem!

Na pewno całość będzie działać na Raspberry Pi 3 ale nie posiadam takiego więc osobiście nie sprawdzałem.
Musimy mieć do dyspozycji komputer z Linux Debian v9 Stretch (lub ARMBian Stretch na Orange PI, RaspBian Stretch na RPi) i poniższe opisane komendy są wykonywane jako użytkownik root lub komendy sudo -s aby mieć uprawnienai użytkownika root.

Uwaga, jeśli w ramach swojej sieci domowej masz bezpośredni dostęp do sieci 44-NET należy wyłączyć przejście do sieci 44-NET na okres instalacji pakietów DVSwitch. Serwer z pakietami dvswitch.org ma adres 44.xxx ale nie jest dostępny poprzez amatorską sieć bramek tylko jest dostępny w Internet. Dlatego jeśli nie wyłączycie na czas instalacji pakietów dostępu do sieci 44-NET w swojej lokalnej domowej sieci nie pobierzecie pakietów instalacyjnych. Po zakończeniu instalacji można przewrócić ruch do 44-NET w sieci domowej.

Poniższa instrukcja instalacji pochodzi ze strony Waldka sp2ong.

Instalujemy pakiety MMDVM_Bridge/Analog_Bridge/md380-emu.

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 md380-emu
apt-get install mmdvm-bridge

Ponieważ autorzy pakietu udostępnili nowszą wersje programów ale tylko na Github a nie w paczkach deb, pobieramy nowe wersje programów MMDVM_Bridge i Analog_Bridge:

Komputery na procesorach ARM: Raspberry PI, Orange Pi itp:

cd /opt/MMDVM_Bridge
rm MMDVM_Bridge
wget -O MMDVM_Bridge https://github.com/DVSwitch/MMDVM_Bridge/raw/master/bin/MMDVM_Bridge.armhf
chmod +x MMDVM_Bridge
cd /opt/Analog_Bridge/
wget -O Analog_Bridge.ini https://raw.githubusercontent.com/DVSwitch/Analog_Bridge/master/Analog_Bridge.ini
rm Analog_Bridge
wget -O Analog_Bridge https://github.com/DVSwitch/Analog_Bridge/raw/master/bin/Analog_Bridge.armhf
chmod +x Analog_Bridge

Komputery z Debian 32 bitowym procesory AMD/Intel:

cd /opt/MMDVM_Bridge
rm MMDVM_Bridge
wget -O MMDVM_Bridge https://github.com/DVSwitch/MMDVM_Bridge/raw/master/bin/MMDVM_Bridge.i386
chmod +x MMDVM_Bridge
cd /opt/Analog_Bridge/
wget -O Analog_Bridge.ini https://raw.githubusercontent.com/DVSwitch/Analog_Bridge/master/Analog_Bridge.ini
rm Analog_Bridge
wget -O Analog_Bridge https://github.com/DVSwitch/Analog_Bridge/raw/master/bin/Analog_Bridge.i386
chmod +x Analog_Bridge

Komputery z Debian 64 Bit procesory AMD/Intel:

cd /opt/MMDVM_Bridge
rm MMDVM_Bridge
wget -O MMDVM_Bridge https://github.com/DVSwitch/MMDVM_Bridge/raw/master/bin/MMDVM_Bridge.amd64
chmod +x MMDVM_Bridge
cd /opt/Analog_Bridge/
wget -O Analog_Bridge.ini https://raw.githubusercontent.com/DVSwitch/Analog_Bridge/master/Analog_Bridge.ini
rm Analog_Bridge
wget -O Analog_Bridge https://github.com/DVSwitch/Analog_Bridge/raw/master/bin/Analog_Bridge.amd64
chmod +x Analog_Bridge

Musimy teraz skonfigurować MMDVM_Bridge który służy do komunikacji z wybrana siecią np DMR BM lub HBLink oraz z Analog_Bridge

cd /opt/MMDVM_Bridge
nano MMDVM_Bridge.ini

W sekcji [General] wpisz w „Callsign” swój znak wywoławczy . W polu Id, zalecane jest używanie DMR ID i dołączenie do niego 2-cyfrowej liczby z zakresu od 01 do 99. Te 2 cyfry są określane jako SSID. W ten sposób MMDVM_Bridge loguje się do BrandMeister Master. To sprawi, że dużo łatwiej będzie kontrolować dowolne statyczne grupy rozmowne, które chcesz użyć dla swojego rozwiązania. Potrzebujesz mieć założone konto na BM aby konfigurować dla swojego dodatkowego DMR ID z SSID grupy.
(Aby otrzymać DMR ID dla swojego znaku krótkofalarskiego musisz posiadać pozwolenie amatorskie (UKE) i zarejestrować się na SP-DMR.pl)

[General]
Callsign=SP2ABC
Id=123456701
Timeout=180
Duplex=0

w częsci gdzie są informacje o częstotliwości należy wpisać jak poniżej gdyż ten hotspot nie pracuję na żadnej częstotliwości:

[Info]
RXFrequency=000000000
TXFrequency=000000000
Location=Hotspot w chmurze
....

oraz pozostałe dane wpisać stosownie do swoich danych jakie chcemy podać.

Jeśli chcemy mieć obsługę DMR ustawiamy w Enable wartość 1:

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

Skoro chcemy mieć obsługę DMR to musimy teraz ustawić parametry połączenia do wybranego Master serwera czy to sieci BrandMeister lub lokalnej sieci HBLink wpisując odpowiednie dane w Address, Password, Port.

[DMR Network]
Enable=1
Address=
Password=
Port=
Jitter=450
Local=62032
Slot1=0
Slot2=1
Debug=0

Zapisujemy plik konfiguracyjny i przechodzimy do konfiguracji Analog_Bridge. Pobieramy przykładowy plik konfiguracyjny Analog_Bridge.ini z mojego serwera

cd /opt/Analog_Bridge
wget -O Analog_Bridge.ini http://sp2ong.noip.pl/downloads/Analog_Bridge.ini
nano Analog_Bridge.ini

W pliku konfiguracyjnym Analog_Bridge.ini należy wprowadzić / sprawdzić czy następujące zmiany podane niżej są w pliku:

decoderFallBack = true  
useEmulator = true

Warto zwrócić tu uwage na ustawienia useEmulator. Wartość true oznacza że będziemy korzystać z emulatora md380-emu. Kiedy ustawimy wartość false będziemy korzystać z emulatora programowego z Analog Bridge OP25 któr ma gorszej jakości audio niż md380-emu ale z niewiadomych przyczyn zdarza się że użycie md380-emu daje dźwięk w postaci tzw „bełkotu” więc można wtedy ustawić wartość useEmulator na false i korzystać z wewentrznego emulatora OP25.

Następnie ustawiamy porty i mod pracy dla DV (poniżej ustawienia dla DMR, dla innych modów są inne porty (patrz plik w MMDVM_Bridge/DVSwitch.ini). Zwróć uwagę na „gatewayDmrId” w tym polu musi być Twój 7 cyfrowy DMR ID i pod takim DMR ID będzie widziana każda transmisja w sieci DMR. W polu „repeaterID” podajemy taki sam „Id” jak w konfiguracji MMDVM_Bridge.ini tzn nasz DMR ID+ SSID. w Polu „txTg” podajemy na jakiej grupie będzie transmitowane nasze audio z Analog_Bridge w sieci DMR.

[AMBE_AUDIO]
address = 127.0.0.1                  
txPort = 31103                          
rxPort = 31100                          
ambeMode = DMR                       
minTxTimeMS = 2000 

gatewayDmrId = 1234567                       
repeaterID =123456701                       
txTg = 9       
txTs = 2 
colorCode = 1 

Teraz ustawienia dla USRP. podany adres 169.254.42.42 jest adresem używanym wewnętrznie przez Analog_Bridge i jest adresm z klasy APIPA. Pozwala nam rozwiązać problem z adresem docelowym aplikacji. W aplikacji DVSwitch podajemy adres IP fizyczny serwera na którym jest nasz „AMBE server” uruchomiony na bazie MMDVM_Bridge/Analog_Bridge/md380-emu. Numer portu UDP w txPort i rxPort muszą być takie same i dowolne inne niż 12345.

[USRP]
address = 169.254.42.42                      
txPort = 12345                        
rxPort = 12345                      
aslAudio = AUDIO_UNITY                 
agcGain = -10                           
dmrAudio = AUDIO_USE_GAIN                
dmrGain = 0.3                          

aslAudio to audio odbierane z sieci do aplikacji DVSM
dmrAudio to audio z aplikacji DVSM wysyłane do sieci

AUDIO_UNITY – oznacza przekazywanie dźwięku w takiej postaci, w jakiej jest. Brak wzmocnienia lub redukcji.
AUDIO_USE_GAIN – wartość Gain może wynosić od 0,0 do 10,0 lub cokolwiek pomiędzy tymi wartościami. Wartość mniejsza niż 1.0 zmniejsza poziom dźwięku do wartości procentowej. Przykład: .75 to 75 procent pełnej objętości lub jedności. Wartość 1,0 do 10,0 zwiększa moc o liczbę. Przykład: 3.0 oznacza trzykrotność poziomu.

Możemy zmieniać poziomy audio wchodzącego i wychodzącego do aplikacji DVSM wybierając stosowny parametr do korekty oraz wartość korekty w agcGain i dmrGain. Należy dobrać to indywidualnie. Po zmianie ustawień należy zrestartować moduł Analog_Bridge poleceniem:

systemctl restart analog_bridge

Możemy teraz uruchomić cały zestaw programów i sprawdzić czy nasz system zalogował się na nasze konto w Brandmeister lub inny Master serwer np HBlink.

Aktywujemy usługi i uruchamiamy:

systemctl enable md380-emu
systemctl enable mmdvm_bridge
systemctl enable analog_bridge
systemctl start md380-emu
systemctl start mmdvm_bridge
systemctl start analog_bridge

Jeśli będziesz używał swojego htospot’a w chmurze z siecią np HBLink poniższy opis o BM nie jest wymagany do tej sieci i nie musisz mieć konta na BrandMeister.

Jeśli chcemy nasz system ozywać z siecią BrandMeister logujemy się na nasze konto na Brandmeister i z prawej strony panelu dasboard klikamy na „My Hotspots” i rozwinie się nam list naszych hotspotów które są zarejestrowane na BM. Jeśli w wykazie widzimy nasze DMR ID + SSID który wpisaliśmy w MMDVM_Bridge.ini w polu „Id” i ma status „zielony” tzn że poprawnie zalogował się do sieci BM.

Możemy kliknąć na numer Id naszego hotspota który zdefiniowaliśmy w MMDVM_Bridge w celu dodania statycznych grup rozmownych które będą obsługiwały nasz hotspot. Ponieważ obecnie możemy tylko nadawać na jednej grupie zdefiniowanej w Analog_Bridge.ini w polu „txTg” taka grupę rozmowną dodajemy do naszych grup statycznych np 260080 (grupa połączona z reflektorem REF4280). Wpisujemy numer grupy po lewej stronie i klikamy na strzałkę skierowaną w prawą stronę co spowoduje że podana grupa pojawi się w panelu po prawej stronie i wszystkie rozmowy na 260080 będą kierowane do naszego „IP DMR radio hotspota” i odwrotnie. Zaznaczając myszką w prawej stronie wykazu grupę i klikając strzałkę w lewą stronę usuwamy daną grupę z naszego „hotspota”. Możemy dodać kilka grup i będziemy odbierać z każdej grupy aktywność ale nadawać będziemy mogli tylko na jednej zdefiniowanej w Analog_Bridge.ini. Dlatego polecam używanie jednej grupy. Jeśli będziesz chciał monitorować/słuchać kilka grup a nie będziesz nadawał możesz dodać wiele grup. Zawsze możesz zmienić wykaz grup poprzez ten panel.

Instalacja i konfiguracja aplikacji „DVSwitch mobile”

Bardzo ważna aplikacja do tego co chcemy zrobić to aplikacja napisana na Android która pozwoli nam przesłać nasze audio w formacie USRP poprzez sieć do komputera na którym będą zainstalowane MMDVM/Analog_Bridge i md380-emu. Aplikacje „DVSwitch mobile” możecie pobrać z google play.
Po uruchomieniu musimy ustawić konto w aplikacji do naszego „AMBE Server”. W górnych ikonkach głównego panleu programu wybierz „Accounts”, kliknij na pierwszy profil aby go skonfigurować:

Wybierz „Protocol” „USRP”, następnie w „IP adres DVSwitch server” wpisz adres IP w domowej sieci na którym jest uruchomiony MMDVM_Brideg/Ananlog_Bridge, w polu „Callsign” wpisz swój znak wywoławczy a w polu DMR ID swój DMR ID który otrzymałeś podczas rejestracji. Poziomy audio możesz zmieniać w zależności od potrzeb. Zapisz ustawienia. Upewnij się że ma zaznaczony wybrane konto w kwadraciku obok nazwy konta i przejdź do głównego ekranu aplikacji.

Naciskając klawisz PTT możesz rozmawiać na grupie rozmownej zdefiniowanej w Ananlog_Bride, natomiast jeśli wpisałeś więcej grup rozmownych w profilu na BrandMeister będziesz mógł je tylko odbierać.

Wpisując numer na klawiaturze aplikacji np „4” i naciskając klawisz „SEND” zmieniamy numer grupy rozmownej (uwaga w aplikacji pokazują się tylko numery grup, które ma zdefiniowane wewnątrz swoje bazy)

Takie serwer na którym mamy uruchomiony programy DVSwitch możemy mieć w swojej sieci domowej, jeśli mamy dostęp z zewnątrz do swoje sieci domowej to możemy przekierować w firewall port który ustawiony został w Ananlog_Bridge w [USRP] i wtedy możemy korzystać z naszego serwera będąc poza siecią domową.
Innym rozwiązaniem jest instalacja serwer na Virtulanej Maszynie (w chmurze). Mamy wtedy zapewniony warunek stałych adresów IP dla serwera który wpiszmy w DVSwitch Mobile.
Możemy skonfigurować sobie 2 profile w DVSwitch Mobile jeden dla sieci domowej a drugi kiedy jesteśmy na zewnątrz.

Warto zapoznać się z dokumentem o MMDVM_Bridge: https://docs.google.com/document/d/1-Ot5pGaibmEGmmFh-l8HUq2LRyZoujiJYulr-VSga9s/edit

żródło: sp2ong.noip.pl