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.