Instalare Svxlink: Diferență între versiuni
| Linia 136: | Linia 136: | ||
Parametrul j4 indică utilizarea a patru core-uri pentru procesul de build (RPi 4 B e quad-core). | Parametrul j4 indică utilizarea a patru core-uri pentru procesul de build (RPi 4 B e quad-core). | ||
<span style="color=#DD0000">'''ATENȚIE !'''</span> E posibil ca compilarea să dea erori de openssl, mai precis: | |||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
Versiunea de la data 22 iunie 2025 19:45
Ghidul ăsta l-am făcut mai mult pentru mine, ca să nu uit. Dar poate fi util și altora.
Instalare din surse
Update și upgrade
tom@raspberrypi:~ $ sudo apt-get update
tom@raspberrypi:~ $ sudo apt-get upgrade
Este de indicat să se dezactiveze orice interfață audio în afară de cea utilizată pentru comunicarea RoLink. Pentru inactivarea interfețelor audio HDMI trebuie editat fișierul config.txt din /boot/firmware:
# Enable audio (loads snd_bcm2835)
dtparam=audio=off
și
# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d,noaudio
max_framebuffers=2
unde noaudio este parametrul important
Descarcă și instalează pachetele
Dependențe:
- libsigc++ 2
- gsm
- popt
- libgcrypt
Pachete recomandate:
- libasound — Pentru suport ALSA
- speex — Îmbunătățirea calității audio pentru Echolink și transceivere remote
- opus — Îmbunătățirea calității audio pentru transceivere remote și SvxReflector
Pachete opționale:
- rtl-sdr — Suport nativ pentru dongle USB RTL2832U DVB-T
- Doxygen — Pentru generarea documentației dezvoltator
- Groff — Pentru generarea paginilor man
Lista completă de pachete necesare
| Denumire pachet | Comandă instalare | Ce face |
|---|---|---|
| g++ | sudo apt install g++ |
This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. |
| cmake | sudo apt install cmake |
Cross-platform, open-source make system. |
| make | sudo apt install make |
GNU Make is a utility which controls the generation of executables and other target files. |
| libsigc++-2.0-dev | sudo apt install libsigc++-2.0-dev |
Type-safe Signal Framework for C++ - development files |
| libgsm1-dev | sudo apt install libgsm1-dev |
Development libraries for a GSM speech compressor |
| libpopt-dev | sudo apt install libpopt-dev |
lib for parsing cmdline parameters - development files; more support for arguments |
| tcl8.6-dev | sudo apt install tcl8.6-dev |
Tcl (the Tool Command Language) v8.6 - development files |
| libgcrypt20-dev | sudo apt install libgcrypt20-dev |
libgcrypt contains cryptographic functions |
| libspeex-dev | sudo apt install libspeex-dev |
Speex is an audio codec especially designed for compressing voice at low bit-rates for applications such as voice over IP (VoIP) |
| libasound2-dev | sudo apt install libasound2-dev |
This package contains files required for developing software that makes use of libasound2, the ALSA library |
| libopus-dev | sudo apt install libopus-dev |
The Opus codec is designed for interactive speech and audio transmission over the Internet |
| librtlsdr-dev | sudo apt install librtlsdr-dev |
rtl-sdr is a software defined radio (SDR) receiver software for certain low-cost DVB-T/DAB(+) USB dongles based on the Realtek RTL2832U chip |
| doxygen | sudo apt install doxygen |
Doxygen is a documentation system for C++, C, Objective-C, C#, PHP, Java, Python, IDL, Fortran, VHDL and to some extent D |
| groff | sudo apt install groff |
This package contains optional components of the GNU troff text-formatting system |
| alsa-utils | sudo apt install alsa-utils |
Utilities for configuring and using ALSA |
| vorbis-tools | sudo apt install vorbis-tools |
Several Ogg Vorbis tools. Vezi documentatie. |
| curl | sudo apt install curl |
curl is a command line tool for transferring data with URL syntax |
| libcurl4-openssl-dev | sudo apt install libcurl4-openssl-dev |
Development files and documentation for libcurl (OpenSSL flavour) |
| git | sudo apt install git |
Git is popular version control system designed to handle very large projects with speed and efficiency |
| rtl-sdr | sudo apt install rtl-sdr |
Software defined radio receiver for Realtek RTL2832U (tools) |
| libjsoncpp-dev | sudo apt install libjsoncpp-dev |
Library for reading and writing JSON for C++ (devel files) |
| ladspa-sdk | sudo apt install ladspa-sdk |
LADSPA is a free standard specification for audio effect plugins |
| libogg0 | sudo apt install libogg0 |
Libogg is a library for manipulating ogg bitstreams |
| libogg-dev | sudo apt install libogg-dev |
The libogg-dev package contains the header files and documentation needed to develop applications with libogg |
| libgpiod-dev | sudo apt install libgpiod-dev |
C library for interacting with Linux GPIO device |
| gpiod | sudo apt install gpiod |
Tools for interacting with Linux GPIO character device - binary |
informații suplimentare pentru formatarea tabelelor
Comanda pentru actualizare pachete
Atenție ! tcl8.5-dev a fost înlocuit cu versiunea 8.6, deci comanda de pe site-ul [svxlink.org svxlink.org] nu mai e actuală. Mai jos am dat comanda actualizată și cu pachetele necesare pentru 1.9.99 (ladspa-sdk libogg0 libogg-dev libgpiod-dev):
tom@raspberrypi:~ $ sudo apt install g++ cmake make libsigc++-2.0-dev libgsm1-dev libpopt-dev tcl8.6-dev libgcrypt20-dev libspeex-dev libasound2-dev libopus-dev librtlsdr-dev doxygen groff alsa-utils vorbis-tools curl libcurl4-openssl-dev git rtl-sdr libcurl4-openssl-dev cmake libjsoncpp-dev ladspa-sdk libogg0 libogg-dev libgpiod-dev
Crează utilizator svxlink și adaugă la grupuri
tom@raspberrypi:~ $ sudo useradd -rG audio,plugdev,gpio,dialout svxlink
Descarcă soft-ul de pe Github
Eu folosesc /opt pentru toate activitățile:
tom@rpi-yo3iti:~ $ cd /opt
Descarcă de pe GitHub:
tom@raspberrypi:~ $ sudo git clone http://github.com/sm0svx/svxlink.git
tom@raspberrypi:~ $ sudo mkdir svxlink/src/build
tom@raspberrypi:~ $ cd svxlink/src/build
Compilează și instalează
Este foarte important ca instrucțiunile de mai jos să fie date sub sudo:
tom@raspberrypi:~ $ sudo cmake -DUSE_QT=OFF -DCMAKE_INSTALL_PREFIX=/opt/rolink -DSYSCONF_INSTALL_DIR=/opt/rolink -DLOCAL_STATE_DIR=/opt/rolink/var -DWITH_SYSTEMD=ON ..
tom@raspberrypi:~ $ sudo make -j4
Parametrul j4 indică utilizarea a patru core-uri pentru procesul de build (RPi 4 B e quad-core). ATENȚIE ! E posibil ca compilarea să dea erori de openssl, mai precis:
fatal error: 'openssl/bio.h' file not found
În acest caz trebuie instalat separat libssl-core:
sudo apt-get install libssl-dev
Se continuă cu:
tom@raspberrypi:~ $ sudo make doc
tom@raspberrypi:~ $ sudo make install
Configurare
Adăugarea căii către executabil
Implicit, sistemul nu recunoaște comanda svxlink.
Ca atare, comanda svxlink trebuie adăugată la PATH:
tom@raspberrypi:~ $ svxlink
-bash: svxlink: command not found
Comanda trebuia adăugată la variabila de mediu PATH în /etc/profile:
if [ "$(id -u)" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/rolink/bin"
else
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/opt/rolink/bin"
fi
export PATH
Configurează calea către bibliotecile dinamice
Exemplul de instalare de mai sus arată instalarea adaptată (customized install). În acest caz apar erori la apelarea bibliotecilor dinamice:
tom@raspberrypi:~ $ svxlink
svxlink: error while loading shared libraries: libasynccpp.so.1.6: cannot open shared object file: No such file or directory
Pentru a rula aplicația trebuie adăugată calea către bibliotecile dinamice specifice Svxlink la nivel de sistem, în /etc/ld.so.conf.d. Procedură:
- Se crează un fișier care conține calea către bibliotecile dinamice specifice;
- Se adaugă acest fișier în
/etc/ld.so.conf.d - Se adaugă în fișier calea către directorul care conține bibliotecile specifice Svxlink, în acest caz:
/opt/rolink/lib - Se dă comanda
sudo ldconfig -v
Exemplu:
tom@raspberrypi:~ $ cd /etc/ld.so.conf.d
tom@raspberrypi:~ $ sudo nano svxlink.libs.conf
tom@raspberrypi:~ $ sudo ldconfig -v
Se rulează comanda de actualizare a bibliotecilor de sistem:sudo ldconfig -v
Adăugare fișiere audio
tom@raspberrypi:~ $ cd /opt/rolink/share/svxlink/sounds
tom@raspberrypi:~ $ sudo wget https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases/download/14.08/svxlink-sounds-en_US-heather-16k-13.12.tar.bz2
tom@raspberrypi:~ $ sudo tar xvjf svxlink-sounds-en_US-heather-16k-13.12.tar.bz2
tom@raspberrypi:~ $ sudo ln -s en_US-heather-16k en_US
Atenție ! Fișierul talk_group.wav nu se regăsește în en_US-heather-16k/Core. Verifică https://github.com/sm0svx/svxlink-sounds-en_US-heather sau copiază-l de pe imaginea nodului YO3ITI implicit !
Configurare svxlink.service
tom@raspberrypi:~ $ cd /lib/systemd/system
tom@raspberrypi:~ $ sudo nano svxlink.service
Mare atenție la parametrii de pornire:
[Service]
EnvironmentFile=/opt/rolink/default/svxlink
PIDFile=${PIDFILE}
ExecStartPre=-/bin/touch ${LOGFILE}
ExecStartPre=-/bin/chown ${RUNASUSER} ${LOGFILE}
ExecStart=/opt/rolink/bin/svxlink --logfile=${LOGFILE} --config=${CFGFILE} --pidfile=${PIDFILE} --runasuser=${RUNASUSER}
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
TimeoutStartSec=60
TimeoutStopSec=10
#WatchdogSec=
#NotifyAccess=main
LimitCORE=infinity
WorkingDirectory=/opt/rolink/svxlink
Configurare log
Mare atenție la configurarea log-ului; serviciul nu poate porni fără o cale către un log valid. Cum fișierul nu există implicit (la instalarea svxlink), trebuie creat atât directorul log cât și fișierul svxlink.log în /opt/rolink/var/log/svxlink.log:
sudo nano /opt/rolink/default/svxlink
#############################################################################
#
# 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=/opt/rolink/svxlink/svxlink.conf
# Where to place the log file
LOGFILE=/opt/rolink/var/log/svxlink.log
# Where to place the PID file
PIDFILE=/run/svxlink.pid
# Disable Alsa zerofill if set to 0 (see manual page)
#ASYNC_AUDIO_ALSA_ZEROFILL=1
Configurarea pentru pornirea automată
După ce au fost parcurși cu success toți pașii de mai sus, se activează pornirea automată a serviciului odată cu pornirea sistemului:
tom@raspberrypi:~ $ sudo systemctl enable svxlink.service
În cazul în care totul este ok, sistemul răspunde cu:
Created symlink /etc/systemd/system/multi-user.target.wants/svxlink.service → /lib/systemd/system/svxlink.service.
Verificarea cu sudo systemctl status svxlink generează următorul mesaj de succes:
tom@raspberrypi:~ $ svxstatus
● svxlink.service - SvxLink repeater control software
Loaded: loaded (/lib/systemd/system/svxlink.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-07-19 11:47:22 EEST; 1min 22s ago
Docs: man:svxlink(1)
Process: 471 ExecStartPre=/bin/touch ${LOGFILE} (code=exited, status=0/SUCCESS)
Process: 484 ExecStartPre=/bin/chown ${RUNASUSER} ${LOGFILE} (code=exited, status=0/SUCCESS)
Main PID: 488 (svxlink)
Tasks: 1 (limit: 4915)
Memory: 12.8M
CGroup: /system.slice/svxlink.service
└─488 /opt/rolink/bin/svxlink --logfile=/opt/rolink/var/log/svxlink.log --config=/opt/rolink/svxlink/svxlink.conf --pidfile=/ru
Jul 19 11:47:22 raspberrypi systemd[1]: Starting SvxLink repeater control software...
Jul 19 11:47:22 raspberrypi systemd[1]: Started SvxLink repeater control software.
Erori în log-uri
Eroarea de mai jos nu este critică.
Apr 17 14:09:13 raspberrypi svxlink[970]: Libgcrypt warning: missing initialization - please fix the application