Instalare Svxlink: Diferență între versiuni

De la YO3ITI
Sari la navigare Sari la căutare
Linia 42: Linia 42:
|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.
|[https://packages.debian.org/buster/libgpiod-dev libgpiod-dev]||sudo apt install libgpiod-dev||pentru interacțiunea cu GPIO
|-
|-
|}
|}

Versiunea de la data 21 iunie 2025 23:58

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 pentru interacțiunea cu GPIO
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

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ă:

  1. Se crează un fișier care conține calea către bibliotecile dinamice specifice;
  2. Se adaugă acest fișier în /etc/ld.so.conf.d
  3. Se adaugă în fișier calea către directorul care conține bibliotecile specifice Svxlink, în acest caz: /opt/rolink/lib
  4. 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