HotSpot - tak trochu jinak




V tomto článku bych chtěl popsat postup vedoucí ke zporovoznění HotSpotu, tedy aktivního prvku sítě, který slouží k vykrytí míst, kam tradiční převaděče "nedosáhnou". Popisů na dané téma jsou mraky a rozhodně nechci psát jinými slovy to, co jiní napsali již mnohokrát. A co že je to tedy tím cílem? Popsat zájemcům o zprovoznění hotspotu krok za krokem všechny nezbytné úkony, aniž by byly važadovány hlubší znalosti práce v linuxovém prostředí a na druhou stranu aby si zájemce odnesl hodnotnější zkušenost než jen tupé přenášení diskových obrazů na SD kartu....

Celý postup budu popisovat vůdči sestavě Raspberry PI 3 + DVMega + MMDVMHot. Nicméně chci upozornit na to, že pokud by někdo chtěl místo DVMEGA použít FM rádio a MMDVM modem, tak na postupu se nic nemění a není třeba přestávat číst. A dopředu uvádím, že nebudeme instalovat Xka (grafické prostředí) a tím pádem ani VNC server. Takže ano, budeme se pohybovat v tom nepřátelském "příkazovém řádku", tedy v prostřední introvertů, rozcuchaných podivínů, asociálních inviduí a pupínkatých anarchistů. Ale nebude to bolet ačkoli místy to může působit složitě. Důvodem k absenci X + VNC je absurdita tohoto řešení, tedy připojovat se VNC klientem proto, abych zmeníl nastavení sítě nebo jeden parametr v konfiguraci, mi přijde hloupé. A stejně tak je zbytečné, aby běželo v systému něco, co vyžírá výkon a 99% času je nevyužito. A v neposlední řadě mi přijde škoda, že uživatelé kopírují obrazy disku na kartu, protože "ta imidž nefuguje tak dobře jako ta předchozí". Přitom by stačilo jen vyměnit binárku MMDVMHostu a změnit něco v konfiguráku. Proto chci ukázat těm zvídavějším, že to jde i jinak a že to není o tolik složitější cesta. Předpokládám ovšem to, že pokud se do toho někdo pustí, tak má alespoň elemenární znalosti práce s linuxem, tedy je schopen přihlášení, práce v shellu, editace souborů - vim, nano nebo mc. Návod také předpokládá, že se vše děje pod účtem roota, ať je to nakrásno proti bezpečnostní etice :-) Bonusem může být dobrý pocit obdobný ubastlení "hen takého bazmeku" a v neposlední řadě i malinklo hlubší zkušenost s "tím linuxem". Tak snad to někomu pomůže k efektivnější práci.


Co to je HotSpot
HotSpot je aktivní prvek digitální sítě rozšiřující pokrytí, ale oproti převaděči funguje pouze v simplexním režimu - neumí zároveň vysílat a přijímat. Analogií může být simplexní vstup do echolinku.

Jak to funguje
Máme síť (nejen) DMR převaděčů s centrálním řídícím prvkem (v době psaní článku to byl BrandMeister) a k tomuto řídícímu prvku se přes internet připojíme pomocí MMDVMHostu a rozšíříme si tak pokrytí sítě v našem místě.

Proč Rasberry PI 3 ?
RasPi 3 je výhodné kvůli integrované WiFi, takže nám odpadnou problémy se zprovozňováním nějaké jiné připojené přes USB. Ale klidně by stačila i předchozí verze. Stejně tak lze použít jiné jednodeskové ARM počítače jako BeagleBone, Odroid, etc...

Proč DVMEGA + BlueSpot
Před letošní dovolenou jsem si pořídil tuto sestavičku, protože mi přišla jako ideální pro nastávající cestu, kdy ve spojení s malou PD-365 tovoří minimalistický set-up pro spojení z dalekých zemí. Tady se jen zmíním, že BlueSpot má osazen FTDI převodník, který nám zprostředkovává sériový port jako /dev/ttyUSB0 a jelikož se v pozdějším odstavci okolo tohoto názvu budu točit, tak to zmiňuji předem.

Než začneme
Celý postup lze realizovat tak, že připojíme RasPI k monitoru a klávesnici, nebo po prvním nabootování povolíme v raspiconfigu SSH (v posledních verzí je snad už defaultně zapnuto) a zbytek konfigurace uděláme přes SSH.

Přestože předpokládám, že o realizaci podle tohoto návodu se bude pokoušet jedinec, který zná základní práci v linuxu, viz odstavec výše, nedá mi to a napíši tedy alespoň postup pro základní práci.

Pro přístup k Raspberry bude použito SSH. Ve světě Windows doporučuji stáhnout program putty. Linux i unix (včetně iOS/MacOS) mají SSH klienta v základu.

Editaci souborů provádíme pomocí jednoho z textových editorů - vi, vim, nano, mcedit. Osobně preferuji VIM, ale lidem, kteří s VIMem neumí, rozhodně doporučuji NANO, už jen proto, že je v základní instalaci. Pro nejméně odvážné doporučím použít vnitřního editoru v Midnight Commanderu - spusť: "mc". Zde chci upozornit, že MC ani VIM nejsou v základní instalaci a jsou instalovány v třetím kroku hned po přenesení diskového obrazu na SD kartu.

Pohyb v shellu (příkazový řádek / to černé okno) velice usnadňuje použití tabelátoru, který nám doplňuje cesty k adresářům a souborům, případně dva rychlé úhozy zobrazí seznam všech možností (například všech souborů začínajících na "MMDVM").

Pracovní postup v deseti krocích
  1. Stažení IMG Raspianu
  2. Přenesení na SD kartu
  3. Instalace GCC a GITu
  4. Stažení MMDVMHost
  5. Kompilace MMDVMHost
  6. Nastavení MMDVMHost
  7. Spuštění a test MMDVMHost
  8. Nastavení Network Manageru
  9. Vytvoření UDEV pravidel
  10. Nastavení spuštění při bootu

Stažení Rapianu
Stáhmeme si poslední Raspian v minimalistickém sestavení, rozbalíme a přeneseme na kartu. Na to se ve světě Windows používá utilita například Win32DiskImager Ve světě linuxu použijeme standardni "dd", respektive něco jako "dd if=/cesta/k_souboru.img of=/dev/sdc bs=4M" - ale nejdříve si zkontrolujte, zda /dev/sdc ukazuje opravdu na SD kartu, ať si nesmaznete jiný disk !!! Lze na to použít například "blkid" nebo se jednoduse podívat do /var/log/messages nebo /var/log/syslog

Instalace GCC a GITu
GCC je kompilátor potřebný ke kompilaci, tedy aby nám ze zdrojových kódů vypadla binární (spustitelná) aplikace
GIT je verzovací nástroj který potřebujeme k tomu, abychom si stáhli zdrojové kódy MMDVMHost aplikace

Přihlášení jako uživatel "pi" s heslem "raspberry"

sudo su
apt-get update && apt-get upgrade
apt-get install gcc git network-manager mc vim aptitude

Stažení MMDVMHost a kompilace
git clone https://github.com/g4klx/MMDVMHost
cd MMDVMHost
make

Pak si výsledek odkopírujeme někam bokem, aby se to nepletlo v mumraji zdrojových souborů

mkdir /opt/mmdvm
cp MMDVMHost /opt/mmdvm/
cp DMRIds.dat /opt/mmdvm/
cp MMDVM.ini /opt/mmdvm/


Nastavení - INI soubor
Ty zvídavé odkážu sem a nebo sem. Ty co to nezajímá odkážu ke stažení INI souboru a jeho úpravě. Stačí jen značku, ID v DMR sekci a případně kmitočty.

Network manager - nmcli a konfigurace pripojeni
Abychom si mohli zadat známé wifi sítě a druhy připojení a nemuseli se starat o to, přes co jsme připojeni, použijeme démona s názvem Network Manager. Ten se postará o naše pohodlí. Jelikož nám neběží grafické rozhranní a nemáme tak dispozici žádné klikátko, musíme použít textového klienta, kterého ovládáme přes "nmcli" utilitu. Tento klient má syntaktickou nápovědu přístupnou přes tabelátor, stejně jako bash.

nmcli con add con-name Mobile_internet type gsm ifname wwan0 apn internet
nmcli con up Mobile_internet
nmcli con add con-name VodafonePocketWiFi ifname wlan0 type wifi ssid VodafonePocketWiFi
nmcli con modify VodafonePocketWiFi wifi-sec.key-mgmt wpa-psk
nmcli con modify VodafonePocketWiFi wifi-sec.psk R23vL455
nmcli con up VodafonePocketWiFi
nmcli con add con-name "kabel" type ethernet ifname eth0
nmcli con up kabel




Všechny parametry se ukládají do /etc/NetworkManager/system-connections/ adresáře a lze je tedy snadno editovat. Po zeditování jakéhokoli souboru je třeba buďto restartovat Network Manager, nebo restartovat celé RasPi








Pravidla pro udev
Tato podkapitola není nezbytná pro funkcionalitu, ale je užitečná, pokud máme DVMEGu připojenou přes USB kabel a zároveň budeme připojeni přes USB modem. Tady totiž vznikne situace, kdy při startu systému budou dva sériové porty USB modemu přiřazeny jako /dev/ttyUSB0 a /dev/ttyUSB1 a tím pádem DVMEGA bude připojena jako /dev/ttyUSB2, což musíme zohlednit v konfiguraci MMDVMHosta. To samo o sobě není problém a takováto sestava bude fungovat spolehlivě do té doby, kdy při startu systému bude připojen modem. Pokud je pak vyjmeme a budeme chtít použít ethernetové připojení nebo wifi, budeme muset zase zmenit adresu DVMEGA v konfiguraci MMDVMHostu na obligátní /dev/ttyUSB0 Pokud ale budeme druhy připojení časteji měnit, budeme muset měnit i konfiguraci MMDVMHostu, což je nepohodlné. UDEV nám s tím pomůže. Jednoduše vytvoříme pravidlo vázané na sériové číslo FTDI (obecně USB-UART převodníku) a to nám vždy udělá symbolický odkaz na ttyUSB zařízení, které onen převodník dostane přiřazeno. Tedy například /dev/ttyUSB2 == /dev/ttyUSB_hotspot To nám velice usnadní život, protože teď do MMDVMHost.ini uvedeme jen /dev/ttyUSB_hotspot a vícekrát se o to nemusíme starat.

Zjistíme si sériové číslo převodníku: udevadm info --attribute-walk -n /dev/ttyUSB0 | grep serial
a sériové číslo, které nám to vrátí poté zapíšeme do pravidel udev.




Otevřeme soubor /etc/udev/rules.d/99-usb-serial.rules a vložíme:
SUBSYSTEM=="tty", ATTRS{serial}=="DJ00MK6A", ENV{ID_USB_INTERFACE_NUM}=="00", SYMLINK+="ttyUSB_hotspot"



Restartujeme službu udev: /etc/init.d/udev restart
Odpojíme a připojíme DVMEGu a po zobrazení /dev adresáře ("ls /dev") uvidíme, že se vytvořil symbolický odkaz.

Nastavení spuštění při bootu
Otevřeme soubor /etc/rc.local a na posledním řádku je napsáno "exit 0". Před tento řádek vložíme: cd /opt/mmdvm/ && ./MMDVMHost mmdvm.conf &




Obrázky z vestavby
Rohodl jsem se přidat pár obrázků z vestavby DVMEGA a BlueSpotu o krabičky, které bude vyhovovat mým potřebám. Původní "skládačka" není zrovna praktická a anténa trčící kolmo vzhůru ve mě také mnoho nadšení nevyvolala. Takže jsem udělal malou úpravu a celé to dal do krabičky dle vlastních představ.








Pár slov na závěr
Používání hotspotů je vzhledem k malým nárokům a cenové dostupnosti dnes velice oblíbené i proto, že to již není doména jen D-STAR technologie, ale lze "HotSpotovat" i další digitální druhy přenosu hlasu. Jako úžasný pomocník na cestách, pokrytí chalupy a okolí či jen panelákového bytu je HotSpot zajímavou alternativou. Snad tento návod někomu pomohl k tomu, aby si mohl HotSpot nastavit sám a i se o tom něco málo dozvěděl.
26.09.2016