Instalare Svxlink: Diferență între versiuni
| Linia 41: | Linia 41: | ||
|- | |- | ||
|libpopt-dev||sudo apt install libpopt-dev||face ceva | |libpopt-dev||sudo apt install libpopt-dev||face ceva | ||
|- | |||
|libgpiod-dev||sudo apt install libgpiod-dev||is a development package containing the necessary files for developing applications that interact with the Linux GPIO (General Purpose Input/Output) interface using the libgpiod library. This package provides the header files, static libraries, and other tools needed to compile and link code that utilizes the libgpiod API. It replaces the older, deprecated sysfs interface for GPIO access. | |||
|- | |- | ||
|} | |} | ||
Versiunea de la data 21 iunie 2025 23:56
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
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 este
| Denumire pachet | Comandă instalare | Ce face |
|---|---|---|
| g++ | sudo apt install g++ | face ceva |
| cmake | sudo apt install cmake | face ceva |
| make | sudo apt install make | face ceva |
| libsigc++-2.0-dev | sudo apt install libsigc++-2.0-dev | face ceva |
| libgsm1-dev | sudo apt install libgsm1-dev | face ceva |
| libpopt-dev | sudo apt install libpopt-dev | face ceva |
| libgpiod-dev | sudo apt install libgpiod-dev | is a development package containing the necessary files for developing applications that interact with the Linux GPIO (General Purpose Input/Output) interface using the libgpiod library. This package provides the header files, static libraries, and other tools needed to compile and link code that utilizes the libgpiod API. It replaces the older, deprecated sysfs interface for GPIO access. |
tom@raspberrypi:~ $ sudo apt install g++ cmake make libsigc++-2.0-dev libgsm1-dev libpopt-dev tcl8.5-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
Atenție ! tcl8.5-dev a fost înlocuit cu versiunea 8.6, deci comanda de mai sus se va da:
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
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