For a friend of mine, also HAM, I wanted to build a turnkey Echolink node. The necessary hardware was a matter of combining a few ideas, collecting parts and one afternoon of drilling and sawing. Except the interface also a Raspberry Pi was part of the deal.

The software side had some more challenges. There were a couple of conditions:

  • no hassle with displays, keyboards and strange commands, so;
  • starting the necessary application during boot phase;
  • connecting via an Echolink proxy;
  • autoconnecting to a predefined node;
  • enabling commands via DTMF.

With this in mind I started with ‘TheLinkBox’. All of this is well documented, but I ran into some issues. I was unable to setup autoconnection and DTMF was nagging as well. And because time was running out I’ve tried my luck with SVXLink. But also here some surprised showed up. Perhaps other radio amateurs can use the wheels I’ve (re)invented.

Base system

It all began with with Raspbian. How to create a bootable SD card is well documented on the internet, so we’ll skip that part. For the first boot of Raspbian a mouse and keyboard are needed!

After having Raspbian up and running, mouse and keyboard can be detached and the Echolink interface can be connected. Be aware that the interface as described activates TX when SVXLink is not running / not configured. So keep the transceiver off for now!

Log in to the RPI with the standard credentials (assuming the password hasn’t been changed yet):

Username = pi

Password = raspberry

First run all updates. Keep in mind this can take a while.

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

reboot

HINT: the user ‘pi’ is a standard user without ‘root’ access. Therefore prior to all commands ‘sudo’ has to be used. Instead you can once type ‘sudo su‘, which grants root access for the rest of the session. Be aware that use of root access disables all safeties so you’re free to mess up your system. In that case you’ll have to start over with a fresh image on an SD card.

Now it’s time for the ALSA module. That module is not be installed in the standard setup of Raspbian.

sudo apt-get install alsa-tools alsa-oss

sudo modprobe snd-pcm-oss

sudo modprobe snd-mixer-oss

If this went well, two audio devices are available. Check this with the command

ls -l /dev/dsp*

This will bring up two audio devices:

/dev/dsp

/dev/dsp1

To be sure some modules are included in the boot phase, the file ‘/etc/modules’ has to be edited. Use an editor like ‘nano’, ‘vi’ or ‘mc’. Personally I prefer ‘nano’. How to use this editor is not part of this guideline. The internet offers enough documentation on that topic.

sudo nano -w /etc/modules

Now add two lines:

snd-mixer-oss

snd-pcm-oss

After saving the file and closing the editor it’s time to reboot the RPi. It’s good to have a display still connected. Although the text on the verbose screen runs way to fast to read, you can easily see whether or not an error shows up during boot. Those lines are flagged with the word ‘Failed’ in red.

sudo reboot

Finally the USB soundcard (in the Echolink interface) needs to be the default one. First open the file ‘/lib/modprobe.d/aliasses.conf’ with your favorite editor (in this example again ‘nano’)

sudo nano /lib/modprobe.d/aliases.conf

Now search for the line ‘options snd-usb-audio index=-2’. Then change ‘-2’ into ‘0’, so it reads:

options snd-usb-audio index=0

Save ‘/lib/modprobe.d/aliasses.conf’ and close the editor. Now it’s time for the file ‘/boot/config.txt’.

sudo nano /boot/config.txt

Search for the line dtparam=audio=on and put a hash ‘#’ in front of it, so it looks like:

#dtparam=audio=on

Save the file ‘/boot/config.txt’ and close the editor. Now again the RPi has to be rebooted. Watch the output on the screen: as soon as red text appears something went wrong during the previous steps.

sudo reboot

Afterward a bunch of packages has to be installed.

sudo apt-get -y install subversion libsigc++-2.0-dev g++ make libsigc++-1.2-dev libgsm1-dev libpopt-dev tcl8.5-dev libgcrypt-dev libspeex-dev libasound2-dev alsa-utils cmake libopus-dev qt4-dev-tools librtlsdr-dev doxygen

Installing SVXLink

First of all we’ll need to add the user ‘svxlink’ to the system and assign it to the group ‘daemon’:

useradd -G daemon svxlink

Now it’s time to get hold of ‘SVXLink’ and have it installed. There are multiple guidelines how to get this from a repository, but I couldn’t get one of those links running. Just downloading from www.svxlink.org proved to be the fastest way.

Unpack the downloaded file with the command

tar xvfz [bestandsnaam].tar.gz

Using the ‘ls’ command shows a new directory with the name ‘svxlink’ followed by a release number. Enter this directory and than continue to the subdirectory ‘src’.

cd svxlink[nummer]/src

In this subdirectory you’ll have to create another subdirectory called ‘build’, and enter it.

mkdir build

cd build

First some things have to be arranged and generated before compiling can start. The how and why is not part of this guideline.

cmake -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc \ -DLOCAL_STATE_DIR=/var ..

Now compiling can start with the commands below (in exactly the provided order). This will take some time again.

make

make doc

make install

ldconfig

Configuring SVXLink

Now the fun part can start by configuring and personalizing SVXLink. Start with the global configuration in the file ‘/etc/svxlink/svxlink.conf’.

sudo nano /etc/svxlink/svxlink.conf

Here some adjustments have to be made. To make things easy I’ve added the sections where you can find everything.

[SimplexLogic]

CALLSIGN=[eigen call]-L

[Rx1]

#SERIAL_PORT=/dev/ttyUSB0

[Tx1]

AUDIO_DEV=alsa:hw:0

PTT_PORT=/dev/ttyUSB0

HINT: depending on your configuration you can search for the CTCSS settings. When using CTCSS you can enter the correct subtone here. It will be announced then in the beacon text.

Save ‘/etc/svxlink/svxlink.conf’ and close the editor. Now it’s time to configure the Echolink module:

sudo nano /etc/svxlink/svxlink.d/ModuleEcholink.conf

Also this file needs some adjustments.

[ModuleEchoLink]

SERVER=europe.echolink.org

CALLSIGN=[eigen call]-L

PASSWORD=[echolink wachtwoord]

SYSOPNAME=[eigen naam]

LOCATION=[QTH en QRG]

USE_GSM_ONLY=1

PROXY_SERVER=[proxy server naar keuze]

PROXY_PORT=8100

PROXY_PASSWORD=PUBLIC

LINK_IDLE_TIMEOUT=0

AUTOCON_ECHOLINK_ID=[node nummer waarmee standaard verbonden dient te worden]

Save the file ‘/etc/svxlink/svxlink.d/ModuleEcholink.conf’ and close the editor.

Installing voice response

Audio samples can be added to SVXLink. To do so first the audiofiles are to be downloaded. Download the 16k samples, because the new versions of SVXLink won’t eat the 8k samples. These samples are to be unpacked to the directory ‘/usr/share/svxlink/sounds/en_US’:

mkdir /usr/share/svxlink/sounds/en_US

After copying the samples to the directory shown above, SVXLink can be started again and the transceiver can be switched on again. SVXLink will send a spoken beacon text.

First tests

It’s time now to boot the node for the first time.

sudo svxlink

The command above will provide output to your terminal window so you can observe what SVXLink is doing. When SVXLink correctly launches, the TX led of the interface will be off. Now you can switch on your transceiver.

At the Echolink website you can check whether or not the node is online.

If the node is online, use the DTMF keyboard of another (portable) transceiver to connect your node with the Echolink testnode by sending 4 times ‘9’ followed by the hash ‘#’.

9999#

This will trigger a voice response, confirming you’ve successfully to the Echolink testnode. This node acts as a ‘parrot’, repeating the received audio a few seconds after the squelch has closed. Ideal to adjust your audio settings.

If this test has been successfully completed the transceiver has to be switched off again. SVXLink has to be stopped by typing ‘control’ + ‘C’.

[Ctrl][c]

Launch SVXLink during boot phase

SVXLink can be lauched using ‘/etc/rc.local’. You can do this by editing the file with the command

sudo nano /etc/rc.local

Just above the line ‘exit 0’ the line below has to be added:

/usr/bin/svxlink –daemon

When you reboot the RPI, SVXLink won’t lauch automatically. When you manually trigger the script ‘/etc/rc.local’ the node application will start as expected. It caused some headache to solve this. In the file ‘/etc/rc.local’ two extra lines are to be added before ‘/usr/bin/svxlink –daemon’.

HOME=/home/pi

export HOME

Finally the file will look like this:

HOME=/home/pi

export HOME

/usr/bin/svxlink –daemon

exit 0

Finally save the file ‘/etc/rc.local’ and close the editor. Now SVXLink will automatically launch after a reboot. This can easily be checked with the TX led of the interface. Now the transceiver can be powered up again. The node is ready to use.