Poniżej opis jak zbudować hotspot FM na bazie małego komputera Orange PI Zero i modułu radiowego SA818.
Moduł radiowy SA818 jest dostępny w 2 wersjach VHF i UHF. Opinie o tym module są różne i najwięcej
uwag jest co do czułości odbiornika. Ale w sytuacji kiedy budujemy hotspot FM do domowych celów
słaba czułość odbiornika może nie przeszkadzać. Być może warto rozważyć zakup taniego BaoFeng UV-3R
i wykorzystać go jako radio do naszego hotspota. Zdjęcie jak pobrać sygnał SQL dla UV-3R znajdziecie
na stronie: https://f5nlg.wordpress.com/2018/01/01/modification-des-tx-ctcss-et-det-squelch/
Innym ciekawym tanim radiem jest BaoFeng BF-T1 (ok 80 zl na Allegro) opis modyfikacji i jak pobrać
linie COS/SQL znajdziecie na tych stronach:
https://f5nlg.wordpress.com/2018/01/01/modification-des-tx-ctcss-et-det-squelch/
http://ddfrnrep.ddnss.de/baofeng_bf-t1___bf-9100_modifi.HTM
Inne radio w cenie 50 zł za sztukę można użyć BF-888s a opis modyfikacji jak wyprowadzić sygnały
audio i COS znajdziecie tu: https://hamvoip.org/hamradio/baofeng888/
Hotspot w odróżnieniu od "SVXLink klient" który składa się tylko z komputera, karty dźwiękowej oraz głośnika i mikrofonu)
posiada TRX tzn urządzenie nadawczo-odbiorcze (np SA818 itp). Jakie są zalety hotspota w stosunku do prostego "SVXLink klienta:
- może pracować poprzez hotspot używając swojego radia przenośnego a więc możesz swobodnie
przemieszczać po obszarze zasięgu swojego hotspota (do 5 km w zależności od anteny)
- używając radia w samochodzie będąc w zasięgu swojego hotspota możesz prowadzić łączności
- możesz ze swojego radia przełączać grupy za pomocą DTMF lub CTCSS.
- możesz przy pomocy radia kodem DTMF odsłuchać raport pogody METAR
- możesz przy pomocy radia kodem DTMF połączyć się z dowolnym nodem EchoLink
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.
Instalacja systemu ArmBian
------------------------------
Upewnij się, że masz dobrą i niezawodną kartę microSD oraz odpowiednie zasilanie. Archiwa można
dekompresować za pomocą 7-Zip w systemie Windows, w systemie Linux (apt-get install p7zip-full).
Obrazy RAW można zapisywać za pomocą programu Etcher https://www.balena.io/etcher/ (dostępny na
wszystkie systemy operacyjne). Obrazy skompresowane za pomocą .xz, możesz zapisać je bezpośrednio
na karcie SD za pomocą programu Etcher.
Pobierz najnowszą wersję systemu Armbian BUSTER https://www.armbian.com/orange-pi-zero/
Wgraj na kartę microSD obraz przy pomocy programu Etcher.
Włącz OrangePi Zero do swoje sieci domowej i na routerze domowym, który przydziela adresy IP poszukaj
jaki IP adres dostał Twój OrangePI. Użyj programu PUTTY pod MSWidnows (PUTTY to dostępny darmowy SSH Client)
aby zalogować się via SSH do OrangePi Zero
Zaloguj się jako: root Hasło: 1234
Następnie zostaniesz poproszony o zmianę tego hasła
Po zakończeniu zostaniesz poproszony o utworzenie normalnego konta użytkownika.
Zaloguj się do systemu jako użytkownik root
Zrób edycje pliku armbianEnv.txt
nano /boot/armbianEnv.txt
Dopisz w nim analog-codec uart1 uart2 w linii overlays:
overlays=analog-codec uart1 uart2 usbhost2 usbhost3
Zrób restart systemu i sprawdź poleceniem, czy jest widziana wbudowana karta dźwiękowa:
cat /proc/asound/cards
powinieneś zobaczyć wynik:
0 [Codec ]: H3_Audio_Codec - H3 Audio Codec
H3 Audio Codec
Możesz zmienić ustawienia lokalne czas/język używany itp uruchamiając
armbian-config
W armbian-config wejdz w SYSTEM → CPU i ustawa zarządzanie CPU, które pozwoli utrzymać niską temperaturę CPU:
MIN_SPEED=480000
MAX_SPEED=816000
GOVERNOR=powersave
Zapisz ustawienia
Zrób aktualizacje systemu:
apt update
apt upgrade
Możesz jeśli chcesz skonfigurować sieci WIFI przy pomocy tekstowego GUI poleceniem
nmtui
zobacz więcej: https://sbc-community.org/docs/general_guides/connect_to_wifi/
Instalacja pakietu OrangePI.GPIO
cd /opt
apt-get update
apt-get install python-dev git
git clone https://github.com/Jeremie-C/OrangePi.GPIO
cd OrangePi.GPIO
python setup.py install
Instalacja pakietów do kompilacji SVXLink:
---------------------------------------------
apt install -y mc g++ cmake make libsigc++-2.0-dev libgsm1-dev libpopt-dev tcl-dev
apt install -y libgcrypt20-dev libspeex-dev libasound2-dev libopus-dev librtlsdr-dev
apt install -y doxygen groff alsa-utils vorbis-tools curl libcurl4-openssl-dev
apt install -y git bc curl rtl-sdr libcurl4-openssl-dev cmake libjsoncpp-dev
apt install -y lynx gawk node-ws nodejs apache2 php php-cgi php-curl libapache2-mod-php php-mbstring php-common
Utworzenie konta użytkownika svxlink i dodanie group
useradd -rG audio,daemon,dialout svxlink
Kompilacja i instalacja:
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=OFF -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DLOCAL_STATE_DIR=/var ..
make
make install
ldconfig
Pobierz przykładową konfiguracją, dashboard oraz pliki dźwiękowe polskie
Paczka zawiera pliki systemowe z ustawieniami niezbednymi 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-ozpi.sh)
Konfiguracja RX i TX jest przygotowana dla schematu hotspota:
http://kurpie.hblink.network/svxrdb/OrangePiZero-Hotspot.pdf
http://kurpie.hblink.network/svxrdb/ozpi-anyradio.pdf
Zrób edycje pliku svxlink.conf i wprowadź zmiany w [RefLogic] 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 hotspot (wymaga rejestracji na echolink.org dla znaku z -L)
i dopisz ModuleEchoLink do wykazu aktywnych modułów w cześ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] Fq, 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 zarejetrowaniu sie na EchoLink
Pamietaj aby ustawić w pliku /etc/svxlink/svxlink.d/ModuleEchoLink.conf
MUTE_LOGIC_LINKING=1
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 Hotspotem FM. 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 hotspot będzie monitorował, wpisz w MONITOR_TGS
# Domyslna Talk Grupa na której nadajesz, możesz ustawić 0 brak domyślnek TG
DEFAULT_TG=9
# jakie Talk Group monitorujesz
MONITOR_TGS=260,2600
Zrób restart system w celu aktywowania ustawień GPIO dla svxlink poleceniem
reboot
Po ponownym zalogowaniu się do systyemu uruchom pliki startowe svxlink:
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 dla radia SA818.
W przypadku innego radia np SA828 itp należy dobrać indywidualnie poziomy audio dla danego radia
Uruchom program alsamixer:
alsamixer
Naciśnij klawisz F3 , aby wyświetlić opcje 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.
Ustaw wstępnie wg poniższego obrazka poziomy
Wyłącz wszystkie inne ustawienia lub ustaw je na 0.
Następnie naciśnij klaiwsz F4 aby wyświetlić opcje wejścia i ustaw wg poniższego obrazka
Wyłącz wszystkie inne ustawienia lub ustaw je na 0.
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
Programowanie modułu SA818
-------------------------------
Instalacja pakietu pyserial wymaganego do programowania SA818
apt install python-pip
pip2 install pyserial
Moduł SA818 wg schematu ROLink używa portu /dev/ttyS1
musisz użyć programu do programowania '/opt/sa818/sa818-prg1'
Moduł SA818 wg schematu SPOTNIK używa portu /dev/ttyS2
musisz użyć programu '/opt/sa818/sa818-prg2'
Aby zaprogramować SA818 dla wersji płytki wg SPOTNIK uruchamiamy program:
/opt/sa818/sa818-prg2
gdzie przy wyborze modelu należy wybrać MODEL SA818 (opcje 3)
Program po wyborze modelu pyta o parametry ustawień modułu SA818 i na koniec
wyswietla w podsumowaniu ustawienia i po zatwierdzeniu ich wysyła je do modułu SA818
Ustaw poziom "squelch" na 2 a "volume" na 8 oraz "no" dla PreEmphasis, High Pass, Low Pass
Channel Spacing wybierz "Wide"
Staraj sie nie aktywować (yes) Low i High Pass filter w SA818 bo moga spowodować że nie bedzie poprawnie
dekodowł CTCSS i być może DTMF svxlink.
Zalecane QRG dla hotspota w MHz:
430.025
430.050
432.800
432.825
432.850
432.875
145.2125
145.225
145.2375
145.250
145.275
145.2875
Przykładowe ustawienia bez uzywania CTCSS:
------------------------------------------------------
Channel Spacing: 1
Tx Frequency: 432.8250
Rx Frequency: 432.8250
Tx CTCSS code: 0000
Rx CTCSS code: 0000
Squelch Value: 2
Volume Value: 8
PreEmphasis Enabled: n
High Pass Enabled: n
Low Pass Enabled: n
------------------------------------------------------
Ustaw w [Rx1] w svxlink.conf DEEMPHASIS=1
Wybierz QRG zgodnie z Bandplan dla 70cm
Instalacja innego oprogramowania do programowania SA818 które pozwala ustawiać indywidulanie
parametry SA818
apt install python3-pip
pip3 install sa818
Wykaz dostępnych opcji podczas programowania uruchom polecenie:
sa818 -h
Patrz na przykłady poniżej i na https://github.com/0x9900/SA818
Ustawienie QRG i poziom blokady szumow (pamietaj że schemat SPOTNIK używa /dev/ttyS2 a ROLink używa /dev/ttyS1
więc musisz podać poprawną nazwę portu serial do którego jest podłączony moduł SA818)
sa818 --port /dev/ttyS2 radio --frequency 432.825 --squelch 4
Ustawienie SA818 poiomu audio z głosnika:
sa818 --port /dev/ttyS2 volume --level 8
Ustawienia filtrów (disable)
sa818 --port /dev/ttyS2 filters --emphasis yes --highpass yes --lowpass yes
Ustaw w [Rx1] w svxlink.conf DEEMPHASIS=1
warto wykonać test jakości naszego audio wchodzącego do sieci dla takich ustawień
SVXLink Dashboard
----------------------
Paczka którą pobrałeś z przykładową konfiguracją dla OrangePI Zero hotspot-fm.tgz 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
Dostęp do dashboard jest pod adresem IP Twojego OrangePI Zero 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
Jeśli używasz OZPI w wersji LTS należy w config.php ustawić CPU_TEMP_OFFSET wartość 30
aby dashboard pokazywał poprawnie temperature CPU.
W pliku /var/wwww/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 /var/www/html/include/config.php):
TG 260 - przejście na FM Talk Group 260 Ogólnopolska
TG 2602 - możesz ustawić własna lokalna 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. Aby klawisz
zadziałał musisz w pliku /etc/sudoers wpisać linie:
svxlink ALL=(ALL) NOPASSWD: /usr/sbin/poweroff
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 dzwię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łączoneg do karty dźwiękowej ustaw w config.php SHOWPTT na FALSE.
Jeśli przestały działać dostępne klawisze w dashboard do przełaczania 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
----------------------------------------
Autoamtyczne 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 hotspota
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" jest to efekt mieszania się w.cz. z kablem Twojego zasilacza
i w efekcie nanosi się na odbiornik SA818. 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. Poczytaj o tym problemie w tym wątku (2 strony):
https://groups.io/g/SHARI/topic/hum_buzz_on_signal/73406860?p=Created%2C%2C%2C20%2C2%2C20%2C0&jump=1