Poniżej opis jak zbudować SVXLink Client na bazie małego komputera Raspberry PI (Zero, ver 3 lub 4).
Używając SVXLink klienta musisz korzystać z podłączonego mikrofonu i głośnika do komputera a zmiany grup
czy inne kody DTMF możesz wprowadzać poprzez dashboard svxlink'a na komputerze w przeglądarce internetowej.
Poniżej przykładowa konstrukcja SVXLink Client z wykorzystaniem Raspberry PI Zero W lub Raspberry PI Zero 2W
Potrzebujesz też kartę dźwiekową na USB (pamiętaj że bedzie potrzebny krótki kabel w wtyczką mikroUSB i gniazdem USB A
aby podłączyć kartę dźwiękową), mikrofon komputerowy lub wykonany własny, głośnik.
Instalacja systemu Raspberry PI OS
Upewnij się, że masz dobrą i niezawodną kartę microSD oraz odpowiednie zasilanie.
Obrazy RAW można zapisywać za pomocą programu Etcher https://www.balena.io/etcher/
(dostępny na wszystkie systemy operacyjne).
Pobierz najnowszą wersję systemu Raspberry PI OS w wersji "Raspberry Pi OS Lite" ze strony
https://www.raspberrypi.org/software/operating-systems/
Zrób dekompresje pobranego pliku ZIP.
Wgraj na kartę microSD obraz przy pomocy programu Etcher.
Patrz więcej na: https://github.com/sm0svx/svxlink/wiki/InstallBinRaspbian
Jeśli będziesz chciał się zalogować do swojego RPI bez podłączenia klawiatury i ekranu przed włożeniem microSD do
Raspberry PI musimy ustawić możliwość zalogowania się via ssh. W tym celu musisz wgrać / utworzyć
pusty plik o nazwie "ssh" /boot. Patrz na opis:
https://mikrokontroler.pl/2020/04/27/jak-skonfigurowac-ssh-w-raspberry-pi-bez-podlaczania-monitora/
Włącz Raspberry PI poprzez kabel sieciowy ethernet do swoje sieci domowej i na routerze domowym który przydziela adresy IP poszukaj
jaki IP adres dostał Twój Raspberry. Użyj programu PUTTY pod MSWidnows (PUTTY to dostępny darmowy SSH Client)
aby zalogować się via SSH do Raspberry
Zaloguj się jako: pi Hasło: raspberry
Zmień hasło na swoje nowe pisząc polecenie
passwd
wprowadź stare hasło i następnie wprowadź nowe.
Przejdz do trybu użytkownika root pisząc polecenie
sudo -s
Ustawiamy na stałe możliwość zalogowania się poprzez SSH pisząc polecenia:
systemctl enable ssh
systemctl start ssh
Możesz ustawić strefę czasową i językowa poprzez konfiguracje:
raspi-config
Po zapisaniu ustawień następnie blokujemy wewnętrzną kartę dźwiękową RPI i ustawiamy kartę dźwiękową USB na index 0
Zrób edycje pliku alsa.conf
nano /etc/modprobe.d/alsa.conf
Wpisz poniższą zawartość:
options snd_usb_audio index=0
options snd slots=snd_usb_audio
Zapisz plik i następnie zrób edycje pliku alsa-blacklist.conf
nano /etc/modprobe.d/alsa-blacklist.conf
Wpisz do pliku:
blacklist snd_bcm2835
Zapisz plik.
Zrób restart systemu i sprawdź poleceniem, czy jest widziana karta dźwiękowa na USB z indexem 0:
cat /proc/asound/cards
Zrób aktualizacje systemu:
sudo apt update
sudo apt upgrade
Instalacja pakietów do kompilacji SVXLink:
--------------------------------------------
sudo apt install -y build-essential git
sudo apt install -y libasound2-dev g++ gcc make cmake groff gzip doxygen tar
sudo apt install -y libspeex-dev libspeexdsp-dev libopus-dev
sudo apt install -y libpopt-dev libsigc++-2.0-dev
sudo apt install -y libasound2-dev libgcrypt20-dev libgsm1-dev
sudo apt install -y librtlsdr-dev libjsoncpp-dev
sudo apt install -y tcl-dev bc lynx gawk curl sudo
sudo apt install -y libcurl4-openssl-dev
sudo apt install -y apache2 php libapache2-mod-php php-mbstring php-cgi php-common php-curl
Utworzenie konta użytkownika svxlink i dodanie group
sudo useradd -c "svxlink user" -G audio,dialout,gpio -d /home/svxlink -m -s /sbin/nologin svxlink
Jeśli komenda useradd nie działa musisz użyć następującej komendy aby dodać użytkownika do systemu
sudo adduser svxlink
oraz sprawdzić czy użytkownik svxlink jest dopisany do grup: dialout i audio w pliku /etc/groups.
Pamiętaj dopisać użytkownika root do grupy audio
audio:x:29:pi,svxlink,root
dialout:x:20:pi,svxlink
jeśli jest grupa gpio to svxlink też powinien być dopisany w podobny sposób jak powyżej w aduio i dialout grupach
Kompilacja i instalacja SVXLINK:
cd /opt
mkdir src
cd src
git clone http://github.com/sm0svx/svxlink.git
mkdir svxlink/src/build
cd svxlink/src/build
cmake -DUSE_QT=NO -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DLOCAL_STATE_DIR=/var ..
make
make install
ldconfig
Kompilacja svxlink na Raspberry Pi Zero może trochę czasu trwać.
Pobierz przykładową konfigurację, dasboard oraz pliki dźwiękowe polskie
Paczka zawiera pliki systemowe z ustawieniami niezbędnymi dla działania dashboard
między innymi dla serwera apache2
Najnowsza wersja jest z dnia 2022-02-01
Uruchom nastepującą komendę aby pobrać cały pakiet:
bash <(curl -s http://kurpie.hblink.network/svxrdb/install-svxc.sh)
Konfiguracja jest przygotowana dla schematu svxlink klienta który jest na początku opisu.
Zrób edycje pliku svxlink.conf i wprowadź zmiany w [ReflectorLogic] oraz w [SimplexLogic]
nano /etc/svxlink/svxlink.conf
W części [SimplexLogic] musisz wpisać swój znak w CALLSIGN= zamiast N0CALL
[SimplexLogic]
TYPE=Simplex
RX=Rx1
TX=Tx1
# Twoj znak
CALLSIGN=N0CALL
oraz jeśli chcesz mieć aktywny EchoLink na swoim komputerze (wymaga rejestracji na echolink.org dla znaku z -L)
i dopisz ModuleEchoLink do wykazu aktywnych modułów w części [SimplexLogic]
MODULES=ModuleParrot,ModuleMetarInfo,ModuleEchoLink
oraz wpisz swoje dane w /etc/svxlink/svxlink.d/ModuleEchoLink
CALLSIGN=MYCALL-L
PASSWORD=MyPass
SYSOPNAME=MyName
LOCATION=[Svx] MyTown
gdzie w CALLSIGN= zamiast MYCALL-L wpisz swój znak z końcówka w nazwie -L oraz w PASSWORD zamiast MyPass musisz
wpisać swoje hasło po zarejestrowaniu sie na EchoLink
Musisz się skontaktować z administratorem SVXReflectora aby otrzymać IP adres / port oraz dane dla Twojego konta
Bez tych danych nie podłączysz się do SVXReflectora swoim svxlink klientem. Otrzymane dane wpisuje się w części
[ReflectorLogic] w pliku konfiguracyjnym svxlink.conf.
[ReflectorLogic]
TYPE=Reflector
# Dane do logowania do SVXReflectora
# otrzymasz je od admina SVXReflectora
# IP adres, port, haslo dla Twojego znau
HOST=127.0.0.1
PORT=5300
CALLSIGN="N0CALL"
AUTH_KEY="My_PASSWORD"
W części [ReflectorLogic] wpisz w DEFAULT_TG numer domyślnej TalkGroup jak będzie na Twoim radio oraz jakie inne dostępne
TalkGroup, które svxlink klient będzie monitorował, wpisz w MONITOR_TGS
# Domyslna Talk Grupa na której nadajesz lub ustaw 0 brak domyslnej TG
DEFAULT_TG=2600
# jakie Talk Group monitorujesz
MONITOR_TGS=260,2600
Zrob restart system w celu aktywowania ustawień GPIO dla svxlink poleceniem:
reboot
Po ponownym zalogowaniu się do systemu uruchom pliki startowe svxlink jako root:
sudo -s
systemctl enable svxlink_gpio_setup.service
systemctl enable svxlink.service
systemctl restart svxlink_gpio_setup
systemctl restart svxlink
systemctl enable apache2.service
systemctl restart apache2.service
Możesz sprawdzić plik /var/log/svxlink gdzie zobaczysz log z uruchomienia svxlink
Ustawienia wstępne karty dźwiękowej. Uruchom program alsamixer:
alsamixer
Naciśnij klawisz F5 , aby wyświetlić wszystkie wejścia i wyjścia .
Używając TAB , strzałka w górę , w dół , w prawo , w lewo do nawigacji oraz
klawisz M lub spacja do włączania / wyłączania.
Zapisz ustawienia poleceniem:
alsactl store
W pliku /etc/rc.local z pobranej wcześniej paczki podczas uruchamiania systemu są odczytywane
ustawienia dla karty dźwiękowej dlatego jeśli wprowadzisz jakieś zmiany w ustawieniach
zawsze je zapisz komendą: alsactl store
Zalecane jest ustawienie audio przy pomocy narzedzia dostępnego z poziomu dashboard:
http://ip_adres_hotspota/audio/
Opis jak skonfigurować narzędzie znajdziesz w /opt/audiotest/opis.txt
PTT SVXLink
===========
Aby używać PTT w SvxLink Klient musisz zbudować prosty układ z 2 oporników i jednego
przełącznika. Przełącznik może być przełączany na stałe lub tylko chwilowo. Przycisk
przełączany na stałe to dobra opcja kiedy RPI włożysz do obudowy i na panelu przednim
możesz zamontować taki przełącznik.
Patrz opis pinów RPI: Opis pinów RPI
Można opcjonalnie używając przełącznika PTT który ma dwie sekcje podłączyć czerwony LED poprzez
opornik 330 omów do 3.3V który będzie informował nas że mamy włączone PTT
MIKROFON
========
Można wykorzystać typowe mikrofony do komputerów lub od radia ręcznego musisz dostosować go do używania
wg schematu podanego powyżej.
Możesz użyć wkładki pojemnościowej ale aby poprawnie działała jako mikrofon z kartą dźwiękową USB
musisz zastosować opornik w zakresie od 1k do 20k który musi być podlutowany wg opisu
który znajdziesz na stronie: https://majsterkowo.pl/dobry-i-glosny-mikrofon-pojemnosciowy-do-komputera-i-laptopa-za-2zl/
W podobny sposób musisz użyć opornika kiedy będziesz używał mikrofonu od radia który ma wkładkę pojemnościową.
Głośniki
========
Ponieważ poziom audia z karty dźwiękowej może być za niski aby komfortowo słuchać na głośniku
podłączonym do karty dźwiękowej możesz spróbować zwiększyć parameter
w /etc/svxlink/svxlink.conf w części [Tx1] MASTER_GAIN= na większe wartości
Lepszym rozwiązaniem jest pozostawić ten parametr na wartość 0 i zastosować
prosty tani wzmacniacz m.cz. PAM8403
Pamiętaj nie podłączaj masy układu do jednego z wyjść głośnika. Wystarczy że podłączysz 2 przewodami jeden głośnik na
dowolne wyjście wzmacniacza oraz podłączysz do zasilania 5V.
Inne modyfikacje
================
Może kotś będzie chciał skorzystać z rozwiązań pokazanych tu:
https://github.com/knologys/svxlink-led-status
SVXLink Dashboard
-----------------------
Paczka, którą pobrałeś z przykładową konfiguracją dla Raspberry PI zawiera pierwszą edycje Dashboard dla SVXLink.
Dashboard został napisany w ciągu jednego "weekendu" i może być niedoskonały.
Co zrobić, jeśli znajdziesz usterkę, problemy lub chcesz zmodyfikować dashboard:
- Podjąć samemu analizę problemu i naprawić / zmodyfikować kod dashboard
- Pogodzić się z niedogodnością i zaakceptować ten fakt
- Użyć innych dostępnych dashboardów dla svxlink: https://github.com/kc1awv/SvxLink-Dashboard
Usuń plik index.html który został wgrany podczas instlacji pakietu apache serwer
rm /var/www/html/index.html
Dostęp do dashboard jest pod adresem IP Twojego Raspberry PI http://ip_adres
Musisz zrobić wstępną konfigurację dashboard. Zrób edycje pliku /var/www/html/include/config.php
Zamiast N0CALL wpisz swój znak oraz wybierz dostęp do SVXReflectora API, do którego jesteś podłączony
aby mieć na dashboard wykaz podłączonych nodów. Wykaz dostępnych adresów API znajdziesz w pliku
/var/www/html/include/config.php
Musisz wpisać znak komentarza // na początku lini
define("URLSVXRAPI", "");
oraz usunąć // przed linią gdzie jest definicja dostępu do Twojego SVXReflectora API
W pliku /var/www/html/include/tgdb.php wpisz numery TalkGroup oraz ich nazwy, jakie będą wyświetlane na
dashboard.
Dashboard pozwala wysłać komendy DTMF do svxlink poprzez podanie pełnego kodu np przełączanie
Talk Group na SVXReflector ma składnie
91xxx# gdzie zamiast xxx należy podać numer TG np 912603# powoduje że nasz svxlink przechodzi
na TG 2603, po 30 sekundach braku aktywność na wybranej TG wraca na domyślna TG (DEFAULT_TG)
Mamy też dostępne zdefiniowane klawisze (patrz plik /var/www/html/inclde/config.php):
TG 260 - przejście na FM Talk Group 260 Ogólnopolska
TG 2602 - możesz zdefinowć swoją loklaną TG w config.php
METAR - aktywowanie raportu pogodowego z lotniska którego kod jest zdefiniowany w pliku
/etc/svxlink/svxlink.d/ModuleMetar.conf w STARTDEFAULT i zamiast EPBY należy wpisać kod
innego lotniska. Nazwy kodów znajdziecie w tym pliku.
PARROT ON - włączenie tzw papugi
PARROT OFF - wyłącznie papugi
POWER OFF - wyłącznie komputera w bezpieczny sposób pozwala uniknąć uszkodzenia systemu.
W celach testowych możesz użyć podłączonego mikrofonu do karty dźwiękowej aby nadawać.
W config.php jest dostępna opcja SHOWPTT i jeśli ustawisz na wartość TRUE (ważne duże litery) na dashboard
będą dostępne dwa klawisze PTT ON i PTT OFF. Jeśli podłączysz mikrofon do karty dźwiękowej będziesz mógł
tymi klawiszami włączyć odbiór Twojego audio z mikrofonu PTT ON lub wyłączyć PTT OFF. Jeśli nie będziesz
używał już mikrofonu podłączonego do karty dźwiękowej ustaw w config.php SHOWPTT na FALSE.
UWAGA:
Jeśli przestały działać dostępne klawisze w dashboard do przełączania TG / PTT ON OFF itp
należy zrobić:
sudo cp /lib/systemd/system/apache2.service /etc/systemd/system/
sudo nano /etc/systemd/system/apache2.service
zmien: PrivateTmp=true
na
PrivateTmp=false
i zrób reboot komputera
----------------------------------------
Automatyczne wyłączanie svxlink miedzy 23:30 a 6:00
W pliku /etc/cron.d/svxlink jest ustawione że program svxlink jest zatrzymywany o 23:30
i następnie o 6:00 ponownie uruchamiany
====================================================================================
Zasilacz do svxlink klienta
Zwróć szczególną uwagę na zasilacz do Orange Pi Zero. Może on powodować że podczas
nadawania Twojej transmisji do sieci svxlink, będzie słychać w tle Twojej transmisji
"buczenie", "warczenie". Użyj dobrego zasilacza lub zrób 2 lub 3 zwoje na ferrycie
typu zapinany na klips na kablu zasilającym do Orange Pi Zero.