Pistar+SvxLink_2025 - dual mode hotspot

Drukuj

Koncept PiStar+SvxLink zaczął się już w 2020 roku i jakoś nigdy nie doczekał się nakładki HAT analogowej. Zawsze to były radia ręczne podłączane poprzez CM108 FOB. 

Po doświadczeniach z SvxPi_HS + GPS tracker podczas wycieczki do Polski, refleksja byłą taka że czas zrobić coś trochę bardziej komfortowego w użytkowaniu, coś co bardziej będzie hotspot'em pod względem gabarytów także. Wrócił jak bumerang koncept z 2021 roku Pistar + svxlink i chyba jako wisienka na torcie zabawy z SvxLink to będzie to. 

Założenie jest proste, RaspbberryPi 3A+ do tego moduł MMDVM dla emisji cyfrowych, dodać kartę dźwiękową HAT Respeaker2 - u jej spodu zamontować moduł radiowy SA818S-CE lub pochodny z mocą 100-500mW i mam hotspota analogowo cyfrowego + do tego GPS

Obecnie jestem na etapie zbierania informacji i robienia listy zakupowej ale programowo już wszystko jest i działa. Zdjęcie poglądowe i zawiera stare podzespoły szarpnięte latami eksperymentów.

Inspiracją do budowy tego jest chęć zbudowania TAŃSZEGO clona RF GURU czy DJSpot które kosztują w okolicach ponad 150 euro ( 650 Polskich Złotych ) - według wstępnych szacunków mój klon wyniesie mnie połowę tej ceny i będzie nie tylko hotspotem analogowym FM, ale dzięki MMDVM także digi. Czyli reasumując będzie to połączenie PiStar hotspot z RF Guru hotspot + GPS APRS-IS tracker - a to wszystko za około 300 PLN. - przy cenach kup teraz i nie u chińczyka. Wiadomo że jak się poszuka okazji na Aliexpress to i może ze 50PLN się urwie z ceny. Ale nie cena jest tu najwazniejsza a sam fakt zabawy i auto-edukacji i rozwoju. 

 

Projekt ten nie jest ukierunkowany na produkcję kolejnego obrazu dla RaspberryPi, ale nie wykluczone że będzie jakaś BETA wersja dostępna. Głównym moim celem będzie podzielenie się tu krok po kroku procesem "produkcji", i postaram się to zrobić na tyle dokładnie jak potrafię aby było komuś łatwiej to odwzorować. Na zasadach nauka poprzez zabawę. 

 

Projekt ten jest ukierunkowany na konkretne zapotrzebowanie, czyli instalacja w bagażniku auta z możliwością podłączenia zewnętrznych anten dla MMDVM, Analog i GPS. ( Ale rozwiązanie ma być na tyle małe aby spokojnie umieścić je w kieszeni plecaka wraz z powerbank. ) 

- Projekt ten ma zachować jak najwięcej oryginału PiStar jeśli chodzi o obsługę MMDVM.

- Projekt ten ma pozwalać na pełną kontrolę nad SVXLink poprzez kody DTMF , dzieki SvxLink-menu ( głównie mowa tu o restartowaniu svxlink lub całego hotspot, możliwość przepinania się pomiędzy 4 różnych reflektorami SVX, i wiele innych ... ) 

- Projekt ten będzie podłączony na stałe do własnego niezależnego zasilania które będzie doładowywane podczas pracy  samochodu - instalacja zasilania to osobne zagadnienie ponieważ będzie ona częscią innego projektu opartego o radio HF w aucie

- Projekt ten ma być zoptymalizowany pod kątem współpracy w wieloma sieciami WiFi  -  naprzemiennie "dom" mobilny "hotspot" z telefonu czy przykładowo "praca".

- Projekt ten ma posiadać GPS w celu realizacji usługi APRS-IS tracker , ale ma być uruchamiany na prośbę operatora. 

- Projekt ten w rozszerzonej wersji ma być z pewnością w analogu wyposażony w drugi moduł radiowy i robić za mini-przemiennik ( prawdopodobnie cross-band ) - wszystko zależy od tego jak będą się zachowywały moduły radiowe. 

 

 To chyba tyle jeśli chodzi o postawione cele - zobaczymy co z nich uda się zrealizować - tym bardziej że to nie jest nic odkrywczego i nowatorskiego , to będzie konsolidacja własnych konceptów i zapożyczeń z innych projektów. 

 

Hardware

 

Moduł MMDVM

 

Moduł ReSpeaker 2mic 

 

 

Aby poprawnie przygotować bazową i startową platformę trzeba "rozrysować" sobie zajętość GPIO przez poszczególne moduły.  Z połączenia MMDVM i ReSpeaker wynika przykładowo że GPIO20 i GPIO21 są w kolizji.

 

Na szczęście GPIO21 i 20 w PiStar są używane do resetowania nakładki MMDVM i da się bez tego żyć, wystarczy podczas planowania połączeń GPIO nie uwzględnić tych 2 pinów, i po instalacji sterowników do ReSpeaker nadal MMDVM działa normalnie.

#!/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"
...

 

Przygotowanie systemu

Jeśli mowa o przygotowaniu systemu to głównie polega to na instalacji oryginalnego PiStar którego można pobrać z oficjalnej strony. 

Ja wybrałem najnowszą opcję  

 

Wgranie na kartę SD i pierwsze uruchomienie. Nadal postępujemy jak z oryginałem i konfigurujemy dokładnie z wytycznymi PiStar

 

 

 

Po uruchomieniu PiStar dokonujemy normalnej konfiguracji tak jakbyśmy normalnie konfigurowali klasyczny PiStar.

 

Po wykonaniu testów że MMDVM działa nam normalnie i możemy wykonać łączność  możemy przejść do instalacji karty ReSpeaker 2mic.  Działający sterowniki od niej podesłał mi kolega SP6ML i można zainstalować według strony https://github.com/ubopod/WM8960-Audio-HAT/

 

Po instalacji sterowników poprzez po wydaniu komendy aplay -l powinniśmy zobaczyć

 

 

Instalacja SvxLink

 

W terminalu najpierw wydajemy komendy aktualizacji systemu 

sudo apt update 
sudo apt upgrade -y

Następnie instalujemy niezbędne "zależności" programy niezbędne do prawidłowej kompilacji svxlink.

sudo apt install -y build-essential git alsa-utils mc
sudo apt install -y libasound2-dev g++ gcc make cmake groff gzip doxygen tar tcl
sudo apt install -y libspeex-dev libspeexdsp-dev libopus-dev libvorbis-dev
sudo apt install -y libpopt-dev libsigc++-2.0-dev python3-dev python3-pip
sudo apt install -y libgcrypt20-dev libgsm1-dev swh-plugins tap-plugins ladspa-sdk
sudo apt install -y librtlsdr-dev libjsoncpp-dev nodejs node-ws dos2unix
sudo apt install -y bc tcl-dev libgpiod2 libgpiod-dev gpiod gawk lynx curl rtl-sdr
sudo apt install -y libcurl4-openssl-dev curl libjson-perl libwww-perl net-tools sqlite3
sudo apt install -y sox libsox-dev curl python3 python3-dev python3-numpy python3-pip python3-suds
sudo apt install -y libssl-dev

 

Kolejnym krokiem jest utworzenie użytkownika svxlink ponieważ jest on wymagany do instalacji. W późniejszym etapie możecie sobie sami zmienić ustawienia, lecz na etapie instalacji taki użytkownik powinien być istniejący.

W przypadku RaspberryPi komenda jest taka: 

sudo /usr/sbin/useradd -c "svxlink user" -G audio,dialout,daemon,plugdev,gpio -d /home/svxlink -m -s /sbin/nologin svxlink

 

Można powiedzieć że jeśli wszystkie wymienione kroki zakończyły się sukcesem i nie wystąpiły jakieś problemy z  ich instalacją to możemy przejść do instalacji samego svxlink. 

 

Oto spis komend prowadzących nas przez proces pobrania, kompilacji i instalacji svxlink / svxreflector

sudo -s
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 -DCMAKE_BUILD_TYPE=Release ..
make
make install
/usr/sbin/ldconfig

Praktycznie proces instalacji został zakończony i pliki konfiguracyjny jest dostępny pod  /etc/svxlink/svxlink.conf .

 

 Pierwsze uruchomienie svxlink

 Do pierwszego uruchomienia i testu konieczny jest poprawny plik konfiguracyjny który każdy niestety musi przygotować sobie samemu. Zaprezentuje na szybko przygotowany plik oryginalny po instalacji zmodyfikowany tak aby uruchomić się na Naszym serwerze SVX ( oczywiście dane logowania warto sobie zmienić na własne - przy zachowaniu bezpieczeństwa i nie testować na grupach TG innych niż testowe )  

Przedstawiony poniżej plik zawiera konfigurację dla karty dźwiękowej ReSpeaker oraz zaprogramowany przycisk jako na niej się znajduje jako Rx1 squelch - z naszego punktu widzenia wciśniecie go pozwala nadawać w kierunku reflektora.

 

Przykładowa konfiguracja, która w przyszłości zostanie mocno okrojona do opcji realnie potrzebnych w tym projekcie. 

###############################################################################
#                                                                             #
#                Configuration file for the SvxLink server                    #
#                                                                             #
###############################################################################

[GLOBAL]
#MODULE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink
LOGIC_CORE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink
LOGICS=SimplexLogic,ReflectorLogic
CFG_DIR=svxlink.d
TIMESTAMP_FORMAT="%c"
CARD_SAMPLE_RATE=48000
#CARD_CHANNELS=1
#LOCATION_INFO=LocationInfo
LINKS=LinkToR4

[SimplexLogic]
TYPE=Simplex
RX=Rx1
TX=Tx1
MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleFrn
CALLSIGN=MYCALL
SHORT_IDENT_INTERVAL=60
LONG_IDENT_INTERVAL=60
#IDENT_ONLY_AFTER_TX=4
#EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=en_US
RGR_SOUND_DELAY=0
#RGR_SOUND_ALWAYS=0
REPORT_CTCSS=136.5
#TX_CTCSS=ALWAYS
#MACRO_PREFIX=D
MACROS=Macros
FX_GAIN_NORMAL=0
FX_GAIN_LOW=-12
#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink
#QSO_RECORDER=8:QsoRecorder
#ONLINE_CMD=998877
#ONLINE=1
#MUTE_RX_ON_TX=1
#MUTE_TX_ON_RX=1
#STATE_PTY=/var/run/svxlink/state
#DTMF_CTRL_PTY=/dev/shm/simplex_dtmf_ctrl
#CTCSS_TO_TG=77.0:999,123.0:9990,146.2:9992
CTCSS_TO_TG_DELAY=1000


[ReflectorLogic]
TYPE=ReflectorV2
#DNS_DOMAIN=example.com
HOSTS=d4a.uk
HOST_PORT=5300
#HOST_PRIO=100
#HOST_PRIO_INC=1
#HOST_WEIGHT=10
CALLSIGN="M0IQF-N8"
#CERT_PKI_DIR="/var/lib/svxlink/pki"
#CERT_KEYFILE=/var/lib/svxlink/pki/MYCALL.key
#CERT_CSRFILE=/var/lib/svxlink/pki/MYCALL.csr
#CERT_CRTFILE=/var/lib/svxlink/pki/MYCALL.crt
#CERT_CAFILE=/var/lib/svxlink/pki/ca-bundle.pem
#CERT_DOWNLOAD_CA_BUNDLE=1
#CERT_SUBJ_givenName=John
#CERT_SUBJ_surname=Doe
#CERT_SUBJ_organizationalUnitName=SvxLink
#CERT_SUBJ_organizationName=SSA
#CERT_SUBJ_localityName=Stockholm
#CERT_SUBJ_stateOrProvinceName=Södermanland
#CERT_SUBJ_countryName=SE
#CERT_EMAIL=Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.
AUTH_KEY="SVX-passw0rd"
#JITTER_BUFFER_DELAY=0
DEFAULT_TG=999
MONITOR_TGS=999
TG_SELECT_TIMEOUT=30
#TG_SELECT_INHIBIT_TIMEOUT=0
ANNOUNCE_REMOTE_MIN_INTERVAL=300
#EVENT_HANDLER=/usr/share/svxlink/events.tcl
#NODE_INFO_FILE=/etc/svxlink/node_info.json
#MUTE_FIRST_TX_LOC=1
#MUTE_FIRST_TX_REM=1
#TMP_MONITOR_TIMEOUT=3600
#UDP_HEARTBEAT_INTERVAL=15
QSY_PENDING_TIMEOUT=15
#DEFAULT_LANG=en_US
#VERBOSE=1

[LinkToR4]
CONNECT_LOGICS=SimplexLogic:9:SVX,ReflectorLogic
DEFAULT_ACTIVE=1
TIMEOUT=0
#ACTIVATE_ON_ACTIVITY=RepeaterLogic
#ACTIVATE_ON_TG=RepeaterLogic:1,SimplexLogic:1

[Macros]
1=EchoLink:9999#
9=Parrot:0123456789#
03400=EchoLink:9999#

[QsoRecorder]
REC_DIR=/var/spool/svxlink/qso_recorder
#MIN_TIME=1000
MAX_TIME=3600
SOFT_TIME=300
MAX_DIRSIZE=1024
#DEFAULT_ACTIVE=1
#TIMEOUT=300
#QSO_TIMEOUT=300
#ENCODER_CMD=/usr/bin/oggenc -Q \"%f\" && rm \"%f\"

[Voter]
TYPE=Voter
RECEIVERS=Rx1,Rx2,Rx3
VOTING_DELAY=200
BUFFER_LENGTH=0
#REVOTE_INTERVAL=1000
#HYSTERESIS=50
#SQL_CLOSE_REVOTE_DELAY=500
#RX_SWITCH_DELAY=500
#COMMAND_PTY=/dev/shm/voter_ctrl
#VERBOSE=1

[MultiTx]
TYPE=Multi
TRANSMITTERS=Tx1,Tx2,Tx3

[NetRx]
TYPE=Net
HOST=remote.rx.host
TCP_PORT=5210
#LOG_DISCONNECTS_ONCE=0
AUTH_KEY="Change this key now!"
CODEC=S16
#SPEEX_ENC_FRAMES_PER_PACKET=4
#SPEEX_ENC_QUALITY=4
#SPEEX_ENC_BITRATE=15000
#SPEEX_ENC_COMPLEXITY=2
#SPEEX_ENC_VBR=0
#SPEEX_ENC_VBR_QUALITY=4
#SPEEX_ENC_ABR=15000
#SPEEX_DEC_ENHANCER=1
#OPUS_ENC_FRAME_SIZE=20
#OPUS_ENC_COMPLEXITY=10
#OPUS_ENC_BITRATE=20000
#OPUS_ENC_VBR=1

[NetTx]
TYPE=Net
#TX_ID=T
HOST=remote.tx.host
TCP_PORT=5210
#LOG_DISCONNECTS_ONCE=0
AUTH_KEY="Change this key now!"
CODEC=S16
#SPEEX_ENC_FRAMES_PER_PACKET=4
#SPEEX_ENC_QUALITY=4
#SPEEX_ENC_BITRATE=15000
#SPEEX_ENC_COMPLEXITY=2
#SPEEX_ENC_VBR=0
#SPEEX_ENC_VBR_QUALITY=4
#SPEEX_ENC_ABR=15000
#SPEEX_DEC_ENHANCER=1
#OPUS_ENC_FRAME_SIZE=20
#OPUS_ENC_COMPLEXITY=10
#OPUS_ENC_BITRATE=20000
#OPUS_ENC_VBR=1

[Rx1]
TYPE=Local
#RX_ID=?
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
#AUDIO_DEV_KEEP_OPEN=0
LIMITER_THRESH=-6
SQL_DET=GPIOD
SQL_START_DELAY=0
SQL_DELAY=0
SQL_HANGTIME=500
#SQL_EXTENDED_HANGTIME=1000
#SQL_EXTENDED_HANGTIME_THRESH=15
#SQL_TIMEOUT=600
#VOX_FILTER_DEPTH=20
#VOX_THRESH=1000
#CTCSS_MODE=2
#CTCSS_FQ=136.5
#CTCSS_SNR_OFFSET=0
#CTCSS_SNR_OFFSETS=88.5:-1.0,136.5:-0.5
#CTCSS_OPEN_THRESH=15
#CTCSS_CLOSE_THRESH=9
#CTCSS_BPF_LOW=60
#CTCSS_BPF_HIGH=270
#CTCSS_EMIT_TONE_DETECTED=0
#SERIAL_PORT=/dev/ttyS0
#SERIAL_PIN=CTS
#SERIAL_SET_PINS=DTR!RTS
#EVDEV_DEVNAME=/dev/input/by-id/usb-SYNIC_SYNIC_Wireless_Audio-event-if03
#EVDEV_OPEN=1,163,1
#EVDEV_CLOSE=1,163,0
#GPIO_PATH=/sys/class/gpio
#GPIO_SQL_PIN=gpio30
SQL_GPIOD_CHIP=gpiochip0
SQL_GPIOD_LINE=!17
#SQL_GPIOD_BIAS=PULLDOWN
#PTY_PATH=/tmp/rx1_sql
#HID_DEVICE=/dev/hidraw3
#HID_SQL_PIN=VOL_UP
#SIGLEV_DET=TONE
SIGLEV_SLOPE=1
SIGLEV_OFFSET=0
#SIGLEV_BOGUS_THRESH=120
#TONE_SIGLEV_MAP=100,84,60,50,37,32,28,23,19,8
SQL_SIGLEV_OPEN_THRESH=30
SQL_SIGLEV_CLOSE_THRESH=10
DEEMPHASIS=0
#SQL_TAIL_ELIM=300
#PREAMP=6
PEAK_METER=1
DTMF_DEC_TYPE=INTERNAL
DTMF_MUTING=1
DTMF_HANGTIME=40
DTMF_SERIAL=/dev/ttyS0
#DTMF_PTY=/tmp/rx1_dtmf
#DTMF_MAX_FWD_TWIST=8
#DTMF_MAX_REV_TWIST=4
#1750_MUTING=1
#SEL5_DEC_TYPE=INTERNAL
#SEL5_TYPE=ZVEI1
#FQ=433475000
#MODULATION=FM
#WBRX=WbRx1
#OB_AFSK_ENABLE=0
#OB_AFSK_VOICE_GAIN=6
#IB_AFSK_ENABLE=0
#LADSPA_PLUGINS=hpf:1000,@Rx1_Compressor

[Rx1_Compressor]
#LABEL=tap_dynamics_m
#Attack=4
#Release=500
#Offset Gain=15
#Makeup Gain=15
#Function=13

[WbRx1]
#TYPE=RtlUsb
#DEV_MATCH=0
#HOST=localhost
#PORT=1234
#CENTER_FQ=435075000
#FQ_CORR=0
#GAIN=0
#PEAK_METER=1
#SAMPLE_RATE=960000

[Tx1]
TYPE=Local
TX_ID=T
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
#AUDIO_DEV_KEEP_OPEN=0
LIMITER_THRESH=-6
PTT_TYPE=NONE
PTT_PORT=/dev/ttyS0
PTT_PIN=DTRRTS
#HID_DEVICE=/dev/hidraw3
#HID_PTT_PIN=GPIO3
#SERIAL_SET_PINS=DTR!RTS
#GPIO_PATH=/sys/class/gpio
#PTT_GPIOD_CHIP=gpiochip0
#PTT_GPIOD_LINE=17
#PTT_HANGTIME=1000
#TIMEOUT=300
TX_DELAY=500
#CTCSS_FQ=136.5
#CTCSS_LEVEL=-24
PREEMPHASIS=0
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
#MASTER_GAIN=0.0
#OB_AFSK_ENABLE=0
#OB_AFSK_VOICE_GAIN=-6
#OB_AFSK_LEVEL=-12
#OB_AFSK_TX_DELAY=100
#IB_AFSK_ENABLE=0
#IB_AFSK_LEVEL=-6
#IB_AFSK_TX_DELAY=100
#LADSPA_PLUGINS=hpf:1000,@Tx1_Compressor

[Tx1_Compressor]
#LABEL=tap_dynamics_m
#Attack=4
#Release=500
#Offset Gain=15
#Makeup Gain=15
#Function=13

[LocationInfo]
CALLSIGN=OBJECT_NAME
#SOURCE_CALLSIGN=MYCALL-1
#LOGIN_CALLSIGN=MYCALL-XX
APRS_SERVER_LIST=rotate.aprs2.net:14580
#STATUS_SERVER_LIST=aprs.echolink.org:5199
#FILTER=m/10
#SYMBOL=/r
#LON_POSITION=12.10.00E
#LAT_POSITION=51.10.00N
#FREQUENCY=438.875
#FREQUENCY_SEPARATOR="/"
#TX_OFFSET=-600
#NARROW=1
#TX_POWER=8
#ANTENNA_GAIN=6
#ANTENNA_HEIGHT=20m
#ANTENNA_DIR=-1
#PATH=TCPIP*
#BEACON_INTERVAL=10
#STATISTICS_INTERVAL=10
#STATISTICS_LOGIC=SimplexLogic
#TONE=136.5
#COMMENT=SvxLink Node
#PTY_PATH=/dev/shm/aprs_pty
#DEBUG=0

 

Możemy przetestować jak uruchamia się SvxLink wydając w terminalu komendę svxlink 

 

Jak widać uruchomił się i reaguje na wciśnięcie przycisku poprzez raport Rx1: The squelch is OPEN / CLOSED   - jedyny błąd jaki widać podczas uruchamiania to brak poprawnych danych w konfiguracji EchoLink.

Oczywiście obecna konfiguracja i uruchomienie nie przewiduje podłączonego modułu radiowego ( o tym będzie dalej ) , uruchamiamy i testujemy kartę audio z wbudowanym mikrofonem i opcją podłączenia głośnika/słuchawek

 

Teraz możemy przejść do utworzenia pliku startowego, i będzie to bardzo skrótowa instrukcja utworzenia 2 niezbędnych plików które pozwolą na auto-uruchamianie lub uruchamianie komenda systemctl start svxlink

 

Komenda  sudo nano /lib/systemd/system/svxlink.service i wklejamy zawartość.  PROSZĘ SIĘ UPEWNIĆ ŻE PISTAR JEST W TRYBIE ZAPISU KARTY SD. Widać to w terminalu w postaci nagłówka root@pi-star(rw), tryb tylko do odczytu jest pokazywany jako root@pi-star(ro)

[Unit]
Description=SvxLink repeater control software
Documentation=man:svxlink(1)
After=network.target remote-fs.target syslog.target time.target
After=rc-local.service sound.target

[Service]
EnvironmentFile=/etc/default/svxlink
PIDFile=${PIDFILE}
ExecStartPre=-/bin/touch ${LOGFILE}
ExecStartPre=-/bin/chown ${RUNASUSER} ${LOGFILE}
ExecStart=/usr/bin/svxlink --logfile=${LOGFILE} --config=${CFGFILE} --pidfile=${PIDFILE} --runasuser=${RUNASUSER}
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
TimeoutStartSec=60
TimeoutStopSec=10
#WatchdogSec=@SVX_WatchdogSec@
#NotifyAccess=main
LimitCORE=infinity
WorkingDirectory=/etc/svxlink

[Install]
WantedBy=multi-user.target

Następnie komenda sudo nano /etc/default/svxlink i wklejamy 

#
# This file copy to /etc/defualt/

#
# Enable Alsa zerofill if set to 1 (see manual page)
#ASYNC_AUDIO_ALSA_ZEROFILL=0

############################################################################
#
# Configuration file for the SvxLink Systemd unit file
#
#############################################################################

# The user to run the SvxLink server as
RUNASUSER=svxlink

# Specify which configuration file to use
CFGFILE=/etc/svxlink/svxlink.conf

# Where to place the log file
LOGFILE=/var/log/svxlink

# Where to place the PID file
PIDFILE=/run/svxlink.pid

# Enable Alsa zerofill if set to 1 (see manual page)
#ASYNC_AUDIO_ALSA_ZEROFILL=0

 

Od tego momentu możemy wydawać komendy sudo systemctl status svxlink,  sudo systemctl start svxlink, sudo systemctl restart svxlink , sudo systemctl stop svxlink 

 

I tu się  obecnie zatrzymamy jeśli chodzi o SvxLink - zakładając że uruchamia się poprawnie, reaguje na przycisk PTT, można przy użyciu wbudowanego mikrofonu i słuchawek lub głośnika przeprowadzić łączność na zasadach NetworkRadio. Do dalszej konfiguracji wrócimy po podłączeniu modułu radiowego

 

 

Dashboard SvxLink

Obecnie jest to uproszczona wersja zapożyczona ze starego projektu PiStar + SVXlink (2024 ) - RaspberryPi 0W opartego o dashboad autorstwa Waldka SP2ONG - i tam jest więcej opisany. Z pewnością będzie on w dalszym etapie modyfikowany gdyż teraz będzie trochę więcej danych do wyświetlenia. Na dalszym etapie pojawi się "paczka" do pobrania jeśli ktoś będzie chciał sobie to zaadaptować.

 

Założenie jest takie aby do tego dashboard

 

dodać w linkach możliwość przełączenia się na SVXlink

i tymsamym mieć prosty pogląd na to co się dzieje po stronie svxlink. 

 

Zmodyfikowany dostanie też delikatnie zakładka Configuration > Expert

 

Tak aby ukazało się menu SVXlink Edit: umożliwiające konfigurację najważniejszych elementów wpływających na pracę svxlink.

 

Będzie można edytować w całości plik svxlink.conf i inne dokładnie tak jak to widać w terminalu. Edycja całego pliku konfiguracyjnego pozwala na dowolne modyfikacje, nie ograniczone edytorem www.

 

 

Analogowy hotspot RaspberryPi HAT

ReSpeaker + SA818S-CE to jest mój plan, ale nad ostateczna wersja będzie zweryfikowana przez życie. Z pewnością będzie to poszukiwanie taniej alternatywy dla modułów z DJSpot czy RF Guru, i znając życie będzie to w jakimś stopniu wzorowane na doświadczeniach tych rozwiązaniach.

Ponieważ chcę zbudować dwa takie moduły to koszt będzie wynosił około:

2x SA818s-CE = 15,5£

2x ReSpeaker 2-Mic = 12.5£

Co daje 28£ czyli 14£ za sztukę ( plus oczywiście elementy dodatkowe: złącza SMA, garść rezystorów i kondensatorów )

 

 

I TU CZAS NA PRZERWĘ W TYM ARTYKULE z uwagi na fakt że aby iść dalej muszę poczekać na realizację zamówienia złożonego w sklepie. Dopiero jak przyjdą wszystkie "zabawki" i rozpocznę składanie ReSpeaker i modułu radiowego będę mógł przedstawić mój proces produkcji. 

 

 

Ciąg Dalszy Nastąpi