Odwiedza nas 92 gości oraz 0 użytkowników.

RaspberryPi - od podstaw (MULTI-RoIP_v2)

Spis treści

RaspberryPi dosyć fajnie radzi sobie w świecie radiowym a jego spektrum zastosowania czasem aż mnie zadziwia.

Można zastanawiać się dlaczego taki mały klocek ma być czymś co będzie podstawą do wielu projektów z radiem w tle.

Z przedstawionego opisu można wybrać interesujące elementy i zbudować sobie system samemu, niezależnie czy chcemy zrobić serwer czy bramkę czy tylko pobawić się emisjami cyfrowymi na HF.

Opis będzie powstawał powoli i etapami i z pewnością proszę go nie traktować jako wykładni że tak ma być. To tylko jeden z kierunków.

Przygotowanie wsadu od zera.

Osobiście używam zawsze najnowszej dystrybucji Raspbian choć należy przyznać iż w wielu projektach z tego powodu można napotkać problemy. Bo czegoś nie ma, bo coś się zmieniło i na starszej dystrybucji działa a na nowsze już nie i trzeba czekać aż znajdą się opisy jak to uruchomić na najnowszej. Problemów jest wiele ale w ramach samodoskonalenia postanowiłem iść tą drogą.

I aby była jasność - Raspberry i Linux to nie Windows i wchodząc w ten świat trzeba wyzbyć się mentalności windowsowej że albo system coś za nas załatwi albo program podczas instalacji sam się ogarnie. To wygodnictwo Windowsowe jest przyczyną  lenistwa ludzi i braku kreatywnego myślenia i tym samym braku perspektyw na rozwiązywanie problemów jakie Was mogą napotkać.

Ten artykuł ma na celu pokazanie przy okazji jak ja buduje kolejny kombajn wielozadaniowy do zastosowań około radiowych. Niestety nie umieszczę w nim pełnego spektrum wiedzy ponieważ część już robię automatycznie i nie zdaję sobie sprawy iż może to być istotne z punktu człowieka rozpoczynającego zabawę. A co najważniejsze nie jestem informatykiem i mam własny specyficzny język w jakim rozumiem pewne zagadnienia - Tryb Edukacja nadal kuleje.

 


Wsad pobieram ze strony https://www.raspberrypi.org/software/ i wgrywam na kartę za pomocą programu tam dostępnego o nazwie Raspberry Pi Imager 1.5

Fajny zautomatyzowany proces bez zbędnego pitu-pitu. Wybieramy co chcemy i na co chcemy wgrać i się dzieje.

 

Teraz teoretycznie można przejść do uruchomienia systemu na RaspberryPi o ile posiadamy RaspberryPi podłączone do monitora oraz podłączona jest klawiatura i mysz.

Ja skupię opis na rozwiązaniu zdalnym ponieważ znaczna większość ludzi tak czyni - czyli raspberry posiada jedynie podłączony internet po kablu i źródło zasilania, a całe programowanie/konfigurowanie czynione jest poprzez SSH lub VNC.

I tu trzeba trochę zmian zanim wyjmiemy kartę z naszego PC.

 

Otóż od jakiejś wersji systemu Raspbian ze względów bezpieczeństwa SSH jest domyślnie wyłączone co uniemożliwia nam zdalne połączenie na starcie. Aby uaktywnić SSH wystarczy na partycji BOOT utworzyć plik o nazwie SSH

Przy okazji , WINDOWS nie widzi drugiej partycji ROOTFS tak więc nie ma opcji że się pomylicie.

Tworzymy sobie taki plik i temat SSH mamy już z głowy. Wyjmujemy kartę wkładamy do RaspberryPi i uruchamiamy. logujemy się do Raspberry poprzez protokół SSH i wydajemy mu komendę sudo raspi-config

Odszukujemy funkcję Expand Filesystem i uruchamiamy - wydajemy w ten sposób systemowi polecenie użycia całej dostępnej powierzchni karty SD

 

Odszukujemy także funkcję  VNC i nakazujemy się jej uruchomić - VNC to zdalny pulpit.

 

I tu się zaczynają różnice jeśli chodzi o RaspberryPi2-3 a RaspberryPi4. Otóż w RPI4 samo uruchomienie VNC spowoduje że i owszem VNC pozwoli na połączenie ale nie będzie widoczny pulpit ponieważ system nie rozpoznał na żadnym ze złącz HDMI monitora co skutkuje brakiem rozdzielczości i tymsamym brakiem obrazu.

 

Aby zaradzić takiej sytuacji i mając na uwadze iż mój raspberry nie będzie nigdy podłaczony do monitora jestem zmuszony wymusić pewne parametry na Raspberrym jeśli chodzi o ustawniania złącza HDMI.

W tym celu należy edytować plik sudo nano /boot/config.txt i na samym dole na jego końcu dopisać

hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=16
hdmi_drive=1

 

 

Jak widzicie ja mam jeszcze dopisaną komendę

over_voltage=6
arm_freq=2147
gpu_freq=750

I jest to wykonane na moje ryzyko podkręcenie taktowania procesora ARM do prędkości 2.2GHz. Spowodowane jest to faktem iż mam odpowiednie chłodzenie i mam świadomość ile mnie czeka kompilacji różnych programów.

Trochę więc mocy przybywaj.

 

Po tych zmianach i restarcie na przykład komendą sudo reboot  naszym oczom pojawia się zdalny pulpit o rozdzielczości 1920x1080  naszego RaspberryPi w moim przypadku z predkością CPU 2.2GHz

 Możemy teraz zdalnie przejść do procesu personalizacji naszych ustawień, jezyk , układ klawiatury , sieć WiFi itd itd. Tymsamym mamy już gotowy system operacyjny do dalszej pracy.

 


 Aktualizacja : 11.09.2022

 

 


 Pi Build by KM4ACK to program ułatwiający nam instalację zautomatyzowaną wielu programów krótkofalarskich. Wystarczy wejść na stronę https://github.com/km4ack/pi-build i zapoznać się.

Instalacja ogranicza się do wklepanie w terminal komendy

git clone https://github.com/km4ack/pi-build.git \
  $HOME/pi-build && bash $HOME/pi-build/build-a-pi

 Dzięki temu naszym oczom ukaże się menu które pozwoli nam wybrać oprogramowanie jakie chcemy zainstalować

 

 

Po skończonej instalacji warto zrestartować system i naszym oczom ukazuje sie w menu zakładka HAM Radio z oprogramowaniem zainstalowanym automatycznie dzieki KM4ACK i jego build-a-pi.

 

Można uznać iż ten fragment mamy za sobą a jedyne czego mi na starcie brakuje to instalacji programu JTDX do emisji FT8 którego wielu woli wzamian za wsjtx.


Instalacje SVXlink przeprowadzam z github co zajmuje trochę czasu ale do tej pory to jedyne źródło poprawnego ModuleFrn oraz wsparcia dla HID CM108.

 

 

sudo apt-get install g++ make cmake libsigc++-1.2-dev libgsm1-dev libpopt-dev tcl8.5-dev libgcrypt-dev libspeex-dev libasound2-dev alsa-utils libqt4-dev git-core libjsoncpp-dev tclsh libcurl4-openssl-dev opus-tools libopus-dev libogg-dev rtl-sdr librtlsdr-dev doxygen groff libsigc++-2.0-dev qttools5-dev-tools qttools5-dev

 

A  następnie.

 

sudo adduser svxlink
git clone https://github.com/sm0svx/svxlink.git

 

 

cd svxlink
mkdir build
cd build
cmake ..
make
make doc
make install
ldconfig

 

Testowo możemy wydać komende svxlink w terminalu i powinniśmy zobaczyć coś takiego

SvxLink v1.7.99.47 Copyright (C) 2003-2020 Tobias Blomberg / SM0SVX

SvxLink comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it in accordance with the terms and conditions in the
GNU GPL (General Public License) version 2 or later.

Using configuration file: /usr/local/etc/svxlink/svxlink.conf
--- Using sample rate 48000Hz

Starting logic: SimplexLogic
Loading RX: Rx1
*** ERROR: Open capture audio device failed: No such file or directory
*** ERROR: Could not open audio device for receiver "Rx1"
*** ERROR: Could not initialize RX "Rx1"
*** ERROR: Could not initialize Logic object "SimplexLogic". Skipping...
*** ERROR: No logics available. Bailing out...

 

 Możemy teraz pobrać pliki dźwiękowe

cd /usr/local/share/svxlink/sounds/
wget https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases/download/19.09.99.1/svxlink-sounds-en_US-heather-16k-19.09.99.1.tar.bz2
sudo tar xvjf svxlink-sounds-en_US-heather-16k-19.09.99.1.tar.bz2
sudo ln -s en_US-heather-16k en_US







Możemy przejść do konfiguracji  sudo nano /usr/local/etc/svxlink/svxlink.conf

 ( konfiguracja będzie opisana szczegółowiej trochę później )

 



 
 



 Opis instalacji HBLink3 chciałem wykonać przekierowanie do strony http://sp2ong.noip.pl/pl/blog/stworz-swoj-wlasny-serwer-dmr niestety okazuje się to już niemożliwe ponieważ opisane repozytorium zostało zamknięte lub jest ograniczony dostęp - nie wiem.

Dlatego niniejszy opis wykonam na innym źródle HBLink lecz odsyłam na w/w stronę bo to kopalnia wiedzy jak ktoś chce się w to bawić. ( edycja: 30.06.2021 - Podana strona od jakiegoś czasu nie istnieje )

 

cd /opt
git clone https://github.com/HBLink-org/hblink3.git
cd hblink3
pip3 install -r requirements.txt

 

Konieczne jest jeszcze utworzenie pliku z konfiguracją oraz z regułami

cp hblink_SAMPLE.cfg hblink.cfg  
cp rules_SAMPLE.py  rules.py

 

Zanim zaczniemy konfigurację serwera warto jeszcze wykonać plik startowy

nano /lib/systemd/system/hblink.service

I wklejamy do niego

[Unit]
Description=HBLink

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

 

Teraz można poprzez komendy systemctl start/stop/restart hblink sterować programem

Można zająć się konfiguracją samego serwera i jego testowym uruchomieniem. W konfiguracji najważniejsze są na poczatku dwa pliki.

hblink.cfg  - odpowiedzialny za konfigurację serwera - kto na jakim porcie i haśle ma być połączony

 rules.py  -  zawierający instrukcje co z czym łączyć i na jakich zasadach tzw. reguły

 

 Edytujemy plik hblink.cfg 

nano /opt/hblink3/hblink.cfg

 

Plik zawiera opisy funkcji w języku angielskim lecz ja przedstawię tylko same funkcje

 

[GLOBAL]
PATH: ./
PING_TIME: 5
MAX_MISSED: 3
USE_ACL: True
REG_ACL: PERMIT:ALL
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
[REPORTS]
REPORT: True
REPORT_INTERVAL: 60
REPORT_PORT: 4321
REPORT_CLIENTS: 127.0.0.1
[LOGGER]
LOG_FILE: /tmp/hblink.log
LOG_HANDLERS: console-timed
LOG_LEVEL: DEBUG
LOG_NAME: HBlink
[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
[OBP-1]
MODE: OPENBRIDGE
ENABLED: True
IP:
PORT: 62035
NETWORK_ID: 3129100
PASSPHRASE: password
TARGET_IP: 1.2.3.4
TARGET_PORT: 62035
BOTH_SLOTS: True
USE_ACL: True
SUB_ACL: DENY:1
TGID_ACL: PERMIT:ALL
[MASTER-1]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 10
EXPORT_AMBE: False
IP:
PORT: 54000
PASSPHRASE: s3cr37w0rd
GROUP_HANGTIME: 5
USE_ACL: True
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
[REPEATER-1]
MODE: PEER
ENABLED: True
LOOSE: False
EXPORT_AMBE: False
IP:
PORT: 54001
MASTER_IP: 172.16.1.1
MASTER_PORT: 54000
PASSPHRASE: homebrew
CALLSIGN: W1ABC
RADIO_ID: 312000
RX_FREQ: 449000000
TX_FREQ: 444000000
TX_POWER: 25
COLORCODE: 1
SLOTS: 1
LATITUDE: 38.0000
LONGITUDE: -095.0000
HEIGHT: 75
LOCATION: Anywhere, USA
DESCRIPTION: This is a cool repeater
URL: www.w1abc.org
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 5
OPTIONS:
USE_ACL: True
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

 Szczegułowe opisy konfiguracji i wyjaśnienie poszczególnych opcji znajdziecie w internecie, ja tylko przedstawię parę z nich w wariancie SERWER TESTOWY w pełni otwarty bez zabezpieczeń DMRiD

 

[GLOBAL]
PATH: ./
PING_TIME: 10
MAX_MISSED: 5
USE_ACL: False
REG_ACL: PERMIT:ALL
SUB_ACL: PERMIT:ALL
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
[REPORTS]
REPORT: True
REPORT_INTERVAL: 20
REPORT_PORT: 4321
REPORT_CLIENTS: 127.0.0.1
[LOGGER]
LOG_FILE: /var/log/hblink.log
LOG_HANDLERS: file-timed
LOG_LEVEL: DEBUG
LOG_NAME: HBlink
[ALIASES]
TRY_DOWNLOAD: False
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
[OBP-1]
MODE: OPENBRIDGE
ENABLED: False
IP:
PORT: 62035
NETWORK_ID: 3129100
PASSPHRASE: password
TARGET_IP: 1.2.3.4
TARGET_PORT: 62035
BOTH_SLOTS: True
USE_ACL: True
SUB_ACL: DENY:1
TGID_ACL: PERMIT:ALL
[MASTER-1]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 2
EXPORT_AMBE: False
IP:
PORT: 54001
PASSPHRASE: s3cr37w0rd
GROUP_HANGTIME: 5
USE_ACL: False
REG_ACL: PERMIT:ALL
SUB_ACL: PERMIT:ALL
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

Dopisujemy kolejnego MASTER

[MASTER-2]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 2
EXPORT_AMBE: False
IP:
PORT: 54002
PASSPHRASE: s3cr37w0rd2
GROUP_HANGTIME: 5
USE_ACL: False
REG_ACL: PERMIT:ALL
SUB_ACL: PERMIT:ALL
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
[REPEATER-1]
MODE: PEER
ENABLED: False
LOOSE: False
EXPORT_AMBE: False
IP:
PORT: 54001
MASTER_IP: 172.16.1.1
MASTER_PORT: 54000
PASSPHRASE: homebrew
CALLSIGN: W1ABC
RADIO_ID: 312000
RX_FREQ: 449000000
TX_FREQ: 444000000
TX_POWER: 25
COLORCODE: 1
SLOTS: 1
LATITUDE: 38.0000
LONGITUDE: -095.0000
HEIGHT: 75
LOCATION: Anywhere, USA
DESCRIPTION: This is a cool repeater
URL: www.w1abc.org
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 5
OPTIONS:
USE_ACL: True
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

Dzięki takim zmianom mamy dwa konta MASTER dla dwóch hotspotów, wyłączyliśmy OpenBridge oraz Repeter a także zabroniliśmy pobierać aktualną bazę MARC-DMR ID bo jest ona zbyteczna, utworzylismy plik LOG i kilka innych funkcji.

Tak wstępnie przygotowany serwer pozwala na uruchomienie i testy. Lecz aby można rozmawiać na nim konieczne jest napisanie komend co ma robić gdy

W tym celu należy edytować plik rules.py
 
nano /opt/hblink3/rules.py


Interesujący nas fragment wygląda tak:

BRIDGES = {
    'WORLDWIDE': [
    {'SYSTEM': 'MASTER-1',    'TS': 1, 'TGID': 1,    'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'ON',  'ON': [2,], 'OFF': [9,10], 'RESET': []},
    {'SYSTEM': 'CLIENT-1',    'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'ON',  'ON': [2,], 'OFF': [9,10], 'RESET': []},
        ],
    'ENGLISH': [
    {'SYSTEM': 'MASTER-1',    'TS': 1, 'TGID': 13,   'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [3,], 'OFF': [8,10], 'RESET': []},
    {'SYSTEM': 'CLIENT-2',    'TS': 1, 'TGID': 13,   'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [3,], 'OFF': [8,10], 'RESET': []},
        ],
    'STATEWIDE': [
    {'SYSTEM': 'MASTER-1',    'TS': 2, 'TGID': 3129, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [4,], 'OFF': [7,10], 'RESET': []},
    {'SYSTEM': 'CLIENT-2',    'TS': 2, 'TGID': 3129, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [4,], 'OFF': [7,10], 'RESET': []},
        ]

 

A opis znajdziecie na stronie http://sq9lm.lukaszmisiura.com/hblink-opis-pliku-rules-py/

Musicie zrozumieć zależności występujące bo inaczej wysypie się cały serwer. Mając w pamięci że podczas edycji pliku hblink.cfg mamy taki status:

OBP - openbridge - Enable=False czyli wyłaczony

MASTER-1  Enable=True czyli włączony

MASTER-2 Enable=True czyli włączony

REPEATER-1 Enable=False czyli wyłaczony

 

 

To konfiguracji wymagają jedynie elementy włączone czyli MASTER-1 oraz MASTER-2. Przykładowo napiszemy regułe dla 3 grup rozmownych TG 10,20 i 30

Przy założeniu że mamy tylko SIMPLEX hotspot pracujące na TS2 i że chcemy mieć wszystkie grupy nieaktywne po restarcie serwera a aktywacja jakiejś grupy przez użytkownika jest na stałe do momentu gdy on sam nie zdecyduje się na zmianę grupy rozmownej

BRIDGES = {
    'TG10': [
 {'SYSTEM': 'MASTER-1',    'TS': 2, 'TGID': 10, 'ACTIVE': False, 'TIMEOUT': 2, 'TO_TYPE': 'NONE',  'ON': [10,], 'OFF': [20,30], 'RESET': []},
 {'SYSTEM': 'MASTER-2',    'TS': 2, 'TGID': 10, 'ACTIVE': False, 'TIMEOUT': 2, 'TO_TYPE': 'NONE',  'ON': [10,], 'OFF': [20,30], 'RESET': []},
        ],
    'TG20': [
 {'SYSTEM': 'MASTER-1',    'TS': 2, 'TGID': 20,   'ACTIVE': False, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [20,], 'OFF': [10,30], 'RESET': []},
 {'SYSTEM': 'MASTER-2',    'TS': 2, 'TGID': 20,   'ACTIVE': False, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [20,], 'OFF': [10,30], 'RESET': []},
        ],
    'TG30': [
 {'SYSTEM': 'MASTER-1',    'TS': 2, 'TGID': 30, 'ACTIVE': False, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [30,], 'OFF': [10,20], 'RESET': []},
 {'SYSTEM': 'MASTER-2',    'TS': 2, 'TGID': 30, 'ACTIVE': False, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [30,], 'OFF': [10,20], 'RESET': []},
        ]

 

 

 

Aby zobaczyć wizualnie efekty naszych zmagań konieczny jest program HBMonitor którego instalacja w nastepnej części.

 

Edycja: 30.06.2021

Możliwe jest wzbogacenie naszego HBLink o opcję hotspot proxy umożliwiający wszystkim użytkownikom wejście na serwer poprzez ten samo port i hasło.

Możliwe jest także wzbogacenie o obsługę private call, sms czy nawet obsługę D-APRS.

 

 


 HBmonitor to interface www ukazujący w graficzny sposób jak działa HBLink.
 
Najpopularniejszą wersję można pobrać od Waldka SP2ONG pod adresem https://github.com/sp2ong/HBmonitor
Obecnie są chyba dwa warianty HBmonitora lecz moja przygoda z HBLink zakończyła się w momencie ukazania się V2 i już nie byłem w stanie jej przetestować.
Dlatego opiszę sposób instalacji w oparciu o instrukcję zamieszczoną na GitHub przez Waldka SP2ONG i zawsze ale zawsze należy brać info u źródła dlatego zapoznajcie się z oficjalnym opisem.

 

sudo -s
cd /opt
git clone https://github.com/sp2ong/HBmonitor.git
cd HBmonitor

 

chmod +x install.sh
./install.sh
cp config_SAMPLE.py config.py
 
Kopiujemy przygotowany plik startowy do właściwego folderu
cp utils/hbmon.service /lib/systemd/system/

 

Teraz możemy już używać komend w celu sterowania programem.

systemctl enable hbmon
systemctl start hbmon
systemctl status hbmon

 

Możemy przejśc do konfiguracji HBmonitor poprzez edycję pliku config.py

nano config.py

 

Naszym oczom pojawi się podobna zawartość

 


REPORT_NAME     = 'Dashboard of local DMR network'           # Name of the monitored HBlink system
#
CONFIG_INC      = True                           # Include HBlink stats
HOMEBREW_INC    = True                           # Display Homebrew Peers status
LASTHEARD_INC   = True                           # Display lastheard table on main page
BRIDGES_INC     = False                          # Display Bridge status and button
EMPTY_MASTERS   = False                          # Display (True) or not (False) empty master in status
#
HBLINK_IP       = '127.0.0.1'                    # HBlink's IP Address
HBLINK_PORT     = 4321                           # HBlink's TCP reporting socket
FREQUENCY       = 10                             # Frequency to push updates to web clients
WEB_SERVER_PORT = 8080                           # Has to be above 1024 if you're not running as root
CLIENT_TIMEOUT  = 0                              # Clients are timed out after this many seconds, 0 to disable

# Put list of NETWORK_ID from OPB links to don't show local traffic in lastheard, for example: "260210,260211,260212"
OPB_FILTER = ""

# Authorization of access to dashboard
WEB_AUTH =  False
WEB_USER =  'hblink'
WEB_PASS =  'hblink'

 

Początkowa konfiguracja może się streścić do zmiany nazwy serwera i portu. Port 8080 to domyślny proxy port i mogą wystąpić komplikacje jesli jakaś usługa w sieci lokalnej pracuje już na tym porcie, w moim przypadku UniFi Controller.

REPORT_NAME     = 'NAZWA SERWERA wyświetlana pod Logiem' 
WEB_SERVER_PORT = 8090

 

 Po wydaniu komendy uruchomienia HBLink oraz HBmonitor pod adresem http://IP-MALINY:8090 zobaczymy taki obraz

 

A po podłączeniu hotspot do serwera będzie on widoczny i jego aktywność.

 

Z instalacji to wszystko, więcej informacji na stronach o tematyce HBLink lub HBmonitor.

 


 FreeDMR to odmiana lub wariant programu HBLink3. (edycja 30.06.2021 - opis powstał na początku 2021roku i może być już nieaktualny. Proszę śledzić zmiany na stronach developer'ów )

Zanim przejdziemy do instalacji proszę abyście zapoznali się z tym projektem na stronach

http://www.freedmr.uk/

https://github.com/hacknix/FreeDMR

https://github.com/hacknix/FreeDMR/wiki

 

Instalacja

 

sudo -s
cd /opt
wget https://github.com/hacknix/FreeDMR/archive/v1.0.tar.gz
tar zxvf v1.0.tar.gz
mv FreeDMR-1.0 FreeDMR
cd FreeDMR
sh ./install.sh

 

Kolejnym krokiem jest konfiguracja bazy danych MySQL i przyznam się że to chyba mój pierwszy kontakt z MySQL i przyspożyło mi to wielu problemów. Dlatego zapoznanie się z działaniem MySQL jest ważne aby zrozumieć jak to działa i jak rozwiazywać problemy które nas napotkają. Mam nadzieję iż niedługo kompetentniejsze osoby opiszą instalację lepiej tak aby przy okazji nauczyć innych a nie tylko CTRL+C / CTRL+V.

Dlatego proszę tego opisu nie traktować jako wykładnika - z powodów ograniczonej wiedzy w tym temacie, "rosyjskim" sposobem prób i błedów udało mi sie przebrnąć przez ten etap instalacji.

 

W moim przypadku  wydanie komendy

mysql -u root -p

Dało wynik 

root@raspberrypi:/opt/FreeDMR# mysql -u root -p
bash: mysql: command not found

 

Co oznacza że mój system nie ma zainstalowanej bazy danych MySQL. Dla systemów raspbian odpowiednikiem MySQL jest mariadb-server-10.0 którą musimy zainstalować.

apt update
apt install mariadb-server-10.0

 

Po tej czynności możeny przejść do   Create database (recommended)  opisanej instrukcji  instalacji https://github.com/hacknix/FreeDMR/wiki/Installation-guide

Opis oworzenia użytkownika zaczerpnięty z https://linuxize.com/post/how-to-create-mysql-user-accounts-and-grant-privileges/

 
mysql -u root
CREATE USER 'freedmr'@'localhost' IDENTIFIED BY 'passw0rd';
CREATE DATABASE freedmr;

GRANT ALL PRIVILEGES ON freedmr.* TO 'freedmr'@'localhost';
USE freedmr;
 

Teraz zgodnie z opisem musimy wkleić zawartość pliku repeaters.sql która wygląda tak:

CREATE TABLE `repeaters` (
  `CALLSIGN` varchar(8) NOT NULL,
  `MODE` varchar(8) NOT NULL,
  `ENABLED` tinyint(1) NOT NULL,
  `_REPEAT` tinyint(1) NOT NULL,
  `MAX_PEERS` int(11) NOT NULL,
  `EXPORT_AMBE` tinyint(1) NOT NULL,
  `IP` varchar(255) DEFAULT NULL,
  `PORT` int(11) NOT NULL,
  `PASSPHRASE` varchar(255) NOT NULL,
  `GROUP_HANGTIME` int(11) NOT NULL,
  `USE_ACL` tinyint(1) NOT NULL,
  `REG_ACL` varchar(255) NOT NULL,
  `SUB_ACL` varchar(255) NOT NULL,
  `TGID_TS1_ACL` varchar(255) NOT NULL,
  `TGID_TS2_ACL` varchar(255) NOT NULL,
  `DEFAULT_UA_TIMER` int(11) NOT NULL,
  `SINGLE_MODE` tinyint(1) NOT NULL,
  `VOICE_IDENT` tinyint(1) NOT NULL,
  `TS1_STATIC` varchar(255) DEFAULT NULL,
  `TS2_STATIC` varchar(255) DEFAULT NULL,
  `DEFAULT_REFLECTOR` int(11) NOT NULL,
  PRIMARY KEY (`CALLSIGN`),
  KEY `PORT` (`PORT`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`

Tylko coś tu nie pasuje, ponieważ baza nie chce przyjąć tego wpisu. Mi osobiście wychodzi na to że ów wpis będzie działał ale po zamianie ostatniego znaku ' zawartego w nim na ; wszystko działa. Czyli kończy się linijką

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 Nie wiem czym to jest spowodowane lecz kiedyś może się dowiem :)

Tak więc wklejamy zmodyfikowaną zawartość pliku repeaters.sql

CREATE TABLE `repeaters` (
  `CALLSIGN` varchar(8) NOT NULL,
  `MODE` varchar(8) NOT NULL,
  `ENABLED` tinyint(1) NOT NULL,
  `_REPEAT` tinyint(1) NOT NULL,
  `MAX_PEERS` int(11) NOT NULL,
  `EXPORT_AMBE` tinyint(1) NOT NULL,
  `IP` varchar(255) DEFAULT NULL,
  `PORT` int(11) NOT NULL,
  `PASSPHRASE` varchar(255) NOT NULL,
  `GROUP_HANGTIME` int(11) NOT NULL,
  `USE_ACL` tinyint(1) NOT NULL,
  `REG_ACL` varchar(255) NOT NULL,
  `SUB_ACL` varchar(255) NOT NULL,
  `TGID_TS1_ACL` varchar(255) NOT NULL,
  `TGID_TS2_ACL` varchar(255) NOT NULL,
  `DEFAULT_UA_TIMER` int(11) NOT NULL,
  `SINGLE_MODE` tinyint(1) NOT NULL,
  `VOICE_IDENT` tinyint(1) NOT NULL,
  `TS1_STATIC` varchar(255) DEFAULT NULL,
  `TS2_STATIC` varchar(255) DEFAULT NULL,
  `DEFAULT_REFLECTOR` int(11) NOT NULL,
  PRIMARY KEY (`CALLSIGN`),
  KEY `PORT` (`PORT`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

I efektem jest taki komunikat 

Query OK, 0 rows affected (0.22 sec)

Kolejny krok narazie sobie odpuszczam, ponieważ ten warian serwera będzie konfigurowany tak aby każdy użytkownik wchodził na serwer poprzez port 62031 z hasłem passw0rd,

dlatego ten wpis jest mi zbyteczny

insert into repeaters VALUES ('<yourcall>','MASTER',1,1,1,0,'',54001,'passw0rd',5,1,'DENY:1','DENY:1','PERMIT:ALL','PERMIT:ALL',10,1,1,'','',0);

 

I wychodzę z bazy danych komendą

quit

 

Kolejnymi krokami opisanymi w instrukcji jest utworzenie folderu konfiguracyjnego oraz przekopiowanie do niego pliku konfiguracji i pliku reguł

mkdir config
cp FreeDMR-SAMPLE.cfg config/FreeDMR.cfg
cp rules_SAMPLE.py config/rules.py

 

Konfiguracja odbywa się poprzez edycję pliku FreeDMR.cfg

nano /opt/FreeDMR/config/FreeDMR.cfg

 

Plik jest taki jak w przypadku HBLink'a standardowego z paroma dodatkami.

[GLOBAL]
PATH: ./
PING_TIME: 10
MAX_MISSED: 3
USE_ACL: True
REG_ACL: PERMIT:ALL
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
[REPORTS]
REPORT: True
REPORT_INTERVAL: 60
REPORT_PORT: 4321
REPORT_CLIENTS: 127.0.0.1
[LOGGER]
LOG_FILE: /tmp/hblink.log
LOG_HANDLERS: console-timed
LOG_LEVEL: DEBUG
LOG_NAME: HBlink
[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
[MYSQL]
USE_MYSQL: False
USER: hblink
PASS: mypassword
DB: hblink
SERVER: 127.0.0.1
PORT: 3306
[OBP-TEST]
MODE: OPENBRIDGE
ENABLED: False
IP:
PORT: 62044
NETWORK_ID: 1
PASSPHRASE: mypass
TARGET_IP:
TARGET_PORT: 62044
USE_ACL: True
SUB_ACL: DENY:1
TGID_ACL: PERMIT:ALL
[G9XYZ]
MODE: MASTER
ENABLED: False
REPEAT: True
MAX_PEERS: 1
EXPORT_AMBE: False
IP:
PORT: 54001
PASSPHRASE: passw0rd
GROUP_HANGTIME: 5
USE_ACL: True
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
DEFAULT_UA_TIMER: 10
SINGLE_MODE: True
VOICE_IDENT: True
TS1_STATIC:
TS2_STATIC:
DEFAULT_REFLECTOR: 0
[REPEATER-1]
MODE: PEER
ENABLED: False
LOOSE: False
EXPORT_AMBE: False
IP:
PORT: 54001
MASTER_IP: 172.16.1.1
MASTER_PORT: 54000
PASSPHRASE: homebrew
CALLSIGN: W1ABC
RADIO_ID: 312000
RX_FREQ: 449000000
TX_FREQ: 444000000
TX_POWER: 25
COLORCODE: 1
SLOTS: 1
LATITUDE: 38.0000
LONGITUDE: -095.0000
HEIGHT: 75
LOCATION: Anywhere, USA
DESCRIPTION: This is a cool repeater
URL: www.w1abc.org
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 5
OPTIONS:
USE_ACL: True
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

 

Pojawił się dodatkowy wpis

[MYSQL]
USE_MYSQL: False
USER: hblink
PASS: mypassword
DB: hblink
SERVER: 127.0.0.1
PORT: 3306

A także trochę więcej opcji przy kontach MASTER

[G9XYZ]
MODE: MASTER
ENABLED: False
REPEAT: True
MAX_PEERS: 1
EXPORT_AMBE: False
IP:
PORT: 54001
PASSPHRASE: passw0rd
GROUP_HANGTIME: 5
USE_ACL: True
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
DEFAULT_UA_TIMER: 10
SINGLE_MODE: True
VOICE_IDENT: True
TS1_STATIC:
TS2_STATIC:
DEFAULT_REFLECTOR: 0

 

W zakładce MYSQL wpisujemy dane z konta jakie utworzyliśmy  w bazie MySQL, jak ktoś nie pamieta to przypomnę

CREATE USER 'freedmr'@'localhost' IDENTIFIED BY 'passw0rd';

 

Czyli wpis powinien wygladać tak

[MYSQL]
USE_MYSQL: True
USER: freedmr
PASS: passw0rd
DB: freedmr
SERVER: 127.0.0.1
PORT: 3306

Natomiast MASTER powielamy na przykład 3 razy lub 30 razy w zależności kto ile chce hotspotów przyjąc na serwer. Nie zapominany o nadaniu każdemu MASTER innej nazwy i portu

[HOTSPOT-1]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 1
EXPORT_AMBE: False
IP:
PORT: 54001
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
DEFAULT_UA_TIMER: 10
SINGLE_MODE: True
VOICE_IDENT: True
TS1_STATIC:
TS2_STATIC:
DEFAULT_REFLECTOR: 0
[HOTSPOT-2]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 1
EXPORT_AMBE: False
IP:
PORT: 54002
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
DEFAULT_UA_TIMER: 10
SINGLE_MODE: True
VOICE_IDENT: True
TS1_STATIC:
TS2_STATIC:
DEFAULT_REFLECTOR: 0
[HOTSPOT-3]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 1
EXPORT_AMBE: False
IP:
PORT: 54003
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
DEFAULT_UA_TIMER: 10
SINGLE_MODE: True
VOICE_IDENT: True
TS1_STATIC:
TS2_STATIC:
DEFAULT_REFLECTOR: 0

 

Ponieważ posiadamy juz HBMonitor zainstalowany to można go uruchomić, a sam FreeDMR serwer można testowo uruchomić komendą w terminalu

systemctl restart hbmon
cd /opt/FreeDMR
python3 ./bridge_master.py -c ./config/FreeDMR.cfg -r ./config/rules.py

Naszym oczom na terminalu powinien się ukazać taki komunikat

 

 

Teraz przechodzimy do konfiguracji naszego PROXY które będzie odpowiedzialne za przyjmowanie od wszystkich klientów połączenia na porcie 62031 i przekierowywanie ich na porty zapisane w kontach MASTER w naszym przypadku 54001-54003.

Na stronie WIKI jest opis https://github.com/hacknix/FreeDMR/wiki/Hotspot-Proxy

 

Otwieramy drugie okno terminala i przechodzimy do edycji pliku proxy

sudo -s
cd /opt/FreeDMR
nano hotspot_proxy_v2.py

 

Odnajdujemy fragment z opisem CONFIG HERE

#*** CONFIG HERE ***
    
    Master = "127.0.0.1"
    ListenPort = 62031
    DestportStart = 54000
    DestPortEnd = 54001
    Timeout = 30
    Stats = True
    Debug = True
    BlackList = [1234567]
    
#*******************

 Zmieniamy wartości w rubryce DestPortStar oraz DestPortEnd. W naszym przypadku MASTER jakie mamy już zaprogramowane mają porty 54001 do 54003

#*** CONFIG HERE ***
    
    Master = "127.0.0.1"
    ListenPort = 62031
    DestportStart = 54000
    DestPortEnd = 54003
    Timeout = 30
    Stats = True
    Debug = True
    BlackList = [1234567]
    
#*******************

Możemy zapisać i uruchomić ten plik

 python3 hotspot_proxy_v2.py

Niestety w moim przypadku mam komunikat o brakującym elemencie o nazwie resettabletimer , dlatego musimy go zainstalować

pip3 install resettabletimer

Ponawiamy próbe uruchomienia i powinniśmy zaobserwować komunikat

0 ports out of 3 in use (3 free)

 

 W momencie podłączania hotspot PROXY powinien w logach pokazać coś takiego

 

 

Program działa i można przejść do napisania skryptu startowego oraz ikon w menu.

Nie jest to może jakiś dobry poradnik lecz starałem się krok po kroku przedstawić proces instalacji jaki ja przechodziłem.

 


 Ponieważ mój RaspberryPi4 ma już podłączenie AUDIO+CAT+PTT do radia HF/VHF a także połączenie  AUDIO+PTT do radia VHF/UHF to dla uzupełnienia jego funkcjonalności przyszedł czas na MMDVM i emisje DMR,Dstar

 

W celu łatwiejszego dostępu  do portu GPIO na przyszłośc użyłem adaptera powielającego istniejace GPIO x2

 

Lecz zanim zaczniemy instalację najpierw przygotowanie maliny do współpracy z MMDVM.

 

sudo -s 
nano /boot/config.txt

 

I wklejamy na koncu pliku linijkę

dtoverlay=pi3-disable-bt

 

Następnie restartujemy naszą malinę.

 

MMDVMHost pobieram z własnej  strony https://www.d4a.uk/git/MMDVMHost.zip ale polecam zapoznać sie z instalacją ze źródła opisaną na https://www.f5uii.net/en/installation-calibration-adjustment-tunning-mmdvm-mmdvmhost-raspberry-motorola-gm360/3/

 

sudo -s
cd /opt
wget https://www.d4a.uk/git/MMDVMHost.zip
unzip MMDVMHost.zip
mkdir /var/log/mmdvmhost

Zainstalujemy jeszcze biblioteki dla wyświetlacza OLED
sudo apt-get install git-core libi2c-dev i2c-tools lm-sensors wiringpi
sudo nano /etc/modules
 
W edytowanym pliku powinniśmy mieć dwa wpisy
i2c-dev
spidev
 
Dla posiadaczy wyświetlacza OLED konieczne jest wgranie bibliotek
cd /opt/MMDVMHost/ArduiPi_OLED
sudo make
 
Nastepnie kompilujemy MMDVMHost
cd /opt/MMDVMHost
make clean
make
 
 
Teraz możemy edytować plik
 nano /opt/MMDVMHost/MMDVM.ini

 

W pliku zmieniamy na poczatek następujące fragmenty

[General]
Callsign=DEMO
Id=1234567
Timeout=180
Duplex=0
# ModeHang=10
RFModeHang=10
NetModeHang=3
Display=None
Daemon=0
[Info]
RXFrequency=434000000
TXFrequency=434000000
Power=1
# The following lines are only needed if a direct connection to a DMR master is being used
Latitude=0.0
Longitude=0.0
Height=0
Location=RPI4 HOTSPOT
Description=Multi-Mode Repeater
URL=www.google.co.uk
[Log]
# Logging levels, 0=No logging
DisplayLevel=1
FileLevel=0
FilePath=.
FileRoot=MMDVM
FileRotate=1
[Modem]
# Port=/dev/ttyACM0
Port=/dev/ttyAMA0
# Port=\\.\COM4
Protocol=uart
# Address=0x22
[DMR Network]
Enable=1
# Type may be either 'Direct' or 'Gateway'. When Direct you must provide the Master's
# address as well as the Password, and for DMR+, Options also.
Type=Gateway
Address=144.91.99.196
Port=62031
Local=62032
Password=passw0rd
Jitter=360
Slot1=0
Slot2=1
# Options=
# ModeHang=3
Debug=0

 

Warto także przy wszystkich opcjach gdzie są podane nazwy P25, SystemFusion,FM,D-Star,NXDN,POCSAG przy opcji ENABLE wpisać 0 zamias 1.

 

 Gdy próbujemy uruchomić MMDVMHost na RaspberryPi4 po restarcie zobaczymi że program wykazuje błąd

 

 W celu uruchomienia MMDVM na RaspberryPi4 konieczne jest wciśniecie przycisku restart na płycie nakładki przed uruchomieniem MMDVMHost lub możemy napisać skrypt startowy wzorowany na rozwiązaniu z PiStar.

 

cd /opt
nano startmmdvm.sh

 

Wklejamy tam następującą treść

 

#!/bin/bash
#
##############################################################################
#                                                                            #
#                     Pi-Star MMDVM HS_HAT Reset Tool                        #
#                                                                            #
#     Version 1.0, Code, Design and Development by Andy Taylor (MW0MWZ).     #
#                                                                            #
#     Make it simple to reset an MMDVM bosard from the CLI on Pi-Star.       #
#                                                                            #
##############################################################################
#
  # Reset process for MMDVM HS_HAT Board (20,-21,21:-20,21)
echo "Restart GPIO"
  echo 20 > /sys/class/gpio/export
  echo 21 > /sys/class/gpio/export
  echo out > /sys/class/gpio/gpio20/direction
  echo out > /sys/class/gpio/gpio21/direction
  sleep 0.5
  echo 0 > /sys/class/gpio/gpio20/value
  echo 0 > /sys/class/gpio/gpio21/value
  echo 1 > /sys/class/gpio/gpio21/value
  sleep 1
  echo 0 > /sys/class/gpio/gpio20/value
  echo 1 > /sys/class/gpio/gpio20/value
  sleep 0.5
  echo 20 > /sys/class/gpio/unexport
  echo 21 > /sys/class/gpio/unexport
echo "Modem reset complete"
sleep 2
echo "Start MMDVMHost"
/opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini
 
Następnie nadajemy skryptowi uprawnienia do uruchamiania

 

chmod +x startmmdvm.sh

 

I możemy już uruchamiać bez najmniejszych problemów przy użyciu tego skryptu. Komenda do uruchomienia lub ikony to

sudo sh /opt/startmmdvm.sh
 
 Dzięki takim zabiegom mamy działający HOTSPOT na bazie RaspberryPi4 jako funkcja dodatkowa bez zbędnych Dashboard, bardzo lekki i nie obciążający systemu.
 

Instalacja serwera oraz klienta MUMBLE jest podyktowana chęcią używania tego VOIP komunikatora do przesyłania głównie audio z radia HF poprzez internet na zasadach REMOTE CONTROL lub poprostu mieć możliwość podzielić się z kimś tym co  słyszę.
 
Instalacja wzorowana na jednym z pierwszych opisów wskazanych przez Google.
 
sudo apt-get update
sudo apt-get install mumble-server
sudo apt-get install mumble
 
Konfigurację serwera Mumble robimy popraz komendę
sudo dpkg-reconfigure mumble-server

 

Po wydaniu tej komendy wyskoczy okienko z zapytaniem czy serwer Mumble ma uruchamiać się po restarcie systemu.

 

 

Kolejne pytanie dotyczy czy serwer ma mieć wysoki PRIORYTET.

 

 

Będziemy także zapytani o hasło jakie ma mieć konto SuperUser który ma uprawnienia do konfiguracji nakałów na serwerze.

 

Dodatkowo możemy edytować plik konfiguracyjny aby precyzyjnie zmienić ustawienia

sudo mcedit /etc/mumble-server.ini

Serwer jest sterowany komendami

systemctl status mumble-server
systemctl restart mumble-server
systemctl start mumble-server
systemctl stop mumble-server

 

 


DVSwitch Serwer prędzej nazywany potocznie DVSwitch_tools lub nawet DVSwitch_mobile to narzędzie pozwalające obecnie na wiele zastosowań. Do serwera można połączyć się przy użyciu aplikacji DVSwitch_mobile i prowadzić rozmowy w sieciach cyfrowych. Obecnie to zastosowanie wyparte zostało poprzez aplikacje DROID STAR. DVSwitch mobile pozwala na ustawienie mostów między-systemowych przy użyciu sprzętowego Vocodera lub programowych emulatorów.

Ja osobiście obecnie używam tego narządzia do mostów DMR do ZELLO czy EchoLink, ponieważ DVSwitch wypluwa z siebie strumień analogowego audio USRP co pozwala podłączyć sie do niego na przykład programami USRP Client czy AllStarLink.

Należy tu wspomnieć o ciekawym projekcie DVPi http://www.hamskey.com/2020/07/creating-network-transceiver-using.html

Rozwiązanie wpisująca się w mój koncept "nie chce przedłużki mikrofonu w postaci hotspota i radia"

 

Wracając do samego DVSwitch to opis instalacji jest umieszczony na stronie https://dvswitch.groups.io/g/main/topic/dvswitch_server_instructions/69407946?p=,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,60,69407946 ale można go znaleść także na polskich stronach. Można także pobrać gotowy wsad który przygotował kolega SP2ONG i jest dostępny na jego stronie http://sp2ong.noip.pl/pl/blog/programowy-hotspot-multimode-dv-czesc-ii

 

 

Edycja: 30.06.2021

Generalnie instalacja to poniższe komendy:

wget http://dvswitch.org/buster
sudo chmod +x buster
sudo ./buster
sudo apt-get update


- gdy chcemy mieć DVSwitch SERWER z dashboardem
sudo apt-get install dvswitch-server


- dla klasycznego DVSwitch
sudo apt-get install dvswitch

 

Przykładowy wygląd DVSwitch Serwer z dashboard autorstwa Waldka SP2ONG

 

 

Wydaje mi się że można spokojnie zainstalować samemu na podstawie w/w stron i nie będę powielał opisów. Sam program znajdzie się w okrojonej wersji na wsadzie.

 


Mvoice to program pozwalający na pracę w sieci M17 Network przy użyciu karty dźwiękowej w naszym RaspberryPi.

Więcej o samym projekcie można przeczytać na stronach https://m17project.org/  oraz http://sp2ong.noip.pl/pl/tag:M17

 

Sama instalacja programu opisana jest na stronie https://github.com/n7tae/mvoice

 

 

 

 

 

 

 

 

 

 

 

 

Po uruchmieniu programu należy dokonać konfiguracji poprzez wpisanie własnego ZNAKU oraz wybranie konfiguracji AUDIO

 

Następnie wybrać interesujący nas serwer z listy dostępnych, wybrać MODULE i kliknąć LINK.

 

Połączenie będzie potwierdzone na Dashboard serwera i możemy rozpocząć używanie sieci M17

 

 

Dla przykładu pokazałem połączenie z moim serwerem lecz polskojęzyczni prędzej znajdą korespondentów na poskim reflectorze https://m17.hblink.network/ prowadzonym przez kolegę SP7LAK.

Z pewnością poręczniejsze jest używanie aplikację na telefony android o nazwie DROID-Star - lecz to opis na RPI dlatego warto było to ty opisać.

 


To chyba już koniec całej serii Multi_RoIP która ku memu zaskoczeniu przyjeła się jak ciepłe bułeczki i muszę podziękować za wszystkim za pobranie w sumie ponad 1500 razy całej serii i jednocześnie przeprosić za błędy lecz uczymy się wszyscy.

Jako osoba która rozpoczęła zabawę z Raspberrym Pi w 2019 roku sam się uczę a nauka polega na popełnianiu błędów, niemniej staram się podzielić wiedzą z innymi pomimo swojego niskiego poziomu IT.

Jeśli udało mi się kogokolwiek nakłonić do zabawy na RaspberryPi do jest mi bardzo miło i jest to największa nagroda dla mnie.

 

Opisany w tym artykule powstający wsad na RaspberryPi 4 będzie opublikowany jako Multi-RoIP_v2.0-BETA ponieważ dopiero teraz po zakończeniu podejdę do testowania wszystkich programów i ich poprawności pracy.

 

Mam nadzieję iż jedno zdjęcie pokaże jakie oprogramowanie zostało zainstalowane. W sumie tydzień pracy aby jakos to udokumentować i mam nadzieję że choć w części udało mi się tym artykułem odpowiedzieć na pytania jakie mogą nurtować podczas instalacji.

 

Jak dotarliście do tej części to szacunek dla was :)

 

Pozdrawiam serdercznie

Marcin London "ZEUS"

op. M0IQF / HF4ALL

 

 
© est. 2006 Digit4all_GROUP. Designed By WebKomp

Logowanie