Portable APRS digipeater using an Icom 705 and Raspberry Pi

I’ve been searching for a solution to boost the APRS signal on my HT when going for a hike. The idea is to setup a portable fill-in digipeater in the car which would pass my APRS signal from my HT to a nearby internet gateway (I-gate) or a distant digipeater that my HT cannot reach. Now I don’t recommend you go out and buy an Icom 705 just for this project as there are more affordable options available. Frankly I’m not sure I’d want to leave my expensive 705 in the car for both heat-related and theft issues. However, if you already have an Icom 705 and a Raspberry Pi, this makes for a fun little project. The fact that you can utilize the 705’s GPS and built-in sound card all with one USB cable is amazing to me.

Gear

To get started, you will need the following hardware to get started.
(Note: Some of these links are affiliate links (Amazon) that support my website and content creation at no additional cost to you.)

I will be using this Pi in a headless environment. Basically that means that once I have it setup, it will not be connected to a keyboard or monitor. For the software, I’m going to be using the Raspberry Pi OS Lite 64-bit version. I find that it uses less resources on the Pi than using the full desktop operating system. The easiest way to install it is to use the Raspberry Pi Imager software. It is available for Windows, Mac and Linux.

Raspberry Pi Imager: https://www.raspberrypi.com/software/

I have another tutorial that shows how to install the Raspberry Pi OS Lite operating system if you’ve never done it before.

Raspberry Pi OS Lite 64-bit installation tutorial

Once you have the operating system installed, you can access it either via plugging it in to a keyboard and monitor or preferably remote into via SSH like I do in the video above. That will require you to know what the hostname or IP address of your Pi is. If you don’t want to mess with that, then just use a keyboard and monitor.

Note: Throughout this tutorial you will see commands in white with a black background. If you’re using SSH, you can just copy and paste these commands into the window and it will make things go a lot faster than typing everything in manually. Also, when you use the sudo command it will prompt you for your password.


Icom 705

There are a couple of things to do on the Icom 705 before we get started.

  • Plug in the micro USB cable from the 705 to the Raspberry Pi.
  • Set the frequency on the 705 to 144.390 MHz. (or whatever the APRS frequency is in your country)
  • Change the mode to FM or FM-D mode. (it works for me on either mode)
  • Hold down the lock button to lock the dial knob so you don’t accidentally go off frequency.
  • Menu – Set – Connectors – Mod Input: Change the DATA OFF MOD and DATA MOD to USB.
  • Menu – Set – Connectors – USB (B) Function – GPS Out – ON
  • Menu – Set – Connectors – USB (B) Function – USB (B) Function – OFF
  • Menu – #2 – GPS – GPS set – GPS Select – ON
  • Menu – Set – Function – Time-Out Timer (Change it to 3 minutes in case the transmitter gets stuck)
  • Menu – Set – Display – Screen Saver (Battery Pack) or Screen Saver (DC 13.8V) if you’re on external power – Set it to 1 min so the display doesn’t drain your battery.

Update the Pi

Before we begin, it’s best to check for any updates to your operating system. Even after a fresh install of Raspbian, there are usually updates. The command below is really three commands combined into one line. It checks for updates, installs them and then reboots the Pi.

After the Pi has rebooted, connect back up to your Raspberry Pi.

Disable HDMI audio

In preparing this tutorial, I encountered issues between the audio from the HDMI ports and the Icom 705 sound card. So, I decided to disable the HDMI audio which you don’t need for this project.

Arrow down until you see the line that says dtoverlay=vc4-kms-v3d. Using the right arrow on the keyboard, move the cursor to the right of the d at the end of the line and type in ,noaudio so it looks like this below.

Do a CTRL-X, Y and then enter to save the file. Then reboot your Pi for the changes to take effect.

After the Pi has rebooted, connect back up to your Raspberry Pi.

Prerequisites

First we need to install some prerequisite programs to help us compile the software and other utilities for down the road.

GPSD


We are first going to install the GPS software so we can access the built-in GPS data on the 705. This will come in handy for both APRS reasons and if you want to use it to set the date and time on your Pi without internet. Due to some bugs in the prepackaged version, we need to compile gpsd from source code.

Visit the gpsd website and find the latest version. It is 3.26.1 as of the time of this post.

https://download.savannah.gnu.org/releases/gpsd

Use the following command on your Pi to download the source code. (grab the one that ends with .tar.gz)

Then we need to extract the file.

Now we will change into the newly created directory.

The next commands will compile the gpsd software into a program that we can run. This may take a little bit of time.

If everything was successful, you can install the compiled program using this command.

This will install the service that will autostart gpsd when the Pi is powered on.

Now we need to make the shared libraries quicker to find by caching the information.

Time to change back to the home directory

We need to find the name of the device that your 705 uses for GPS.

Mine shows the following but the eight numbers towards the end will be a bit different.

Now that we have that, we will need to edit the configuration file for gpsd to configure a few things.

Inside the editor, you will want to delete whatever you have in there and copy/paste what is listed below into the file. Pay close attention to the DEVICES line and make sure the eight numbers match what you discovered above. Use the one that ends with if02. Then save the file by hitting CTRL-X, type Y to confirm and hit enter when it asks the file name.

Now we need to enable the gpsd service to start when the Pi is powered on.

Now we can start the gpsd service.

Next we’re going to see if the Raspberry Pi is seeing the GPS data from the Icom 705.

If you have a GPS signal on your Icom 705 and everything is configured correctly, you should see a screen with lots of data on it like the one below. The data on the left is your specific date/time, location, elevation, time difference between the satellites and your Pi as well as your maidenhead grid square. On the right side is every satellite that your Icom 705 is seeing and how strong the signal of each one is. Pretty sweet! You can hit the Q button to quit out of cgps.

Chrony


Unless you have a Raspberry Pi 5, the Raspberry Pi does not come with a real-time clock built in. Usually this isn’t a problem because the Pi usually syncs the time from the internet when it boots up. However, if your Pi isn’t connected to the internet then it can’t update the date and time. That’s where the beauty of the GPS from the Icom 705 comes in. We can take the date/time from the satellites and use it to set the date and time of the Pi with no internet required.

Before we do that, we need to install the Chrony program which will talk to the GPS to set the time.

Then we need to edit the Chrony config file to add the commands that will use the GPS as a time source.

Copy and paste the following at the end of the file. Save the file by doing a CTRL-X, Y and Enter.

Restart the Chrony process for this to take effect.

Now run this command to see if the GPS shows up in the list of sources. It might take a minute for it to change. Basically you want the #? in front of GPS to change to #*.

Hamlib


Next we are going to install the hamlib software. This will help the Pi better integrate with the Icom 705. Due to the outdated version of hamlib, we will need to compile it from the source code.

Now we will change into the Hamlib directory.

This will create the configuration files we need to help us compile the software.

This command checks to make sure we have all the components in place to compile.

Now we start the compile process. This might take a little while.

This checks to make sure everything compiled correctly.

Now that the software is compiled, we need to install it.

If everything worked correctly you shouldn’t see any errors. Type in the command below to get back to the main directory before proceeding to the next installation steps.

Direwolf


Next we move on to installing Direwolf which is the brains of the APRS operation. Like we did with Hamlib, we will be installing this from source code as well. Run each command one at a time.

Now we need to configure Direwolf so it knows how to talk to the 705.

The first thing is to look for the MYCALL line and change the call after it from N0CALL to whatever your callsign is. If you’re going to use an SSID then you would add it here. So if your call was W1AW and you wanted an SSID of 1, you would enter MYCALL W1AW-1.

The rest of the commands we are going to add at the very end of the file. These commands tell the Pi how to communicate with the radio and GPS. It also sets up a beacon to ID your station every half hour. You can customize this however you want but this is how I’ve got it setup. So you can either use the arrow keys to get to the bottom or the quicker way is to use the page down button until you’re at the bottom. Copy and paste everything in the box below into your direwolf.conf file. Make sure you use your specific path that we ran earlier using the ls -la /dev/serial/by-id/ command for the line starting with PTT. (you want the one ending in if00) Save the file by doing a CTRL-X, type Y and hit enter on the file name.

Next we need to setup Direwolf so it can start when you boot up the Pi.

This is a new file so just copy and paste everything in the box below into the file. If you’re using a different home directory than the default Pi, then you’ll need to update this in the file. Once it’s in there, do a CTRL-X, type Y and hit enter for the file name to save.

Now run the following command to enable the Direwolf service.

Go ahead and reboot the Pi.

After you log back into your Pi, run this command to show you what is happening with the digipeater.

If everything worked correctly, you should see your digipeater retransmitting any WIDE1-1 traffic that it hears. If you see a warning in Direwolf saying GPS timeout, just give it a minute or two and then you should see something like “Location fix is now 3D”.

Read-only mode


Since the Raspberry Pi doesn’t have a power switch, it’s not a good idea to constantly remove power from it without shutting it down. If you do that, the microSD card will get corrupted and you’ll have to start all over. You could setup a mini network and remote in and send the shutdown command each time, but I have a different solution. We can force the Pi to boot up in read-only mode. This will keep it from writing to the microSD card so abruptly pulling the power won’t give the card heartburn.

Remote in to the Pi and run the following command.

Choose Performance Options (#4) and then Overlay File System (P2). It will ask if you would like the overlay file system to be enabled, select yes. If successful, it will say the overlay file system is enabled. Select OK to move to the next screen. It will then ask you to write protect the boot partition. Select yes and it will say the boot partition is read-only. Select ok, finish and then yes to reboot the Pi. If you need to make changes in the future, you can reverse this process and enable it again when you are done.

Ready to deploy


You should now be ready to deploy your portable APRS digipeater. This was a lot so if something doesn’t work on the first go around, double check your commands. The smallest typo can break the whole thing. If you are still puzzled, please reach out to me and I will try to assist as best I can. Again, there are much cheaper ways of making a digipeater, but I thought this was a fun project since the Icom 705 can provide radio control, audio and GPS all via one USB cable. If you end up deploying your 705 as a temporary APRS digipeater, I’d love to hear how you used it. Thanks for following along on this tutorial!

Video

I also have a video tutorial that follows this blog post if you want to see how things look as you’re installing everything.

Gaia GPS and ham radio

I use the Gaia GPS app on my iPhone for finding and recording various hiking trails around me. I discovered you could import GPX, KML and other files into Gaia GPS. I thought it would be cool if I could add some ham radio items right into Gaia GPS. After some research, I was able to import GPX files from Repeater Book, POTA and SOTA websites.

Repeater Book

  • Go to the RepeaterBook.com website
  • Log in if you haven’t already and click on North American Repeaters.
  • Click on the state you are interested in. I chose Illinois since that is where I am.
  • Choose whichever criteria you want. I chose All for simplicity.
  • You should see a list of repeaters. Click on Export at the top and choose GPX.
  • Click OK on the warning screen.
  • It will ask you to choose what two labels you want. I picked the Callsign for #1 and Location (City) for #2.
  • Check the box that says “I agree to use this data for personal use only.” and then click Download.
  • In your downloads folder, you should now have a GPX file called repeaterbook_repeaters_datetime.

Parks on the Air (POTA)

  • Go to the POTA website and make sure you are logged in.
  • Click on the menu in the top left and choose Park List.
  • Scroll down to the United States and click the triangle on the left side to expand the list.
  • You should see a second listing for United States that shows all the individual states.
  • Click on the state you want.
  • With the list of parks listed, click on the Download link and choose GPX.
  • In your downloads folder, you should now have a GPX file called State(US-State). Mine says Illinois (US-IL).GPX

Summits on the Air (SOTA)

  • Go to the SOTA Maps website and make sure you are logged in.
  • Under Association at the top, choose the area you want to import. I chose W9 – USA since that is where I am located.
  • Under Region at the top, pick the one you are interested in. If you want all of the regions in that group, check the Multi box above the dropdown box. I picked W9/IL, W9/IN, W9/WI.
  • At the bottom of the list of summits, click the export button.
  • As before, choose the association and regions you want.
  • In the output format dropdown, choose GPX file and then click Create File.
  • In your downloads folder, you should now have a ZIP file called SMP_Date_Time.zip. You’ll need to extract the GPX file from the ZIP file before importing it to Gaia GPS.

Importing to Gaia GPS

Now that we have GPX files from each site, we can import them to Gaia GPS.

  • Go to the Gaia GPS website and make sure you are logged in.
  • On the menu on the left side of the screen, click on Import Data.
  • Click on select files and select the GPX file we downloaded from Repeater Book.
  • Check the Waypoints box and click on Import.
  • You should now see a list of repeaters that were in the GPX file. Click the Save Items button at the bottom. This will take a few moments depending on how many repeaters you exported.
  • When it’s done, you should see a list of your repeaters on the map.
  • Repeat these steps to import the GPX files from POTA and SOTA

Changing the icons

I like to change the icons to make them represent each group whether it’s a tower for a repeater or a tree for a park.

  • Click the Saved Items on the left menu.
  • Click on one of the imported files.
  • Click on Items.
  • Click the circle to the right of the first item. Then click the circle above it to select all the items.
  • Click the 3 dots next to the circle and select Set Icon.
  • For the repeaters, I used the tower icon. Type in tower and click the icon and click Save.
  • Depending on how many repeaters or other items you imported, it could take a while to change all the icons. When I did it, I had to repeat this process numerous times until all the icons changed to the new icons.

Now if you go to your phone and login to the Gaia GPS app, you should see the the imported items on your map. Pretty cool isn’t it? You can shut layers off and on as needed so they don’t clutter your phone or slow it down.

Let me know if you have any questions about this process or if you have other suggestions on what to import into Gaia GPS.

You can download Gaia GPS for iPhone or Android below.

iPhone: https://apps.apple.com/us/app/gaia-gps/id1201979492
Android: https://play.google.com/store/apps/details?id=com.trailbehind.android.gaiagps.pro&hl=en

I also made a video on how to import data from Repeater Book, POTA and SOTA into Gaia GPS.

Icom 880H D-STAR radio GPS setup

Garmin GPS 18x PC
I’m slowly rebuilding my ham radio shack after getting rid of everything a few years ago. One of the things I missed the most was the trusty dual band rig in the car. I decided to sell my iPad to help fund the radio purchase. I couldn’t afford a brand new rig, so I looked at the ham classified sites to see what was available. I settled on the Icom 880H 2m/70cm mobile rig. One thing that intrigued me about this setup was the fact that it has D-STAR capability built into it. We have a growing D-STAR network here in Illinois so it seemed like a good idea to have a radio with D-STAR.

When I got the rig, I tried programming a few repeaters in manually just to see if I could do it. The analog frequencies weren’t too difficult, but D-STAR was a bit more difficult. I figured it would be a good idea to program it with the computer, so I ordered the OPC-1529R data cable. I know most folks prefer the RT Systems software, but I decided to try the free Icom programming software instead.

It’s a pretty basic program, but it gets the job done. The problem is there is no way to directly import frequencies from sites like RepeaterBook and RFinder. There is another free programming software called CHIRP that lets you import from these sites. However, getting it from CHIRP into the Icom software is very clunky.

I finally decided to go to the Illinois Repeater Association website and copy/paste the repeaters into a text file. I then opened it in a spreadsheet program called LibreOffice Calc (Microsoft Office works as well) which then lets me sort and filter by regions of the state. Now this still doesn’t let me import into the Icom software. I ended up putting the spreadsheet on one side of my screen and the Icom software on the other and manually typing in the repeaters that I wanted. It’s a time consuming process but at least I can put the frequencies where I want them in the radio.

I have the radio plugged into my Comet CA2X4SR dual band antenna mounted on the door with a Diamond K400 mount. I’ve had this antenna hooked up to other radios over the years and it works great with the 880H. Another nice thing is the radio has a weather alert that lets you know when bad weather is approaching. It also scans air frequencies which are fun to listen to once in a while.

One thing I’ve missed that my old Kenwood D700A had is the APRS functionality. There is a way to get your position on the Icom 880H to the APRS network, but you need to add a GPS to the radio. (most of the other D-STAR radios have GPS built in) I chose the Garmin GPS 18x PC for my setup. It’s a very basic GPS unit with a 12v cigarette plug and 9-pin serial port on it. You hook it up to the Icom 880H with a null modem adapter.

There’s a few things in the radio you need to change before the GPS will work. The first is the data speed which defaults to 9600 bps. You need to change it to 4800 bps for it to work with the GPS 18x unit. Go into the SET menu, then FUNC and then SPEED and change it to 4800. If everything is hooked up properly, you will see the GPS indicator in the top right start blinking indicating it sees your GPS. When it has acquired a good satellite lock, the indicator will stay on.

Another thing you need to change for it to work with APRS is the GPS-TX mode. It defaults to DVG, but needs to be on DVA. It’s in the GPS –> GPS-TX menu. Inside that menu you’ll also want to change your symbol (the icon that shows up on the APRS map), add a comment and enable the direction/speed (DT EXT –> CUR.SPD) if you want that to show up.

You can see my position on the APRS network:
http://aprs.fi/#!call=a%2FK9SWX

Please note that your position will only show up on APRS when you push the PTT button on the microphone. You can set it up to automatically send it every so often, but that is highly frowned upon. (especially if the repeater is linked to a reflector or another repeater.)

I’ve put together a little video about my Icom 880H. Check it out and let me know what you think!

Parts list

    • Note: Some of these links below are affiliate links which means if you purchase the item I will get a commission from the sale.

Please let me know if you have any questions about all of this. Thanks! 73..

Stan – K9SWX

Upgrading the bicycle with ham radio

Well due to inclement weather and faulty pedals, I haven’t been on the bike in a little while now. I took the bike into the shop on Wednesday and had them install fenders as well as replace the pedals. Now the funny part of this is that the guy who worked on my bike is a customer where I work. Due to computer problems, he was behind on his payment so I had shut his service off on Tuesday! So he recognized me when I brought the bike in and I thought ‘oh boy, my bike will be CRW_1514destroyed now!) 😉

I dropped it off on a shortened lunch hour and went back to work. After work, I went over and picked the bike up. The fenders look amazing, they’re black instead of the boring silver ones you see on most bikes. The pedals are all metal instead of those crappy ones with rubber grips that came with the bike. The only thing they charged me for was the fenders, installation and swapping of the pedals was free! The fun part was actually paying. I have this nifty Trek credit card I’m using so that I can ride my bike before it gets too cold, yet pay for it a little later down the road. Well apparently this is something new for the bike shop as it took probably 10 minutes to checkout. (I guess most folks pay with cash, check, or regular credit card??) Anywho, the guy who worked on my bike is in need of computer help so I may be working on his computer in my free time. So that will work out great! 🙂

The hard part was getting the bike in the car as I didn’t anticipate the fenders being on there. I had to be careful not to bend/break them when putting the bike back in the car. I managed to do ok, though I had to do a small adjustment on the front fender as it was rubbing against the tire. After I got that done, it was time to install the goodies that I’ve drooled over. 🙂 I purchased a nifty CRW_1517 Garmin GPS 60csx unit that will ensure that I don’t get lost and let me map out a route should I need to deviate from my normal trip to work. It came with a 64 meg card which was perfect for not only the entire county but the entire state of Illinois including Chicago!

I had considered using my PDA and my bluetooth GPS unit on the bike, but the battery life of the PDA is horrible compared to a standalone unit. I also purchased a dual band ham radio HT (Kenwood TH-D7A) for the bike because lets face it, Stan without some sort of radio on CRW_1515his vehicle is just boring! As with my car, this will allow me to utilize the APRS network and plot my position on the internet! (once I get the cable to hook up the radio to the GPS!) I will post more on this aspect later. I have ordered a better HT antenna for the radio to hopefully be enough to hit the digipeater, but eventually I will probably need to come up with a real external antenna mounted on the back of the bike. (people will think I’m a cop or security guard!)

So this morning I rode to work for the first time in several weeks and it was tough on the old body to get back into the groove. One of the main reasons of getting the GPS was to track not only my location, but to map the elevation between my house and work. There’s a great website called MotionBased that allows you to export your data from the GPS into their site and then they map out all sorts of graphs and data from your GPS log. I’m anxious to try this out and see just how much of an elevation rise/drop on the route I take. I will update this at a later date as well.