InstallSrcHwRpi - sm0svx/svxlink GitHub Wiki
This is an instruction on how to install SvxLink server on a Raspberry Pi. The instruction has been updated to use the dpkg (packet manager for Debian) (2025-07-07).
-
The SvxLink source code is downloaded from Github and a package is built locally on the Raspberry Pi and installed by dpkg, the package manager for Debian.
-
Installation of Sound files
-
Basic test of the SvxLink installation with a speaker as TX (Transmitter) (no radio)
-
Audio calibration with radio connected
-
For additional configuration and modifications, see the InstallationInstructions or the man pages after you have installed svxlink on your Raspberry Pi.
man svxlink.conf
This list is verified on Rapberry Pi OS is verified on debian version 12 (bookworm) (2025-07-07)
sudo apt update sudo apt install g++ cmake make libsigc++-2.0-dev libgsm1-dev libpopt-dev tcl-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 libgpiod-dev libssl-dev ladspa-sdk
git clone http://github.com/sm0svx/svxlink.git cd svxlink git checkout 25.05.1
The "git checkout" command selects the SvxLink release 25.05.1. Choose other release if needed. If no specific release is checked out, "master" will be default. The master branch should be considered as pre-release and sometimes less tested and documented.
mkdir src/build cd src/build
cmake -DUSE_QT=OFF -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DLOCAL_STATE_DIR=/var -DWITH_SYSTEMD=ON -DCPACK_GENERATOR=DEB ..
make -j4 all doc package
The packaging tool (cpack) will generate a file named with the version you downloaded. Example: svxlink-25.05.1-Linux.deb
sudo dpkg -i svxlink-25.05.1-Linux.deb
Swedish:
cd /usr/share/svxlink/sounds/ sudo curl -LO https://github.com/sm0svx/svxlink-sounds-sv_SE-elin/releases/download/25.05/svxlink-sounds-sv_SE-elin-16k-25.05.tar.bz2 sudo tar xvjf svxlink-sounds-sv_SE-elin-16k-25.05.tar.bz2 sudo ln -s sv_SE-elin-16k sv_SE
English:
cd /usr/share/svxlink/sounds/ sudo curl -LO https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases/download/24.02/svxlink-sounds-en_US-heather-16k-24.02.tar.bz2 sudo tar xvjf svxlink-sounds-en_US-heather-16k-24.02.tar.bz2 sudo ln -s en_US-heather-16k en_US
It is now time to do some basic tests of the SvxLink installation. You need to connect a sound card and identify the soundcard device name. Then update the configuration file (/etc/svxlink/svxlink.conf)
arecord -L
Example printout:
hw:CARD=Device,DEV=0 USB PnP Sound Device, USB Audio Direct hardware device without any conversions plughw:CARD=Device,DEV=0 USB PnP Sound Device, USB Audio Hardware device with all software conversions sysdefault:CARD=Device USB PnP Sound Device, USB Audio Default Audio Device front:CARD=Device,DEV=0 USB PnP Sound Device, USB Audio Front output / input dsnoop:CARD=Device,DEV=0 USB PnP Sound Device, USB Audio Direct sample snooping device
sudo nano /etc/svxlink/svxlink.conf
In the SimplexLogic section, change the RX to NONE, and set your CALLSIGN.
[SimplexLogic] TYPE=Simplex RX=NONE TX=Tx1 MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail CALLSIGN=SK3W
In the Tx1 section, change the AUDIO_DEV to your audio device from the "arecord -L" printout.
Example: AUDIO_DEV=alsa:plughw:CARD=Device,DEV=0
[Tx1] TYPE=Local TX_ID=T AUDIO_DEV=alsa:plughw:CARD=Device,DEV=0 AUDIO_CHANNEL=0 #AUDIO_DEV_KEEP_OPEN=0
SvxLink is normally started from the start script, but as a test it can be started on the command prompt. We start the program as the svxlink user. You will see some errors on missing configuration for echolink, this can be configured later.
sudo -u svxlink svxlink
Enter *# on the keyboard, and you should hear your SimplexLogic identify itself in the speakers.
SvxLink [email protected] Copyright (C) 2003-2025 Tobias Blomberg / SM0SVX SvxLink comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it in accordance with the terms and conditions in the GNU GPL (General Public License) version 2 or later. Using configuration file: /etc/svxlink/svxlink.conf --- Using sample rate 48000Hz Starting logic: SimplexLogic Found plugin: /usr/lib/arm-linux-gnueabihf/svxlink/SimplexLogic.so SimplexLogic: Loading RX "NONE" SimplexLogic: Loading TX "Tx1" SimplexLogic: Loading module "ModuleHelp" Found /usr/lib/arm-linux-gnueabihf/svxlink/ModuleHelp.so Module Help [email protected] starting... SimplexLogic: Loading module "ModuleParrot" Found /usr/lib/arm-linux-gnueabihf/svxlink/ModuleParrot.so Module Parrot [email protected] starting... SimplexLogic: Loading module "ModuleEchoLink" Found /usr/lib/arm-linux-gnueabihf/svxlink/ModuleEchoLink.so Module EchoLink [email protected] starting... *** ERROR: Please set the EchoLink callsign (ModuleEchoLink/CALLSIGN) to a real callsign *** ERROR: Initialization failed for module ModuleEchoLink in logic SimplexLogic SimplexLogic: Loading module "ModuleTclVoiceMail" Found /usr/lib/arm-linux-gnueabihf/svxlink/ModuleTcl.so Module Tcl [email protected] starting... SimplexLogic: Event handler script successfully loaded. SimplexLogic: digit=* SimplexLogic: digit=# Tx1: Turning the transmitter ON Tx1: Turning the transmitter OFF
Stop SvxLink by pressing ctrl-c.
If the volume is too low, use alsamixer to increase the volume. Guide how-to use the Alsamixer.
Both the Tx (Transmitter) and the RX (Receiver) audio levels need to be calibrated. Please use the calibration tool devcal provided with SvxLink.
The audio coming from the receiver needs to be adjusted in several steps.
-
Adjust the maximum level coming into the sound card, to not create distortion. (devcal)
-
Adjust the received deviation based on a signal generator or transmitter with a known calibration. (devcal)
-
Adjust the SvxLink signal level detector, used for the SIGLEV squelch or a Voter. (siglevdetcal)
-
Connect un-squelched audio with noise from the receiver to the sound card INPUT (MIC or LINE IN),
-
In the Rx1 section in /etc/svxlink/svxlink.conf, configure AUDIO_DEV and AUDIO_CHANNEL settings.
-
Open two terminal windows: one for devcal and one to adjust the alsamixer
-
Start devcal -r /etc/svxlink/svxlink.conf Rx1
-
Adjust the CAPTURE device in the alsamixer to a level were no DISTORTION DETECTED is seen in devcal. (PREAMP parameter should be set to 0).
-
Turn off the PEAK_METER (PEAK_METER=0) in the Rx1 section in svxlink.conf. Maximum level is now set! (Don’t touch alsamixer after this)
-
Start devcal with parameters matching the known signal source, example: devcal -r -f1750 -d3200 /etc/svxlink/svxlink.conf Rx1
-
Adjust the PREAMP using + or - until the "Tone dev" matches the expected deviation.
-
Set the PREAMP value in the Rx1 section in svxlink.conf
-
Use the siglevdetcal utility to calibrate the signal level detector: siglevdetcal /etc/svxlink/svxlink.conf Rx1
man devcal man siglevdetcal
Follow the suggested method in devcal manual, using RTL dongle as measurement receiver.
man devcal
sudo alsactl store
All settings of sliders etc in alsamixer is saved in a file, default: /var/lib/alsa/asound.state.
cd svxlink/src/build git pull git checkout master
make -j4 all doc package
The packaging tool (cpack) will generate a file named with the version and commit.
Example: svxlink-25.05.1.9.g928cd878-Linux.deb
sudo dpkg -i svxlink-25.05.1.9.g928cd878-Linux.deb
sudo systemctl restart svxlink
Check if the node was started correctly without issues.
tail -F -n 100 /var/log/svxlink
If you want to make your own modifications of sounds and TCL-files for the event system, create directories in /etc/svxlink/ to store your own modifications.
cd /etc/svxlink/ sudo mkdir local-events.d sudo mkdir local-sounds.d
cd /usr/share/svxlink/events.d/ sudo ln -s ../../../../etc/svxlink/local-events.d/ local
cd /usr/share/svxlink/sounds/ sudo ln -s ../../../../etc/svxlink/local-sounds.d/ local