Monday, December 5, 2022

SVXLink using a Raspberry Pi 3 Model B Computer (Latest: Revision 1)

Download the PDF file that contains the manual/guide HERE


How to install/setup:


  1. Raspberry PI OS – Bullseye

  2. SVXLink

  3. USB Sound Card

  4. Alsamixer

  5. GPIO

  6. Radio Interface


This guide will show you how to setup SVXLink on a Raspberry Pi computer. This guide assumes that you have limited knowledge of the Linux based Raspberry Pi OS.  (Click on images for larger view.)

 


We will install the Debian operating system to the Raspberry Pi and then the SVXLink firmware. Yes I know there are hundreds of videos and examples of how to install and setup a PI and SVXLink. I am going to explain what worked for me that resulted in a successful installation and working setup.

Please note this setup resulted in a fully working node running on a Raspberry Pi 3 (b) with Debian version: 11. (Bullseye)

 


To write the OS to an SD Card for the Raspberry Pi, I used a very nice and versatile piece of software called Raspberry Pi Imager. Using the imager is a simple way to image your microSD card with Raspbian, the official Raspberry Pi operating system, and other operating systems.

Note: You will need to be connected to the Internet the first time for the Raspberry Pi Imager to download the OS that you choose.

Download and install Raspberry Pi Imager to a computer with an SD card reader. Put the SD card you'll use with your Raspberry Pi into the reader and run Raspberry Pi Imager. Watch this 45-second video to learn how to install an operating system using Raspberry Pi Imager. Take note that I changed the settings of Pi Imager to include the following:

Image customization options - to always use

  • Enable SSH (Use Password authentication)

  • Set username and password - Username: pi Password: xxxxxx (you choose)

  • Set locale settings – Time Zone: You choose Keyboard Layout: You choose

Note: I did not configure wireless LAN as I use the Ethernet connection.

Persistant Settings

  • Play sound when finished

  • Eject media when finished

  • Enable telemetry

All selected.

Click Save

You are now ready to write the image to the SDCard. Ensure that you selected the correct storage (SDCard) as choosing the wrong drive will erase everthing on the drive you choose. Click on write. The image will now be written to the selected SDCard. After writing it will verified the firmware and then you will get a message that the write is completed and you can remove the SDCard. 




Before continuing install the following two programs to your windows computer:

I take a shortcut route and do not install a keyboard, mouse or HDMI screen to the Raspberry Pi. Insert the Ethernet cable to the Ethernet port.

You can now insert the SDCard into the slot of the Raspberry Pi. Bootup the Pi and wait till its finished. Ensure that your Windows computer is on the same Router as the Raspberry Pi. Open the Advanced Port Scanner program and set the correct IP scanning range just below the Scan button. Leave other settings as is. Click the Scan Button. The scanning will start. Wait till the program stops scanning. Now look for the columns Manufacturer and MAC Address. Under the Manufacturer column you will see Raspberry Pi Foundation and the MAC Address next to it. To the left in the IP column will be your raspberry pi’s IP address. Write it down as you will need the address for PuTTY to access the Pi headless.

Now open PuTTY and enter the IP address in the slot named Host Name or IP Address. Leave the port setting 22 and click Open. You will be greated with a new screen asking for your Login as: and Password: Enter the Username and Password that you set in settings of the Raspberry Pi Image. Once you logged in we can now change a few settings for the Raspberry Pi. At the command prompt type:

sudo raspi-config

enter

The configuration menu will open. I only make changes to two headings. You can always later access the config menu again and make changes. The two headings are Interfaces and Localisation. I selected the following settings:

Interfaces

Select VNC

Remote GPIO or Serial depending on how you going to interface your radio.

Localisation

Change -

  • Set Locale

  • Set Timezone

  • Set Keyboard

  • Set WLAN Country

The above settings is straight forward and I am not going to go into detail here.

Click OK and the menu will close.

Now open a terminal and type:

sudo reboot

enter

This will reboot the Raspberry Pi.

It is now time to access the Pi via Real VNC client from your Windows computer.

 


I use “VNC Connect” by Real VNC. Once installed open the program and a VNC viewer screen will appear. Right click and select New Connection. A new window will open. Just add your Raspberry Pi IP address in the VNC Server column. Leave the other setting as is. Click OK. A new window will open asking for your Raspberry Pi Username and Password. This is the same username and password that you used in PuTTY. Click OK. Another screen either Red or Yellow will open just click OK and you will see your Raspberry Pi main screen on you Windows Computer.

But the resolution and screen size of the Pi might not be correct. Lets fix this quickly.

Set VNC resolution for the Raspberry Pi

Step 1:

sudo nano /boot/config.txt

enter

as this file needs root permission to edit we use the command sudo. Nano is used for editing.

To run the Pi headless using VNC, I changed this in the boot config file.

# uncomment to force a console size. By default it will be display's size minus

# overscan.

framebuffer_width=1900

framebuffer_height=1024

Step 2:

With the frame buffer set comment the following line out:

#dtoverlay=vc4-kms-v3d

Commenting out and rebooting got me full resolution via VNC. Use “ctrl+x” “y” “enter” to exit nano and save your changes. Now reboot the Pi.

sudo reboot

enter

Once rebooted it is not a bad time to set a static IP- address for the Pi, if you so wish. I did not setup a Static IP Address.

Set Static IP-Address (Optional)

Open a new Terminal window. We will setup a static IP- address by editing the dhcpcd.conf file. See the example near the bottom of the file. You can use "nano" editor. To save and exit the editor, press ctrl-x and answer Y to save:

sudo nano /etc/dhcpcd.conf

enter

# Example static IP configuration:

interface eth0

static ip_address=192.168.0.10/24

#static ip6_address=fd51:42f8:caae:d92e::ff/64

static routers=192.168.0.1

static domain_name_servers=192.168.0.1 8.8.8.8

Enter the IP address allocated to the PI by your router under {static ip address=}

Enter your routers IP address under {static routers =}

Enter you routers IP address under {static domain_name_servers=}

Now is a good time to reboot your Raspberry.

sudo reboot

enter

Your Raspberry Pi is now ready to use once the reboot has been completed.

However it is always a good thing to keep your OS up to date. On the top right side of you Pi screen an icon will show up from time to time to inform you that there are updates for your Pi. Click on the icon and install the updates. However you can also use a terminal.

sudo apt-get update

sudo apt-get upgrade ;( Optional - You going to need a big cup of coffee for this one to finish.)

enter

Updates / Upgrades will start. Reboot once finished.

sudo reboot

enter

Congratulations you should now have a working Raspberry Pi with Bullseye (32 bit) OS installed!!

 


We can now install SVXLink. Open a Terminal Window. First we need to update apt and then install the SVXLink packages and server. Lets get cracking!!

Load Packages

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

Create SVXLink user and add to groups

sudo useradd -rG audio,plugdev,gpio,dialout svxlink

Download the software from Github and compile ( Note: Takes 30 - 45 min to compile)

git clone http://github.com/sm0svx/svxlink.git
mkdir svxlink/src/build
cd svxlink/src/build
cmake -DUSE_QT=OFF -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DLOCAL_STATE_DIR=/var -DWITH_SYSTEMD=ON ..

make -j4
make doc
sudo make install
sudo ldconfig

Download Sounds files and install 

Change to directory:

cd /usr/share/svxlink/sounds/

Enter

sudo curl -LO https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases/download/18.03.1/svxlink-sounds-en_US-heather-16k-18.03.1.tar.bz2

Enter

sudo tar xvjf svxlink-sounds-en_US-heather-16k-18.03.1.tar.bz2

Enter

sudo ln -s en_US-heather-16k en_US

Note:  I used 18.03.1 as the version 19.09.99.1 would not tar with tar.bz2.  Important:  Ensure that the download using curl downloads  the sound files.  It takes a least 50 seconds.  If it ends after just 10 seconds you will get and error.  If this happens go to  cd /usr/share/svxlink/sounds/ and delete the file in the folder with sudo rm svxlink-sounds-en_US-heather-16k-18.03.1.tar.bz2  Once deleted go back to using the sudo curl -LO...................  command and try the download again.  I was successful on the second attempt. 

That’s it you have SVXLink installed as well as the sound files.

 


Time now for some blacklisting:

Open a new terminal

Create a file using nano or any text editor and save in /etc/modprobe.d

cd /etc/modprobe.d

sudo nano alsa-blacklist.conf

enter

Enter the following line

blacklist snd_bcm2835

Save the file

Shutdown the machine

sudo shutdown now

enter

Switch everything OFF.  It is now time to connect your USB Soundcard dongle to one of the USB ports of the Raspberry Pi. We need to set it as the default audio device. First we need to configure the Raspberry Pi NOT to load Broadcom’s Sound Chip (BCM2835)

It is now time to set the USB Sound Card as the default audio device. First we need to find the USB Sound Card device ID. Then we will edit the alsa.conf file.

Start your Raspberry Pi. with the new USB Souncard dongle fitted.

Once the Pi has booted, open a new terminal

sudo arecord -l

enter

The output in the terminal window should be:


**** List of CAPTURE Hardware Devices ****

card 0: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]

Subdevices: 0/1

Subdevice #0: subdevice #0

open nano and edit the alsa.conf

I use nano to edit the alsa.conf file:

sudo nano /usr/share/alsa/alsa.conf

enter

Edit the lines defaults.ctl.card and defaults.pcm.card. In my case I had to change the number at the end of the line from “0” to “1” as arecord listed my sound card as Card 1, Device 0 and changed it when I removed the BCM2835 sound chip setting explained supra.  Depending on the sound card you use you might not have to change anything. 

default1.ctl.card 1

default.pcm.card 1

Use “ctrl + x” | “y” | “enter” to exit nano and save your changes.

Now reboot the Pi

sudo reboot

enter

After the reboot, head back to terminal and run alsamixer, verify the USB Audio device is set as the default playback/recording device. You can connect speaker/headphones to the USB Sound card and played an audio file in Chronium to verify that the audio output is working.

sudo alsamixer

enter

Once alsamixer opens press F5 to show all the volume controls. I set the Speaker / Mic / Mic (Capture slides to 19 and ensure that all three slides reflect 00.  If it shows MM then just click on MM and it will go to 00.  The Auto Gain Contol must be turned off (MM) muted. In my case I experienced a distortion error with the Auto Gain Control on. (00) 

Now press F6 to bring up Sound Card listing and select 0 or 1 USB  Audio Device  depending on your card number.  Mine was 1 but yours might be 0. Move to 1 or 0 and press enter to select your card.

Once selected press Esc to exit the mixer.

Now it is time to save the alsamixer settings

sudo alsactl store

enter

Next we’ll edit the svxlink.conf file for the initial setup. It is always a good idea to make a copy of the svxlink.conf as backup in case you want to revert back later to the unedited file.  This is optional.  I did not make a backup.

sudo nano /etc/svxlink/svxlink.conf

enter

Under the [GLOBAL] section:

uncomment: “CARD_CHANNELS=1”

Under the [SimplexLogic] section:

RX=NONE (this is temporary)

CALLSIGN=YOUR CALLSIGN

DEFAULT_LANG=en_US 

Under the [Rx] section:

AUDIO_DEV=also:plugw:0 ;(recall our USB Sound card was Card 0)

Under the [Tx] section:

AUDIO_DEV=also:plugw:0 ;(recall our USB Sound card was Card 0)

Save your changes and exit nano Using“ctrl + x” | “y” | “enter”

Next we need to edit the ModuleEchoLink.conf file once again using nano. It is always a good idea to make a copy of the ModuleEchoLink.conf as backup in case you want to revert back later to the unedited file.  This is optional.  I did not make a backup.


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

enter

Make the following changes to the ModuleEchoLink.conf file

Uncomment line 5 “Allow_IP=192.168.1.0/24“

;You may need to adjust the IP for your network subnet as used by your router

 CALLSIGN=CALLSIGN

PASSWORD=ECHOLINK PASS WORD

SYSOPNAME=CALLSIGN

LOCATION=CITY, STATE

Lastly uncomment the line “DEAFULT_LANG=en_US” to set the language to English

We also need to change the SERVERS setting.

SERVERS=europe.echolink.org ;(IMPORTANT: SVXLink will not connect or allow other stations so connect with servers.echolink.org. Change the address to europe.echolink.org or an Echolink server closest to your location)

Other changes in this file relates to you station information. You can change this to suite your needs.

Save your changes and exit nano Using“ctrl + x” | “y” | “enter”

sudo reboot

enter

Next on the list is to configure the ports on your router for your router/firewall for the Raspberry Pi. Due to the wide variety of Routers I will not go into detail on how to configure the ports and firewall. You need to consult your owners manual for you specific router as well as the Echolink manual. Echolink relies on the following ports:

5198 UDP, 5199 UDP, 5200 TCP

Check open Ports

sudo lsof -i -P -n

enter

More info on the opening of ports can be found further down in this manual.

We are now ready to connect everything together to do some basic tests of the SVXLink installation.

  • The USB Sound Card should already be connected

  • Connect Power Cables to the Raspberry Pi and the Radio if you have one connected to he Pi

  • Optional: Connect your interface board between the radio and the Raspberry Pi if you have installed an interface board

  • Optional: Connect the Radio Cable from the Interface board to the radio

Open up a new Terminal window. We are going to provisionally start SVXLink with the following command. The command hereunder will only be used to test start SVXLink.

Enter in a terminal window

sudo -u svxlink svxlink

enter

If all went well you should get a message “event handler script successfully loaded” and SVXLink should be waiting for input or a connection. Go ahead and tune a second transceiver if an interface and radio is connected, to the same simplex frequency the SVXLink radio is set to. If no interface or radio is connected you can use a set of earphones that is plugged into the speaker socket of the USB Sound Card dongle. In SVXLink use this command to have the server ID itself (*#).  Note the command *# at this stage will not work via the radio as we must still setup the GPIO pins.  You will see Tx1 Turning the transmitter On and after a few seconds Tx1 Turning the transmitter off.

*#

enter

SVXLink should key up the SVXLink Radio and you should hear the identification transmission on your second monitoring transceiver. If using headphones you should hear the ID on the phones. You may need to go back and adjust the speaker level using alsamixer. For me setting the speakers to approx 55% seems to work well.

Do the test below only if you have and interface and radio installed.  If it does not work just go ahead to the setting up the receive Rx.

Now open Echolink on your cell phone using a proxy and connect to your Echolink station. If all went well you should hear the Echolink ID the incoming connection on your monitoring transceiver. Additionally, you should be able to key up Echolink on your cell phone, transmit, and hear the transmission on your monitoring transceiver.

You now have SVXLink with the Echolink module setup and working on the transmit (TX) side of SVXLink. We still need to setup the receive (RX) side of SVXLink.

Setting up SVXLink is not difficult. Your need to be accurate in executing commands and not be in a hurry.

Now onto setting up the receiver (RX) side of SVXLink but first a few handy commands to use.

Remember that we always start and stop SVXLink the correct way.

Start and Stop SVXLink and Start and Shutdown the Raspberry PI

sudo systemctl start svxlink

sudo systemctl stop svxlink

Now I am sure you will get tired of starting svxlink manually every time. Lets fix this to allow svxlink to start automatically always after rebooting the Pi. Once you entered this command you must not start svxlink with the command: sudo -u svxlink svxlink anymore!

Select a new terminal and enter the command underneath at the command prompt

sudo systemctl enable --now svxlink

enter

sudo reboot

enter

The pi will reboot and svxlink will automatically startup after the Pi has finished rebooted.

Now let’s look at how to shutdown the Pi

Once you stopped SVXLink and you want to switch off the raspberry pi you need to shut down the Pi as prescribed. Never just pull the plug!! You have been warned.

Here is the correct way to shut-down your Raspberry Pi in a terminal window.

When using the command line or a terminal window, you can enter the following to do a clean shutdown:

sudo shutdown -h now

enter

or

sudo halt

enter

or

sudo poweroff

enter

If you use the GIU option click on the Pi emblem (left top corner) Click on Shutdown. New window will open. Click on Shutdown. The Pi will now shutdown.

Now lets shut-down SVXLink and then reboot the Raspberry Pi.

Were you successful in shutting down SVXLink and rebooting the Pi. If not, try again.

Setup the final receive (RX) side of SVXLink

We need to go back to svxlink.conf and enable RX under die Simplex section. Remember we put in None when we first edited the svxlink.conf file. We need to change the none now to Rx1.

sudo nano /etc/svxlink/svxlink.conf

enter

Under [Simplex]:

Rx=Rx1

Save the changes and exit nano using“ctrl + x” | “y” | “enter”

Go ahead and reboot the Pi

sudo reboot

enter

Once the Raspberry Pi reboot open a terminal and start svxlink as we have done before

sudo -u svxlink svxlink

enter

You might receive the following error:

Starting logic: SimplexLogic

Loading RX: Rx1

*** ERROR: Open capture audio device failed: Device or resource busy

*** ERROR: Could not open audio device for receiver “Rx1”

*** ERROR: Could not initialize RX “Rx1”

*** ERROR: Could not initialize Logic object “SimplexLogic”. Skipping…

*** ERROR: No logics available. Bailing out…

Why do you receive this error? Svxlink.service was starting when the Pi booted and already opened the Mic port on the USB Sound Card. Issuing the “sudo -u svxlink svxlink” command was starting a second svxlink processes. That’s why I earlier indicated that you must not use the “sudo -u svxlink svxlink” command once SVXLink auto starts from boot. Lets reboot the Pi.

sudo reboot

enter

Open a terminal window and lets check the svxlink service. The service should be listed as “active” in green. Here is the command to check the service.

sudo systemctl status svxlink

enter

Once you confirm that the service is “active” press “q” to quit when you are done reviewing the service status.

Now lets “tail” the svxlink log and see if the service is running and the Echolink Module is loaded.

tail -f /var/log/svxlink

enter

Use “ctrl + c” to stop the tail process.

If you’re lucky you will see the EchoLink Module load and connect to the EchoLink server:

Tue Nov 29 15:37:38 2022: SimplexLogic: Loading module "ModuleTclVoiceMail"

Tue Nov 29 15:37:38 2022: Found /usr/lib/arm-linux-gnueabihf/svxlink/ModuleTcl.so

Tue Nov 29 15:37:38 2022: Module Tcl v1.0.1 starting...

Tue Nov 29 15:37:38 2022: SimplexLogic: Event handler script successfully loaded.

Tue Nov 29 15:37:39 2022: EchoLink directory status changed to ON

Tue Nov 29 15:37:40 2022: --- EchoLink directory server message: ---

Tue Nov 29 15:37:40 2022: EchoLink Server v2.6.105

Tue Nov 29 15:37:40 2022:

Tue Nov 29 15:37:40 2022: ECHO4: Frankfurt, Germany

Tue Nov 29 15:37:40 2022:

Now you might find that you have a lot of errors relating to DNS and failed lookups for the EchoLink servers. The log would show the Pi eventually connecting to EchoLink and then disconnecting. Lets see if we can fix it by editing the svxlink.service file and adding a ‘sleep’ delay of 30 seconds resolved the issues. This will allow the Pi to complete the boot process before starting the svxlink service. Now lets stop the svxlink service.

sudo systemctl stop svxlink

enter

Now edit the svxlink.service file. Important:  Change/add the BOLD lines as below. Be sure you add the ExecStartPre=/bin/sleep 30 BEFORE THE OTHER ExecStartPre lines. Else the sleep delay won’t be effective.

sudo nano /lib/systemd/system/svxlink.service

enter

[Unit]

Description=SvxLink repeater control software

Documentation=man:svxlink(1)

Requires=svxlink_gpio_setup.service

After=network.online.target remote-fs.target time.target

After=svxlink_gpio_setup.service

[Service]

EnvironmentFile=/etc/default/svxlink

PIDFile=/run/svxlink.pid

ExecStartPre=/bin/sleep 30

ExecStartPre=-/bin/touch /var/log/svxlink

ExecStartPre=-/bin/chown $RUNASUSER /var/log/svxlink

ExecStart=/bin/sh -c ‘/usr/bin/svxlink –logfile=/var/log/svxlink –config=$CFG$

ExecReload=/bin/kill -s HUP $MAINPID

Restart=on-failure

TimeoutStartSec=60

#WatchdogSec=

#NotifyAccess=main

LimitCORE=infinity

WorkingDirectory=/etc/svxlink

[Install]

WantedBy=multi-user.target

Save the changes to the file and exit nano using“ctrl + x” | “y” | “enter”.

Now reload the systemctl daemon, start the svxlink service, and reboot the Pi.

sudo systemctl daemon-reload

enter

sudo systemctl start svxlink  (Might take a while to execute)

enter

sudo systemctl status svxlink (To check if svxlink is loaded)

enter

To exit use Ctrl Z

sudo reboot

enter

After the Pi reboots. Open up the terminal again and tail the svxlink log. It should have successfully connected to EchoLink.

tail -f /var/log/svxlink

enter

pi@raspberrypi:~ $ tail -f /var/log/svxlink

Tue Nov 29 15:49:30 2022: SimplexLogic: Loading module "ModuleTclVoiceMail"

Tue Nov 29 15:49:30 2022: Found /usr/lib/arm-linux-gnueabihf/svxlink/ModuleTcl.so

Tue Nov 29 15:49:30 2022: Module Tcl v1.0.1 starting...

Tue Nov 29 15:49:30 2022: SimplexLogic: Event handler script successfully loaded.

Tue Nov 29 15:49:31 2022: EchoLink directory status changed to ON

Tue Nov 29 15:49:32 2022: --- EchoLink directory server message: ---

Tue Nov 29 15:49:32 2022: EchoLink Server v2.6.105

Tue Nov 29 15:49:32 2022:

Tue Nov 29 15:49:32 2022: ECHO4: Frankfurt, Germany

Tue Nov 29 15:49:32 2022:

Tue Nov 29 16:00:00 2022: SimplexLogic: Sending long identification...

Tue Nov 29 16:00:00 2022: Playing Long voice ID

Tue Nov 29 16:00:00 2022: Tx1: Turning the transmitter ON

Tue Nov 29 16:00:06 2022: Tx1: Turning the transmitter OFF

Tue Nov 29 16:18:47 2022:

Fine tuning Alsamixer to get the best RX and TX Audio

 

00 = Unmuted  MM = Muted

Go ahead and make some test transmissions. Make small adjustments to the speaker and mic volume level on the Pi using “alsamixer”.

I found that I got an error stating that I was over modulating - ect ect.

I had to change the settings in alsamixer. Well this did not solve anything until I noticed that the automatic gain control in alsamixer was on.

Lets fix this!

alsamixer

enter

Press F6: Select Sound Card, and choose yours from the list, the bcm2835 ALSA we disabled and should not be present. I use a USB Device and this was listed as:

USB PnP Sound Device Select and press enter

You can play around with the settings but the main culprit was the on audio gain control. The Auto Gain Control wants to be off, select the gain control and press M (or click on 00)  to toggle so it displays [MM] for mute. Press Esc to exit and save the settings with:

sudo alsactl store

enter

This will store your settings until the next time you changed them.

As always when you make changes to files or the alsamixer it is a good practise to reboot the raspberry Pi.

sudo reboot

enter

After rebooting the error was no more and the audio quality both incoming and outgoing was good.

Congratulations! You have successfully installed SVXLink!

Now the fun begins. You will need to configure SVXLink to match the interface you use between the node and the radio. That’s if you going to connect an interface and radio to your node. This could be either via serial port or GPIO via the Raspberry Pi.


Raspberry Pi GPIO Configuration for Radio Interfacing using SVXLink Software

 

GPIO (General Purpose IO) is used to access hardware pins that are made available for example on and embedded system. Before starting to use a pin in SVXLink some setup need to be done in the operating system. With the standard distribution of SVXLink there is a pair of scripts that help with setting up and talking down the GPIO pins. The scripts are named svxlink_gpio_up and svxlink_gpio_down. The configuration file, which can be found among the other SVXLink configuration files (typically in etc/svxlink ), is called gpio.conf.

We have successfully installed the OS (Bullseye) and SVXLink and SVXLink Sounds. It is now time to setup the GPIO connection pins.

Ensure that you have the following hardware equipment connected:

  • Reliable Internet Connection (I use an Ethernet Connection)

  • Raspberry Pi 3 b

  • Compatible USB Sound Card

  • Interface between the Raspberry Pi and Radio

  • Some circuitry to interface PTT from 3V TTL GPIO on the Pi for your specific radio.

  • Preferably some “carrier-detect” (COS) output from the radio, and a 3V level shifter circuit to tell the Pi when a signal is received. (VOX type detection is possible but less reliable and not a good option if you going to connect this node to a Hub Network.)

First we need permission to access the gpio file

sudo gpasswd -a svxlink gpio

enter

Now let’s edit the gpio file

Before you make changes to the gpio.conf file, you must stop svxlink and stop the gpio setup.

sudo systemctl stop svxlink

enter

sudo systemctl stop svxlink_gpio_setup

enter

Below is an example how to configure gpio17 for PTT and gpio10 for COS in:

sudo nano /etc/svxlink/gpio.conf

enter

###############################################################################

#

# Configuration file for the SvxLink server GPIO Pins

#

###############################################################################


# GPIO system pin path

# RPi/odroid/nanopi/pine64 = /sys/class/gpio, orangpi = /sys/class/gpio_sw

GPIO_PATH=/sys/class/gpio

# Space separated list of GPIO pins that point IN and have an

# Active HIGH state (3.3v = ON, 0v = OFF)

#GPIO_IN_HIGH=""

# Space separated list of GPIO pins that point IN and have an

# Active LOW state (0v = ON, 3.3v = OFF)

# COS SETUP INTERFACE BOARD:

GPIO_IN_LOW="gpio10"

# Space separated list of GPIO pins that point OUT and have an

# Active HIGH state (3.3v = ON, 0v = OFF)

# PTT SETUP INTERFACE BOARD:

GPIO_OUT_HIGH="gpio17"

# Space separated list of GPIO pins that point OUT and have an

# Active LOW state (0v = ON, 3.3v = OFF)

#GPIO_OUT_LOW=""

# User that should own the GPIO device files

#GPIO_USER="svxlink"

# Group for the GPIO device files

#GPIO_GROUP="svxlink"

# File access mode for the GPIO device files

#GPIO_MODE="0664"

 

Important Note: Take specific note of the # sign in front of statements. If there are open (no #) in front of statements. You will receive errors and Svxlink will not start. 

Save the gpio.conf file.

Save the changes to the file and exit nano using“ctrl + x” | “y” | “enter”.

Another file that needs to be configured for GPIO is the svxlink.conf file. Below is an example how to configure GPIO in [Tx1] and [Rx1]in:

sudo nano /etc/svxlink/svxlink.conf

enter

[Tx1]

TYPE=Local

TX_ID=T

AUDIO_DEV=alsa:plughw:1

AUDIO_CHANNEL=0

#AUDIO_DEV_KEEP_OPEN=0

LIMITER_THRESH=-6

PTT_TYPE=GPIO

PTT_PORT=/dev/ttyS0

PTT_PIN=gpio17

 

[Rx1]

TYPE=Local

#RX_ID=?

AUDIO_DEV=alsa:plughw:1

AUDIO_CHANNEL=0

#AUDIO_DEV_KEEP_OPEN=0

LIMITER_THRESH=-6

SQL_DET=GPIO

GPIO_SQL_PIN=gpio10

SQL_START_DELAY=100

 

Save the svxlink.conf file.

Save the changes to the file and exit nano using“ctrl + x” | “y” | “enter”.

Reboot svxlink (the svxlink_gpio_setup will be started automatically).

sudo reboot

enter

Ensure that SVXLink has started:

sudo systemctl status svxlink

enter

If SVXLink has not started start it with the following command:

sudo systemctl start svxlink

enter

The PTT and COS will now be active and the relevant LED’s on the interface board will be active in TX and RX.

FUNCTION      RASPI PIN      GPIO

PTT =                11 (real pin)      17     

COS =               19 (real pin)      10

Basic SVXLink Commands

The following comments have been used supra.

How to start and stop SvxLink in Raspbian

sudo systemctl start svxlink

enter

sudo systemctl stop svxlink

enter

Monitor the system via the svxlink log

tail -f /var/log/svxlink

enter

Check the Status of SVXLink

sudo systemctl status svxlink

enter 

Ctrl Z (to exit)

 

Useful Commands:

Start and Stop SVXLink now and always after reboot

Note: This has been set. If not then you can use these commands to enable and disable SVXlink after reboot to automatically enable and disable SVXLink Only use these commands if they have never been set.

Enable

sudo systemctl enable - - now svxlink

enter

Disable

sudo systemctl disable - - now svxlink

enter

Save Alsamixer Settings

sudo alsactl store

enter

Check open Ports

sudo lsof -i -P -n

enter

The options used here are:

  • -i: If no IP address is specified, this option selects the listing of all network files

  • -P: inhibits the conversion of port numbers to port names for network files

  • -n: inhibits the conversion of network numbers to host names for network files

This way, it will list open ports in the Linux terminal:


But, this also shows us a lot of extra ports that the computer does not actually listen to.

You can list the listening ports by piping this output to the grep command and matching the pattern "LISTEN", like this:

sudo lsof -i -P -n | grep LISTEN

enter

This will only show the ports our computer is actively listening to and which service is using said open port.

Congratulations!! You have now installed and setup the following:

  • Raspberry Pi OS Firmware

  • SVXLink Firmware

  • USB Sound Card Firmware

  • Alsamixer Sound

  • GPIO Pin Setup

  • Interface between the Radio and Raspberry Pi

The basic installation to run SVXLink on a Raspberry Pi is now done.

The SvxLink Server is a general purpose voice services system, which when connected to a transceiver, can act as both an advanced repeater system and can also operate on a simplex channel. One could call it a radio operating system since it sits between the hardware (transceiver) and the applications (modules) and handle basic system services as well as input and output.

SvxLink is very extensible and modular. Voice services are implemented as modules which are isolated from each other. Modules can be implemented in either C++ or TCL. Examples of modules are:

  • Help – A help system

  • Parrot – Play back everything that is received

  • EchoLink – Connect to other EchoLink stations

  • DtmfRepeater – Repeater received DTMF digits

  • TclVoiceMail – Send voice mail to other local users

  • PropagationMonitor – Announce propagation warnings from dxmaps.com

  • SelCall – Send selective calling sequences by entering DTMF codes

Hope to hear you soon via SvxLink.

Enjoy SvxLink!!


PS/ There might be future post updates related to SVXLink. Feel free to return to the GRHub Network Blog to view them.

 

 

Recognition and References:

Contents for this manual comes from several web-sites that assisted me in getting the SVXLink Server up and running. It worked for me!

I would like to mention the following people/websites:

  1. Raspberry Pi Site

  2. PuTTY Site

  3. Advanced Port Scanner Site

  4. Real VNC Site

  5. PacHams.com

  6. SVXLink GitHub

  7. Tobias Blomberg SM0SVX

  8. Justin Wilson NP2WJ

  9. Peter Lindquist SM5GXQ

  10. John Pumford-Green GM4SLV

  11. linuxhandbook.com

  12. Curtis ZS6CMO

  13. Pakistan Amateur Radio Society

  14. g7smy.co.uk

  1. Thys ZS1TBP

  2. Various Forums – to many to mention here.


Please visit the GRHub Network Blog by clicking HERE


Compiled by Johan ZS1I

Mossel Bay

South Africa

8 February 2024


Can one see Auroras (Southern Lights) in South Africa?

Aurora Australis (Southern Lights) over Simons Town. Picture: Hassaan Tanvir During a recent discussion on the "Sonsak Span Amateur Rad...