SvxLink perikelen

Voor een bevriend amateur wilde ik een turnkey echolink node samenstellen. De hardware hiervoor was een kwestie van het combineren en een aantal ideeën, onderdelen verzamelen en vervolgens een middagje boren, vijlen en zagen. Behalve de beschreven interface hoorde ook nog een Raspberry Pi bij de uitrusting.

Softwarematig zaten er wat meer haken en ogen aan. Er waren namelijk een aantal eisen:

  • geen gedoe met beeldschermen, toetsenborden en allerhande gekke commando’s, dus;
  • starten in de boot-fase;
  • verbinden via een proxy;
  • automatisch linken met een vooraf ingestelde node;
  • bediening via DTMF moest eveneens mogelijk zijn.

Met die insteek ben ik aan de slag gegaan met ‘TheLinkBox’. Dit is weliswaar allemaal goed gedocumenteerd, maar ik liep toch tegen een aantal problemen aan. Het automatisch linken kreeg ik niet geregeld en DTMF bokte eveneens. En aangezien de tijd begon te dringen, ben ik uitgeweken naar SvxLink. Echter liep ik ook hier tegen een aantal zaken aan. Wellicht dat andere amateurs iets hebben aan de wielen die ik (opnieuw) uitgevonden heb.

Basis systeem

Uitgangspunt is Raspbian. Hoe dit op een SD-kaartje gezet wordt, is op internet uitvoerig gedocumenteerd, dus dat slaan we over. Voor de eerste boot van Raspbian is overigens wel muis en toetsenbord vereist!

Nadat Raspbian draait, kunnen muis en toetsenbord verwijderd worden en de Echolink-interface kan verbonden worden. Let op dat de beschreven interface TX activeert wanneer SvxLink niet draait! Dus laat de transceiver nog even uit!

Log nu op de RPi in met onderstaande credentials (vooropgesteld dat het wachtwoord nog niet aangepast is):

Username = pi

Wachtwoord = raspberry

Eerst alle updates draaien. Hou er rekening mee dat dit enige tijd kan duren!

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

reboot

TIP: de user ‘pi’ is een gebruiker zonder ‘root’-rechten. Vandaar dat elk commando door ‘sudo’ voorafgegaan wordt. In plaats hiervan kun je ook kiezen voor ‘sudo su‘, waardoor je voor de tijd van de sessie blijvende root-rechten hebt. Denk er wel aan dat bij gebruik van root-rechten elke veiligheidsvoorziening uit is, en je het systeem dus kunt moeren. In dat geval betekent het opnieuw beginnen met een verse image op een SD-kaart!

Nu is de ALSA-module aan de beurt. Dit wordt namelijk niet standaard met Raspbian meegebracht.

sudo apt-get install alsa-tools alsa-oss

sudo modprobe snd-pcm-oss

sudo modprobe snd-mixer-oss

Als het goed is, zijn nu twee audio-devices beschikbaar. Controleer dit met het commando

ls -l /dev/dsp*

Nu zijn twee audio devices zichtbaar:

/dev/dsp

/dev/dsp1

Om ervoor te zorgen dat e.e.a. in de opstartfase meegenomen wordt, moet het bestand ‘/etc/modules’ aangepast worden. Gebruik hiervoor een editor als ‘nano’, ‘vi’ of ‘mc’. Zelf werk ik het liefst met ‘nano’. Hoe deze editor werkt, valt buiten dit artikel. Op internet is hierover voldoende documentatie te vinden.

sudo nano -w /etc/modules

Voeg vervolgens twee regels toe:

snd-mixer-oss

snd-pcm-oss

Na het opslaan van het bestand en het afsluiten van de editor, wordt het tijd om de RPi opnieuw op te starten. Het is een goed idee om in deze fase nog een beeldscherm aangesloten te hebben. Ondanks dat de output tijdens het opstarten veel te snel loopt om alles goed te kunnen lezen, is het wel goed om te zien of ergens een foutmelding in de opstartfase optreedt. Die regels worden namelijk met een rood woordje ‘Failed’ gemarkeerd. En dat valt wel goed op.

sudo reboot

Uiteindelijk moet de USB-soundcard (in de Echolink-interface) nog ‘default’ gemaakt worden. Open eerst het bestand ‘/lib/modprobe.d/aliasses.conf’ met je favoriete editor (in dit voorbeeld wederom ‘nano’)

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

Zoek nu de regel ‘options snd-usb-audio index=-2’. Wijzig de ‘-2’ in ‘0’, zodat er staat:

options snd-usb-audio index=0

Sla ‘/lib/modprobe.d/aliasses.conf’ op en sluit de editor af. Daarna is het bestand ‘/boot/config.txt’ aan de beurt.

sudo nano /boot/config.txt

Zoek de regel dtparam=audio=on en zet hier een hekje ‘#’ voor, zodat er het volgende staat:

#dtparam=audio=on

Sla het bestand ‘/boot/config.txt’ op en sluit de editor af. Nu is het weer tijd om de RPi opnieuw op te starten. Hou de output op het beeldscherm in de gaten. Indien ergens een rood gekleurd tekstje verschijnt, is in het bovenstaande iets niet goed gegaan.

sudo reboot

Daarna moet nog een serie pakketten geïnstalleerd worden.

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

SvxLink installeren

Eerst dient een nieuwe user met de naam ‘svxlink’ aangemaakt te worden. Tijdens het aanmaken van het account voegen we deze user meteen toe aan de groep ‘daemon’

useradd -G daemon svxlink

Nu is het tijd om het pakket ‘SvxLink’ te bemachtigen en te installeren. Er zijn een aantal beschrijvingen om dit vanuit een repository op te halen, maar geen van deze links heb ik aan de praat gekregen. Gewoon downloaden van www.svxlink.org is de snelste manier.

Pak het gedownloade bestand uit met het commando

tar xvfz [bestandsnaam].tar.gz

Met het commando ‘ls’ kun je zien dat nu een directory erbij is gekomen met de naam ‘svxlink’ gevolgd door een release-aanduiding. Ga deze directory binnen en meteen door naar de subdirectory ‘src’.

cd svxlink[nummer]/src

In deze directory wordt een nieuwe subdirectory met de naam ‘build’ aangemaakt en binnengegaan.

mkdir build

cd build

Eerst moeten wat zaken rechtgezet en gegenereerd worden voordat het compileren kan beginnen. Het hoe en waarom is eigenlijk niet iets voor deze handleiding.

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

Vervolgens gaan we compileren met onderstaande commando’s (exact in de aangegeven volgorde). Dit kan overigens weer een behoorlijke poos duren.

make

make doc

make install

ldconfig

Configuratie van SvxLink

Nu begint het leuke gedeelte, waarin SvxLink geconfigureerd en gepersonaliseerd wordt. Begonnen wordt met de globale configuratie in het bestand ‘/etc/svxlink/svxlink.conf’.

sudo nano /etc/svxlink/svxlink.conf

Hier moeten wat dingen in aangepast worden. Voor het gemak heb ik de secties waar e.e.a. te vinden is erbij gezet.

[SimplexLogic]

CALLSIGN=[eigen call]-L

[Rx1]

#SERIAL_PORT=/dev/ttyUSB0

[Tx1]

AUDIO_DEV=alsa:hw:0

PTT_PORT=/dev/ttyUSB0

TIP: al naar gelang de configuratie kun je nog zoeken naar de CTCSS-instellingen. Als de transceiver CTCSS gebruikt, kan hier de juiste toon ingesteld worden. Deze wordt dan in de bakentekst mee uitgezonden.

Sla ‘/etc/svxlink/svxlink.conf’ op en sluit de editor af. Nu is de Echolink-module aan de beurt:

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

Ook hierin moeten de nodige aanpassingen gedaan worden.

[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]

Sla het bestand ‘/etc/svxlink/svxlink.d/ModuleEcholink.conf’ op en sluit de editor af.

Voice response installeren

Voor SvxLink kunnen spraak samples geïnstalleerd worden. Eerst moeten de geluidsclips gedownload worden. Download hier de 16k samples, aangezien de nieuwe versies van SvxLink geen 8k samples kan verwerken. Deze samples komen in de directory ‘/usr/share/svxlink/sounds/en_US’:

mkdir /usr/share/svxlink/sounds/en_US

Kopieer de samples naar de zojuist aangemaakte directory. Wanneer SvxLink nu weer gestart wordt, de transceiver ingeschakeld wordt, zal SvxLink zich met een gesproken bakentekst melden.

Eerste tests

Het wordt nu tijd om de node voor het eerst op te starten.

sudo svxlink

Met bovenstaand commando krijg je output in het terminal-venster, zodat je goed kunt zien wat SvxLink doet. Als SvxLink goed start, gaat de TX-led op de interface uit. De tranceiver kan nu ingeschakeld worden.

Op de website van EchoLink kan vervolgens gekeken worden of de node daadwerkelijk online gekomen is.

Wanneer dit het geval is, kan met het DTMF-toetsenbord van een andere set of een porto verbinding te maken met de echolink-testnode door 4x het cijfer ‘9’ gevolgd door een hekje ‘#’ te zenden.

9999

Hierop meldt de voice response terug dat verbonden wordt met de Echolink-testnode. Deze node werkt als een ‘parrot’, waardoor het ontvangen audio enkele tellen na het afvallen van de squelch opnieuw uitgezonden wordt. Ideaal om de audio-instellingen bij te stellen.

Wanneer deze test succesvol was, kan de transceiver weer uitgeschakeld worden. SvxLink kan nu gestopt worden door ‘control’ + ‘C’ te toetsen.

[Ctrl][c]

SvxLink starten tijdens het booten van de RPi

SvxLink kan via ‘/etc/rc.local’ gestart worden. Hiervoor moet het bestand aangepast worden met

sudo nano /etc/rc.local

Voeg vlak boven de regel ‘exit 0’ het volgende toe:

/usr/bin/svxlink –daemon

Als nu de RPi opnieuw gestart wordt, zal SvxLink NIET automatisch meestarten. Wanneer het script /etc/rc.local gedraaid wordt, start de node wel. En dat heeft voor nogal wat hoofdbrekens gezorgd. Daarom moet voor de regel ‘/usr/bin/svxlink –daemon’ nog iets toegevoegd worden.

HOME=/home/pi

export HOME

Uiteindelijk ziet het bestand er zo uit:

HOME=/home/pi

export HOME

/usr/bin/svxlink –daemon

exit 0

Nu moet het bestand /etc/rc.local opgeslagen worden waarna de editor afgesloten kan worden. Wanneer nu de RPi opnieuw gestart wordt, zal SvxLink mee opstarten. Dit is het makkelijkst te herkennen wanneer de TX-led op de interface uit gaan. Nu kan ook weer de transceiver ingeschakeld worden. De node is nu klaar voor gebruik.