InstallSrcHwRpi - sm0svx/svxlink GitHub Wiki

Installation instruction for SvxLink on Raspberry Pi

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

Prepare the Raspberry Pi: Install Raspberry Pi OS Lite (32bit) without Desktop.

Configure some Raspberry stuff (optional)

sudo raspi-config

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
sudo useradd -rG audio,plugdev,gpio,dialout svxlink

Download the software from Github and generate a package (.deb)

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

Install the 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

Installation of sounds

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)

Find the correct sound device

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

Connect a speaker/headphones to the 3.5mm audio output to simulate a transmitter

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.

GPIO Configuration

TODO

Audio calibration with radio connected

Both the Tx (Transmitter) and the RX (Receiver) audio levels need to be calibrated. Please use the calibration tool devcal provided with SvxLink.

Audio calibration of the Receiver (Rx1)

The audio coming from the receiver needs to be adjusted in several steps.

  1. Adjust the maximum level coming into the sound card, to not create distortion. (devcal)

  2. Adjust the received deviation based on a signal generator or transmitter with a known calibration. (devcal)

  3. Adjust the SvxLink signal level detector, used for the SIGLEV squelch or a Voter. (siglevdetcal)

Ste-by-step procedure for Rx level calibration

  • 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

Audio calibration of the Transmitter (Tx1) (To be improved)

Follow the suggested method in devcal manual, using RTL dongle as measurement receiver.

man devcal

Save audio settings

sudo alsactl store

All settings of sliders etc in alsamixer is saved in a file, default: /var/lib/alsa/asound.state.

Commands to start and stop SvxLink

sudo systemctl enable --now svxlink
sudo systemctl start svxlink
sudo systemctl stop svxlink
man svxlink.conf

Monitor logfile

tail -f /var/log/svxlink

Upgrade to the latest pre-release

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

Modifying the Events handling system and sounds

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

Backup configuration files

Make a backup of all files under /etc/svxlink/

Make a backup of your directory containing /var/lib/svxlink/pki"

Backup your alsa configuration file: /var/lib/alsa/asound.state

⚠️ **GitHub.com Fallback** ⚠️