Sunday funday in the Tilamook State Forest

This is just a quick post about some light operating I did out in the forest today while getting some target practice in since I’m not really a sports person. The weather was fairly cold, between 35 and 40 degrees F with alternating rain and snow. This post is mostly about what running QRP in decent conditions can do. I set my Lab599 TX-500 up with my Superantenna / Chameleon Mil Whip 2.0 antenna combo and my offgrid Raspberry Pi and access point this morning to see how far I got out from the outdoor “range” we were at. I powered the whole setup with my Bioenno 40Ah LiFePO4 battery and threw my GoalZero Nomad 20 folding solar panel on just to take some of the load from the battery as it’s just a standard practice I engage in.

Map showing connections from my station to others in the continental US and AK.
Screenshot of my signal reports from https://pskreporter.info
Map showing distance between my station in OR and an east coast US station.
Map showing distance between my station and KC1GTU. Generated by https://www.karhukoti.com/Maidenhead-Grid-Square-Locator

The idea was that I was going to try to run JS8Call at QRP on 20m for a few hours. The power levels I ran were 1w, 5w, and 7.5w (for a couple minutes) throughout the day. I generally settled on 5w as I was heard from the southwest, south, along the east coast, midwest, and AK. Bumping the power to 7.5w didn’t really yield any additional responses to my heartbeats so I reduced power to 5w and stayed there for most of the day. My furthest contact via heartbeat and “QTH?” commands was KC1GTU at FN41 (about 2,250NM away at 5w).

Setup photos:

Collage of photos showing my antenna on the left. On the top right is a table covered by a tarp extended from the open hatch back of a Prius to two poles covering a table with a center support extended up from the table top. Various firearms are sitting on the table. On the bottom right is a view inside the open back of the vehicle with disorganized cases, and a radio setup with a tablet.
Very messy setup

Lessons learned:

  • Make sure you set your grid locator correctly in JS8Call. Anyone seeing my station would see me at CN85qm, about 45 miles away from where I really was at CN85hs. (Update: JS8CLI solves this problem.)
  • I could probably run this setup for a whole day on my 12Ah Bioenno LiFePO4 battery.
  • The Lab599 TX-500 continues to prove itself to be a great rig off grid!
  • Don’t bring too much gear even if you’re in a car.
  • The gear performed well below 40F.

Raspberry Pi document server

When operating in a grid down or off-grid scenario it is often important to have access to information, maps, manuals, forms, frequency plans, emergency plans, etc. This guide seeks to explain how to install and populate the document server with info.

First, using either SSH or the terminal application on your Pi install git.

sudo apt-get install git

Next, read the documentation for document-server. This will tell you how to install it and its dependencies.

Once installed you can copy any required documents to the pi user’s Documents folder. I strongly recommend you use PDF and text formats, and images rather than word documents or other formats that require more specialized applications to open. When you load the page using the Raspberry Pi’s hostname or IP address via http://<IP or hostname>. You’ll be presented with your documents! They can now be opened from any device that has a web browser and can open the files you stored.

As extra credit I also create a zip file with all my documents so you can download all the documents at once if need be. This can be useful when you want a copy of all documents so you don’t need the Pi to be powered on in order to read information.

Optional Avahi configuration

In order to advertise services to devices that support MDNS you can add the following configuration to /etc/avahi/services/documents.service and then restart Avahi: sudo systemctl restart avahi-daemon

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">%h Documents</name>
  <service>
    <type>_http._tcp</type>
    <port>80</port>
  </service>
</service-group>

Thinking about off grid / grid down networking and ham radio

Hello all, I wanted to talk a bit about the subject of off grid networking and digital ham radio communications that leverage modern technologies that we use and rely on every day. I’ve been doing a number of experiments that leverage Raspberry Pis, phones, tablets, and laptops in the shack, in the field, and while traveling to operate one or more ham radios.

I’ll go through the ways I’ve configured my field computers to operate in: as a single device, as two or more devices, as devices connected to a $25 travel router running OpenWrt, and as equipment connected to a home network. The reality of this setup is that all my off grid computers work in one of two ways given any situation, but with some subtle differences.

The broad scenario 1 is when one of my Pis detect a wireless network they’re configured to connect to. This can mean they’re connected to a familiar Internet-connected wifi network at the QTH or elsewhere as a client, OR they’ve connected as a client to a wifi network generated in the field by another device designed to operate off grid. This means the device is acting as a standard wifi client.

The second broad scenario that one of my Pis supports is that it does not detect a recognized wireless network and generates its own. Only one device should be in this mode in any scenario. Once a single device generates a network any additional Pis, laptops, tablets, phones, etc. should connect to this Pi which will also automatically serve DHCP, DNS, NTP (in some cases), etc. This host then becomes responsible for handling basic network services as well as its ham radio related functions. There is, however, a drawback to this scenario with my current setup. For some reason my Raspberry Pi 4s and Raspberry Pi Zero W will stop passing network traffic after a few minutes. The solution to this problem is just to re-connect to the wireless network and things work again, but reliability is an issue. If you can’t simply log in and reconnect a Pi you have to reboot it. I address my solution in one of the more specific scenarios discussed later.

By supporting these two broad ways of handling connectivity we can create effective on and off grid networks. This makes sense because the first host that gets powered up has the chance of becoming the master of the wireless network. By coordinating the name of your off grid or standalone wireless network and its pre-shared keys you can create a network that can be formed on the fly, and that can have at least some self-healing properties in the event of a device failure. If all the nodes are capable of becoming an access point with all necessary network services in the absence of another we can ensure our services are available, or are as available as possible.

Let’s start with the five very specific scenarios we mentioned earlier. Notice that these five scenarios are mostly combinations of the two very broad ways our devices are configured to behave.

First let’s say that things are normal and we’re doing some digital HF or UHF/VHF work in the shack. Our local infrastructure is working fine, our Internet connectivity is fast and working well. Because all of our devices are clients on our home network we can use any device to access VNC, SSH, HTTP, or Winlink services on our Pis without issue while watching our favorite streaming service. All the Pis we have powered up are clients to an established network.

Secondly let’s talk about a scenario where we’re on battery but no configured wireless networks are available. Maybe we’re in an emergency scenario, camping, or on the road. Our Pi attached to our radio generates a new wireless network that you can connect to and starts the necessary DNS, DHCP, or even NTP service to allow wireless clients to connect and use provided services. Maybe this Pi is running JS8Call/FlDigi or Pat Winlink. You just connect your phone, tablet, or laptop to this network and access the documentation web server, Winlink web page, or use VNC/SSH to control the Pi. We’re now able to communicate using our radio via digital modes and read any documentation we stored on the Pi. It should be pointed out that none of my field-portable Pis have keyboards, displays, or monitors of any kind when in normal use. I rely on other devices for those functions to cut down on power consumption and bulk.

Our third scenario assumes one operator with no configured wireless networks, but is running two radios. Maybe we have one Raspberry Pi attached to a UHF/VHF radio that’s set up for packet Winlink, and another HF rig running JS8Call. The Raspberry Pi that booted first is serving our wireless network and basic network infrastructure services that allow subsequent devices to connect. The operator is now able to connect to to the generated wireless network and use Pat Winlink as well as JS8Call or FLDigi. One person and one device can now manage two radios set up for different purposes! The trick is that we might not have 100% due to the connection issues with Pis when they’re in access point mode.

For our fourth scenario we’ll modify the last scenario a bit. We have one operator with one device connecting to two radios over the wifi connection. This time we’ll introduce our modified $25 wireless access point. It’s now generating the wireless network, serving DHCP, DNS, and NTP if one of our Pis with GPS units is connected. All Raspberry Pis are now in wifi client mode so we no longer have the connection reliability issues in our second and third scenarios! What’s even better is that if we have a wired Internet connection we can now plug that into the travel router and have full Internet connectivity for our Pis and operator’s device. Sweet!

Our fifth scenario builds on the fourth, but we’ll introduce one or more operators using one or more devices. This could also apply to the third scenario with a Pi hosting the wireless infrastructure without an access point but we’ll ignore that. Every radio operator connected to the wireless network can now queue up e-mail on Winlink or take turns using VNC to control our HF rig. All the operators on the network now have access to the documentation server because it’s just a web page that serves files. We now have a field network that can serve more than one radio operator, and we can be more efficient sending email over Winlink by batching, and we can also decide to create an APRS server that allows multiple instances of APRSDroid or some other KISS over TCP client to connect if we’d like.

I hope you came away from this thinking about different ways we can build resilient and flexible systems even when working off grid or in emergency situations. A minimal amount of additional hardware combined with some preparation ahead of time can allow us to use more efficient or sometimes required digital technologies off grid and can even allow a group of operators to save power by sharing radios and batching messages rather than dealing with the overhead of connection setup for modes like Winlink!

A random field day (Jan 16, 2021)

I had the opportunity to spend a few hours in the Oregon countryside while my partner had a meeting. Naturally I decided to do deploy my new radio, the Lab599 Discovery TX-500 along with my second purpose-built digital comms Raspberry Pi. The other is used with my Yaesu FT-857D.

Picture of radio equipment in the back of a Prius along with a folding chair facing the hatch back.

I began by setting my rig up in the trunk of my car. Since I wanted to at least simulate running off grid on battery I didn’t connect my radio to the car and opted to use my 40Ah Bioenno LiFePO4 battery. I had intended to bring my smaller 12Ah Bioenno LiFePO4 battery which was actually purchased for the TX-500 kit, but I had spaced it and left it on the charger. Despite the cloudy weather that is typical of Oregon this time of year I also brought my GoalZero Nomad 20 to see if I could extend my runtime even if slightly and to give it a good test. Every little bit of extra juice helps, but I only used 1.8Ah of battery the entire 5.5hr deployment! The solar panel did provide an additional 0.8Ah which is 44% of what the battery provided.

Folding solar panel placed on top of the car roof with cable running to hatch back.

Solar panel on the car and facing south

Buddipole power mini lashed to a 40ah LiFePo4 battery
Buddipole Power Mini and 40Ah Bioenno LiFePo4 battery.

The first antenna I deployed and ran was my Superantenna kit, but instead of using the titanium whip supplied with the kit I added the Chameleon Mil Whip 2.0 to get more efficiency and significantly wider SWR bandwidth. I tuned the antenna up for 20m using my NanoVNA and ran JS8Call on the TX-500’s dedicated Raspberry Pi… using my tablet as a keyboard and screen over VNC. I had a number of successful contacts from the Southwest to AK and managed to relay a text message to a friend in NM via an operator in-state running 9w!

Superantenna deployed on a tripod topped with a Chameleon Mil Whip 2.0.
Superantenna w/ tripod and Chameleon Mil Whip 2.0

I did try to make some SSB phone contacts but there was a contest going so I didn’t really get too far. As the sun started going down I noticed the 20m band was starting to close, so I tuned to 40m and the contest was still going on so I wasn’t able to make any contacts. It can be difficult to raise anyone during a contest because a lot of folks are talking and running high power so it’s very easy to be drowned out.

In general I also like to try more than one antenna or antenna configuration per deployment so I set up my Chameleon EMCOMM Portable III in an inverted “V” configuration with the center point hung using an arborists’s weight and some paracord in a tree. I was able to make some JS8Call contacts and was able to hear a lot of distant operators. Again, I was unable to make a contact using SSB phone despite the fact that the tuned inverted V configuration should technically be more efficient than a loaded vertical. I’ll need to do another test on another day.