MMDVM osobní HotSpot – řešení do míst rádiového ticha

Uživatelům digital voice sítí DMR či D-Star nebo YAESU Fusion netřeba “hotspot” představovat. Jedná se o infrastrukturní prvek, který spravuje sám uživatel sítě. Není to převaděč někde na dominantní kótě, není ani někde na významném telekomunikačním bodu města (okresu, kraje….). Je to povětšinou simplexní brána (i když se čím dál častěji objevují semi-duplexní, tzv. kinder-repeatery) do rádiové sítě.
Typická situace je když, mám chatu (chalupu) v oblasti, která není pokrytá převaděči digitální sítě a přesto bych rád sem tam pokecal s přáteli.

Nabízí se tři řešení.

A – Buď v dané oblasti najdu podobně postižené jedince a vybudujeme plnohodnotný radioamatérský digitální převaděč se všemi náležitosmi (indivindi oprávnění na neobsluhovanou stanici radioamatérské služby, poplatek, řešení kmitočtů s národním koordinátorem).
B – Sestavím simplexní gateway do sítě, něco jako je toto od OK1PMP.   A dané řešení s dostatečným výkonem posadím na aspoň trochu zajímavou kótu a zajistím tím pokrytí zájmové území nejen pro sebe, ale i pro kolegy v okolí.
C – koupím na aliexpressu nebo kdekoliv jinde “osobní” hotspot (tj. řešení postavené na rádiových modulech SRD -Short Range Device), hotovou desku i s rádiovým modulem, kterou nasadím(připojím) nejčastěji na  některé z Raspberry PI. Obvykle je to STM procesor ovládající ADF7021(a) modul s výkonem cca 13mW na pásmu 70cm nebo 2m.
Ať už se jedná o DVMega, ZUMSpot, OpenSpot či jiné vždy jde o Open-Source hardware běžící na home-brew  protokolu MMDVM Jonathana G4KLX (pro DMR, YASU FUSION, D-STAR, P25……, na tom běží i všechny postavené převaděče a vysokovýkonné hotspoty). Jonathan zpřístupnil radioamatérské komunitě celý soubor digitálních řešení. Vše jako Open-Source pro naší komunitu.

Teď se budu zabývat řešením C – osobní simplexní hotspot a jeho nastavení pro DMR  v Linuxu i když většina postupů je společná pro všechny případy.
10 – 13 mW není bůh ví jaký výkon, ale na pokrytí chalupy, hotelu na dovolené atd, bohatě stačí. Navíc takové zařízení je svou velikostí předurčeno i pro mobilní či portejblový provoz (komerční převaděč si s sebou těžko potáhnete 🙂 ). Celé řešení sestává typicky z desky MMDVM hostspotu (ať už je to DVMega, ZUMSpot, JumboSpot ři kterékoliv jiné) a nějakého ARM minipočítače Rasspberry Pi nebo podobného. Deska hotspotu je ve valné většině připojena k samotnému počítači přes GPIO i když existují i řešení přes USB nebo Bluetooth.
Při instalaci se můžeme rozhodnout pro hotové řešení ve formě image pro mikroSD kartu jako je Pi-Star. pohodlné, nakonfigurovat to zvládne i “cvičená opice” nebo se rozhodneme si postavit řešení vlastní.
Vlastní cesta kdy vynecháme hotová řešení typu Pi-Star, Easy-Bm apod., je složitější, ne tak graficky “hezká” a neobsahuje mnohobarevné dašbórdy, ale třeba se během ní něco i naučíme.
První krok po tom co nasadime desku hotspotu na Raspberry je příprava mikro SD karty s operačním systémem. A protože nejsme holky abysme trvali na mnohobarevném GUI tak stáhneme minimalistickou aktuální verzi Raspbian Lite. Tu rozbalíme a dostaneme soubor, který končí na .img, třeba 2019-04-08-raspbian-stretch-lite.img.

V Linuxu použijeme příkazovou řádku:

sudo umount /dev/mmcblk0
sudo dd bs=4M if=/cesta_k_souboru  of= /dev/mmcblk0 status=progress

chvíli to bude trvat a máme připravenou kartu.

Vytvoříme prázdný soubor s názvem ssh (třeba příkaz v terminálu nano ssh > ctrl+o> enter >ctrl+x) a ten překopírujeme do sektoru boot vytvořeného na kartě. Tím si zapneme možnost přistupu k zařízení přes ssh (jinak z bezpečnostních důvodů na Raspianu vypnuto).
Pokud se budeme chtít k zařízení připojovat přeš WiFi (ne přes ethernet) editujte ještě konfiguraci WiFi a sítí.

sudo nano /etc/wpa_supplicant/supplicant.conf
a vložíme konfiguraci našeho wifi routeru:

country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid=”jmenosite”
scan_ssid=1
key_mgmt=WPA-PSK
psk=”tajneheslo”
}

opět ctrl+o (uložit) + enter
ctrl+x (opustit editor)

pozn. WiFi sítí si můžete uložit kolik chcete:

network={
ssid=”jmenosite1″
scan_ssid=1
key_mgmt=WPA-PSK
psk=”tajneheslo1″
}
network={
ssid=”jmenosite2″
scan_ssid=1
key_mgmt=WPA-PSK
psk=”tajneheslo2″
}

network={
ssid=”jmenosite3″
scan_ssid=1
key_mgmt=WPA-PSK
psk=”tajneheslo3″
}

a tak až do zblbnutí……nebo dokud vás to bude bavit…..

Potom už vložíme kartu do Raspberry a připojíme napájení. Po cca 30 vteřinách se můžete poprvé přihlásit. Zjistíte IP adresu maliny pomocí

nmap 192.168.xxx.x-yyy (dle nastavení vaší sítě, může být cokoliv ve tvaru IPV4…..třeba 10.11.0.1 atd)

ve výpisu se vám ukáže malina a ostatní prvky sítě. Příkazem ssh se přihlásíme (řekněme, že naše raspberry sedí na adrese 192.168.1.20).

ssh pi@192.168.1.20
budeme vyzváni k potvrzení uložení “digitálního klíče” pro další komunikaci se zařízením…. dejte yes
budeme vyzváni k zadání hesla, zadáme vaše-heslo + enter,

….a jsme vzdálené přihlášení ke správě. Doporučuji nainstalovat následující programy, které nám usnadní práci. Předtím ovšem updatujeme repozitáře a systém,

sudo apt-get update
a
sudo apt-get upgrade

dále si pro usnadnění práce nainstalujeme pár aplikací:

sudo apt-get install mc git screen wvdial openvpn

mc – souborový dvouoknový manažer
git – kompilační prostředí
screen – to abysme si mohli něco pustit bokem a mohli se věnovat dalšímu
wvdial – utilita pro práci s 3G a 4G modemy pracující na bázi AT příkazů. (ne vždy máme po ruce WiFi)
openvpn – opensourcový vpn klient. To bude náplň dalšího článku.

Teď jsme přihlášeni k mini-počítači a potřebujeme zprovoznit desku, kterou jsme na něj předtím posadili.

Jelikož malina 3, 3+ a Zero w si při osazení hotspotu na GPIO nerozumí s Bluetooth sériovou linkou tak ji v konfiguraci vypneme,

sudo nano /boot/cmdline.txt

vymazat  «ttyAMA0 » pokud tam je
vymazat «console=serial0,115200»
řádek konfigurace boot vypadá nějak takhle
«dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline
fsck.repair=yesrootwait»

uložíme a vyskočíme z editoru ctrl+O > enter > ctrl+x

pak ještě

 sudo nano /boot/config.txt

vypnout BT – přidat na konec řádek

dtoverlay=pi3-disable-bt
uložit ctr+o > enter a vyskočit z editoru ctrl+x

nainstalujeme základní program pro obsluhu MMDVMHost, který řídí spolu s firmwarem desky MMDVM veškerý digitální provoz na vrstvě rádiového rozhraní, laicky řečeno to co rádiem vysíláte zpracovává tento software,

git clone https://github.com/g4klx/MMDVMHost – stáhne zdrojové soubory
cd MMDVMHost – vstoupíme do adresáře zdrojových souboru
sudo make – zkompiluje zdrojové soubory do binárního kódu z jazyka C++

chvíli to potrvá, ale po pár minutách máme první zkompilovaný software přímo pro naše zařízení.
Dále vytvoříme mmdvm adresář ve složce /opt

cd /opt
sudo mkdir mmdvm

poté spustíme souborový manažer abysme pohodlně ze složky /home/pi/MMDVMHost zkopírovali potřebné soubory do pracovního adresáře /opt/mmdvm

sudo mc

vyskočí na nás dvouokenní souborový manežer kde už  většina zvládne pomocí F5 zkopírovat soubory:

MMDVMHost
MMDVM.ini
RSSI.dat
DMRIds.dat
RemoteCommand

Takže zkopírováno máme a v adresáři /opt/mmdvm můžeme začít s konfigurací našeho hotspotu (nezáleží zda je simplexní nebo semi-duplexní).

vyskočíme z mc F10,

cd /opt/mmdvm
sudo nano MMDVM.ini      #zahájíme konfiguraci našeho hotspotu (zde pro DMR a YAESU Fusion)

[General]
Callsign=OK1abc     #tady si vyplníme volací znak
Id=230abcd     # id přidělené
Timeout=180     #time-out-timer
Duplex=0       # 0 pro simplexni a  1 pro duplexní hotspoty
ModeHang=10     #čas po který je hotspot rezervován pro posledně použitý provoz
#RFModeHang=10
#NetModeHang=3
Display=OLED     # téma na příště
Daemon=0     # volba zda chceme program spouštět jako systémový démon

[Info]
RXFrequency=434600000   # frekvence kde budeme přijímat a vysílat v Hz
TXFrequency=434600000  # frekvence kde budeme přijímat a vysílat v Hz
Power=1
Latitude=0.0
Longitude=0.0
Height=0
Location=Nowhere
Description=Multi-Mode Repeater
URL=www.google.co.uk

[Log]
# Logging levels, 0=No logging
DisplayLevel=1
FileLevel=0
FilePath=.
FileRoot=MMDVM

[CW Id]
Enable=0      # chceme-li aby hotspot vysílat telegrafní identifikaci nastavíme 1
Time=10
# Callsign=

[DMR Id Lookup]
File=DMRIds.dat
Time=24

[NXDN Id Lookup]
File=NXDN.csv
Time=24

[Modem]
# Port=/dev/ttyACM0
Port=/dev/ttyAMA0 # port kde máme připojenou desku hotspotu, zde na Raspberry přes GPIO
#Port=\\.\COM3
# Protocol=uart
# Address=0x22
TXInvert=0
RXInvert=0
PTTInvert=0
TXDelay=100
RXOffset=0    #nejdůležitější položka, každý hotspot je jiný, pro korektní fungování je třeba nastavit offset (odchylku) jak pro TX tak pro RX frekvenci. Metodou pokus omyl,dokud to nezačne mluvit a nezačne ta věc dekódovat naše vysílání). Hodnoty zkoušejte po stovkách, 100 200 300 400, -100 -200 -300…….. sledujte v logu až si pustíte MMDVMHost hodnotu BER (chybovost), měla by být co nejnižší. ideál je 0.0%, ale 0.4% BER je ještě snesitelný
TXOffset=0     # dtto co výše
DMRDelay=0
RXLevel=50
TXLevel=50
RXDCOffset=0
TXDCOffset=0
RFLevel=100
# CWIdTXLevel=50
# D-StarTXLevel=50
# DMRTXLevel=50
# YSFTXLevel=50
# P25TXLevel=50
# NXDNTXLevel=50
# POCSAGTXLevel=50
RSSIMappingFile=RSSI.dat
Trace=0
Debug=0

[Transparent Data]
Enable=0
RemoteAddress=127.0.0.1
RemotePort=40094
LocalPort=40095

[UMP]
Enable=0
# Port=\\.\COM4
Port=/dev/ttyACM1

[D-Star]
Enable=0
Module=C
SelfOnly=0
AckReply=1
AckTime=750
AckMessage=0
ErrorReply=1
RemoteGateway=0
# ModeHang=10

[DMR]
Enable=1
Beacons=0
BeaconInterval=60
BeaconDuration=3
ColorCode=1
SelfOnly=0
EmbeddedLCOnly=0
DumpTAData=1
# Prefixes=234,235
# Slot1TGWhiteList=
# Slot2TGWhiteList=
CallHang=3
TXHang=4
# ModeHang=10

[System Fusion]
Enable=1
LowDeviation=0
SelfOnly=0
TXHang=4
#DGID=1
RemoteGateway=0
# ModeHang=10

[P25]
Enable=0
NAC=293
SelfOnly=0
OverrideUIDCheck=0
RemoteGateway=0
# ModeHang=10

[NXDN]
Enable=0
RAN=1
SelfOnly=0
RemoteGateway=0
# ModeHang=10

[POCSAG]
Enable=0
Frequency=439987500

[D-Star Network]
Enable=0
GatewayAddress=127.0.0.1
GatewayPort=20010
LocalPort=20011
# ModeHang=3
Debug=0

[DMR Network]
Enable=1
Address=127.0.0.1   #zde vyplnit adresu master serveru (Brandmester, DMR+, DMR sobě atd)
Port=62031
Jitter=360
Local=62032
Password=passw0rd
# Options=
Slot1=0    #při duplexním provozu 1
Slot2=1
# ModeHang=3
Debug=0

[System Fusion Network]
Enable=1
LocalAddress=127.0.0.1
LocalPort=3200
GatewayAddress=127.0.0.1
GatewayPort=4200
# ModeHang=3
Debug=0

[P25 Network]
Enable=0
GatewayAddress=127.0.0.1
GatewayPort=42020
LocalPort=32010
# ModeHang=3
Debug=0

[NXDN Network]
Enable=0
LocalAddress=127.0.0.1
LocalPort=14021
GatewayAddress=127.0.0.1
GatewayPort=14020
# ModeHang=3
Debug=0

[POCSAG Network]
Enable=0
LocalAddress=127.0.0.1
LocalPort=3800
GatewayAddress=127.0.0.1
GatewayPort=4800
# ModeHang=3
Debug=0

[TFT Serial]
# Port=modem
Port=/dev/ttyAMA0
Brightness=50

[HD44780]
Rows=2
Columns=16

# For basic HD44780 displays (4-bit connection)
# rs, strb, d0, d1, d2, d3
Pins=11,10,0,1,2,3

# Device address for I2C
I2CAddress=0x20

# PWM backlight
PWM=0
PWMPin=21
PWMBright=100
PWMDim=16

DisplayClock=1
UTC=0

[Nextion]
# Port=modem
Port=/dev/ttyAMA0
Brightness=50
DisplayClock=1
UTC=0
#Screen Layout: 0=G4KLX 2=ON7LDS
ScreenLayout=2
IdleBrightness=20

[OLED]
Type=3
Brightness=0
Invert=0
Scroll=1
Rotate=0
Cast=0

[LCDproc]
Address=localhost
Port=13666
#LocalPort=13667
DimOnIdle=0
DisplayClock=1
UTC=0

[Lock File]
Enable=0
File=/tmp/MMDVM_Active.lck

[Mobile GPS]
Enable=0
Address=127.0.0.1
Port=7834

[Remote Control]
Enable=0
Port=7642

konfiguraci ukončíme klasicky ctrl+o a enter,
z editoru vyskočíme ctrl+x

nyní si spustíme samotný hotspot příkazem:

sudo ./MMDVMHost MMDVM.ini

naběhne modem a proběhne připojení k DMR masteru……to je pár vteřin.
Vezmeme DMR radiostanici a zkusíme zaklíčovat na příslušné frekvenci a se správným ColorCodem a na správném time slotu (u semi-duplexních je to jedno, ale simlexní hotspoty pracují jen s time slotem2).
Chvíli si hrajeme s tím, že když nás hotspot nedekóduje vypínáme ho kombinací ctrl+C a opětovnou editací souboru MMDVM.ini. Toto zkoušíme do té doby dokud naše nastavení nevyvolá po opětovném spuštění MMDVMHostu kýženou reakci v podobě dekódování našeho vysílání s pokud možno co nejmenší  hodnotou BER.
Neděste se , není to tak složité jak to vypadá. Obvykle stačí vyzkoušet hodnoty TXOffset a RXOfsset 0, -200 , 200 a ono se to někde chytí a pak už to jen doladíte. Otravné je jen to, že musíte proces MMDVMHost spustit – vyzkoušet – ukončit ctrl+C, otevřít MMDVM.ini  > změnit parametry offsetů > uložit > vyskočit> spustit MMMDVMHost………..párkrát to uděláte, ale když totéž budete dělat přes nádherné mnohobarevné rozhraní PI-Staru tak to sice bude víc cool a easy, ale současně s tím, že tam program pracuje s poměrně sofistikovanou PHP databází tak to bude i o to déle trvat.

Upozornění: pro zkoušky použijte Privat Call na papouška,Parrot nebo nějakou nepoužívanou Talk Group!!!
Vše dohledatelné na webu jak DMR sobě nebo Brandmeistra. Zkoušení a pokusy na nějaké aktivní hovorové skupině nejsou nejlepší vstup do digitálního éteru.

Takže jsme v bodě kdy naše DMR vysílání hotspot dekóduje a když zkusíme papouška tak se i slyšíme. Teď bychom chtěli aby se to samo spustilo po zapojení napájení hotspotu nebo po restartu. Použijeme následujíci :

sudo nano /etc/rc.local
a do souboru rc.local před exit0 doplníme řádek:
cd /opt/mmdvm && sudo ./MMDVMHost MMDVM.ini &
a uložíme a vyskočíme kombinací už nám známých kláves ctrl+o>enter>ctrl+x

Teď máme do spouštěcí sekvence doplněn příkaz, který nám spustí MMDVMHost při startu (restartu) hotspotu.

Tak to je pro tentokrát vše.
Příště si ukážeme ještě něco navic.

 

2 komentáře

    • Ahoj, jaký máš MMDVM modem a fw v něm? Možné příčiny této chyby jsou špatné vyplnění konfiguračního souboru MMDVM.ini nebo příliš stará verze fw modemu.

Přidejte odpověď

Vaše e-mailová adresa nebude zveřejněna.


*