Raspberry Pi for Ham Radio Digital Modes

There I was sitting in my cave with a for now temporarily unused RaspberryPi (RPi) 3, having finished migrating my retro gaming onto a RPi 4. Having a itch I needed to scratch to get more into digital modes I thought it was a perfect time to look into setting up my RPi to do digital for me. That decision queued hours of YouTube videos and reading other people’s blog posts to figure out what I needed, as well as what I needed to do, to make my RPi work along side my radio as my newest little tool. Now that I have figured out a way forward to do so, I’m sharing my blog post to help you. And let’s be honest, it’s also to help me out with the build process for whenever the RPi’s SD card dies on me and I have to start over from scratch. Let’s begin…

Step 1: Reimage the SD card

In order to install the Raspberry Pi OS (previous known as Raspbian) we will need some software to “lay” the image on your SD card. To do this, there are many different software available but one of the simplest for all technical levels is the Raspberry Pi Imager from the folks that make the RPi. If you go to this link, https://www.raspberrypi.com/software/, you will find the imaging tool near the top of the page.

RPI OS Imager

Select the link for the version of the software that is appropriate for your computer’s operating system. Download and install it on your machine, then open the application.

Select the device type you are using. I have a RPi 3, so that is what I am going to select.

Select the OS version you are going to install. This will most likely be 64-bit, as it can run 32-bit stuff.

If it is not already, plug your SD card into your computer. If you get any pop-up messages about needing to format the card, you can disregard those for now. Click on the ‘Storage’ button and select the SD card you just plugged in. Remember to verify the capacity of the card you are going to be writing to so you can tell if you have the right device. Since this will completely wipe the SD card and you will loose any existing data on it, you want to make sure that you have the correct device selected.

Now that everything is selected, we can click on the ‘NEXT’ button. You then see a popup message that asks if you want to customize OS. This is optional, but you can edit and set stuff like hostname, wifi settings, enable ssh, etc…

Step thru the next couple popup messages, then it will kick off the reimaging. Go grab a drink, or a snack, as this will take a few minutes to complete. When it’s done, you will get a message just like what’s below.

Now you may eject that SD card from your computer and go plug it into your RPi.

Step 2: Prepping the Pi

Now that the newly reimaged SD card is plugged into your RPi, go ahead and turn it on. It will take a moment to start and load before you’re at the desktop and ready to proceed. Make sure you have either plugged in a network cable or have taken a moment to connect to you WiFi.

Open the command prompt. We’re going to run a few lines to set things up…

Lets run updates for starters.

sudo apt update && sudo apt upgrade -y

Then run the Raspberry Pi Configution tool to setup and tweak the settings on your RPi. This is where you can enable SSH if you didn’t do so when initially imaging the SD card. Go ahead and poke your way thru all those settings to make sure you have them how you want.

sudo raspi-config

Here are a few of the things you should consider looking at and setting up

  • System Options
    • WiFi enabled (optional but likely)
    • Hostname
  • Interface Options
    • SSH enabled (if you plan on remoting into it)
    • VNC enabled (if you plan on remoting into it)
  • Localization
    • Locale
    • Timezone
    • Keyboard
    • WLAN Country
  • Advanced Options
    • Expand Filesystem

Step 4: Ham apps

With all that initial BS out of the way. It’s time to install the fun stuff that we’ll actually use. 😎

We’re going to take a little bit of an easy button here, and use a script that another Ham has created and shared on his GitHub page. That guy is Jason, better known as KM4ACK in the ham community. If you’ve ever spent time browsing ham and amateur radio YouTube videos, you’ve probably seen a video or two of his. Here’s a link to his KM4ACK YouTube channel, check him out, he has a lot of great content on so many ham related topics.

KM4ACK deserves a lot of credit for his GitHub project named 73 Linux. He started it off as a project called “Build a Pi” that was a collection of scripts that installed a bunch of ham stuff on your Pi. It has since evolved into 73 Linux project, with other contributors, and it now supports the Raspberry Pi and Debian x32_64 hardware, full user control of the build when installing, and the ability to side load new apps. And it’s Open Source and shared on GitHub, talk about a software win! Here is a link to the 73 Linux project on KM4ACK’s GitHub.

Okay, enough talking… Let get to installing. The first step is to make sure that git is installed on your machine.

 sudo apt install git

Then you can run the following command:

 git clone https://github.com/km4ack/73Linux.git $HOME/73Linux && bash $HOME/73Linux/73.sh

The above command is two commands that are combined into a one liner. So lets break it apart so we can know what it is doing. Lets first look at everthing before the “&&”.

git clone https://github.com/km4ack/73Linux.git $HOME/73Linux

This is a git command to copy the repo of KM4ACK’s 73 Linux from his GitHub repo and save it to a folder named ’73Linux’ in the pi user’s home directory. Now lets look at what happens after the “&&”.

bash $HOME/73Linux/73.sh

This command will run a bash script that was downloaded from the 73 Linux repo onto your machine. It is essentially launching the installer that runs and adds all the handy ham stuff on to your computer.

And that’s it! You’ve now installed 73 Linux on your Raspberry Pi and you are ready to go!

KM4ACK has quite a few videos on his YouTube channel that will help you with the individual applications within 73 Linux. There is a link to his channel at the start of step 4 if you scroll back up.

This is also, unfortunately, where I’m going to stop this post. While setting this up and installing 73 Linux for this post, I’ve come to realize that the extra RPi 3 that I am using just doesn’t have enough resources to really run everything. For best results, you probably want to use an RPi 4 or better to truly have a usable experience.

For my next iteration in my shack, I’ve ordered myself a cheap netbook laptop. For just over $100, i was able to find a machine that has specs that are better than a RPi 4, a built in screen, and a battery for mobility. Stay tuned for the upcoming post where I’ll install linux and 73 linux on that laptop and we’ll be back off to the land of RX/TX.


EchoLink Proxy Guide

I have already talked about what EchoLink is in a previous post. In this post, I am more interested in covering all the steps required to stand up your own private proxy for accessing EchoLink while you are on the go. I’m going to do this by documenting the steps while I actually deploy my own proxy.

I’m using AWS’s LightSail to provision a very cheap Ubuntu 20.04 machine as my server. You can use any cloud provider (Azure, AWS, Oracle, DigitalOcean, etc…) or even something as simple as a raspberry pi at home with some port-forwarding on your router. I’m not going to show how to set that part up as there are so many places and ways to do so… Once you have your server ready and online please continue on.

First step… Update everything…

sudo apt update && sudo apt upgrade

Now let’s start installing the necessary package dependencies for EchoLink.

sudo apt install fail2ban openjdk-17-jre-headless screen unzip

Let us create a folder to download and install EchoLink into.

mkdir echolink
cd echolink
wget https://www.echolink.org/downloads/EchoLinkProxy_1_2_3.zip

Now we’ll unzip the EchoLink proxy software, then modify the permissions to run the file.

unzip EchoLinkProxy_1_2_3.zip
chmod 755 EchoLinkProxy.jar

Open a text editor and edit the “ELProxy.conf” file. You will need to update the “Password” value to a password of your choice.

Password=MyBlogIsAwesome

*If you want to make it into a public proxy, set the password to “PUBLIC” if you will be a publically accessible proxy.

NOTE: Make note of which port is set to be used in your config file… Is it port 5200 or port 8100?
You will need this value when you connect from the client on your computer or smartphone.

Let’s make the cron job that helps us restart the proxy anytime the system has been rebooted.
Replace <USER> with your username.

crontab -e

@reboot sleep 60 && /usr/bin/screen -S echolink -d -m /usr/bin/java -jar /home/<USER>/echolink/EchoLinkProxy.jar /home/<USER>/echolink/ELProxy.conf

Something worth noting is that the above cron task waits 60 seconds after rebooting before it initializes EchoLink. This allows the system to finish fully booting up and potentially avoids some weirdness. It’s really not a big deal… But it is worth knowing so that you don’t expect to be able to connect instantly after a reboot.

Time to create the firewall rules on the machine.

sudo ufw allow 5198:5199/udp
sudo ufw allow 5200/tcp
sudo ufw allow 8100/tcp

Now it’s time to set up Fail2Ban. Let us navigate to the folder below and create a file that we will edit in the next step.

cd /etc/fail2ban/filter.d/
touch echolink.conf

Open your editor of choice and paste this into the echolink.conf file

# fail2ban filter configuration for Echolink proxy
[Init]
maxlines = 2
[Definition]
failregex = ^.* Client connected: <HOST>\n.* Incorrect password challenge received
ignoreregex =

After we have the above-mentioned filter, we need to set up a “jail.” Let us navigate to the folder below and create a file that we will edit in the next step.

cd /etc/fail2ban/jail.d/
touch echolink.local

Open a text editor and copy the code below into it. Update “<USER>” to your username.
Note: Make sure that the port used here is the same as what is in your ELProxy.conf file.

[echolink]
enabled  = true
port     = 8100
filter   = echolink
logpath  = /home/<USER>/echolink/ELProxy.log
findtime = 14400
maxretry = 3
bantime  = 31536000
banaction = ufw

Now that we have everything set up… Reboot your machine. Then after waiting for it to come back up, try connecting to your Personal EchoLink Proxy from the client application on your computer or smartphone.

EchoLink

EchoLink is an awesome bit of software that allows you to do a form of Radio-Over-IP (RoIP). That means you’re talking to other stations over the internet, anywhere in the world. Whether from your laptop in a coffee shop, or from your smartphone as you drive during your commute, you can call CQ and make your QSLs across the world. One thing of note is that while it is available worldwide, it’s only open to the Amateur Radio community as it requires a valid call sign to create an account.

Currently, EchoLink is only available on Windows 7 and above (link). However, it is available on App Store for Apple devices and the Google Play store for Android devices.