A new CLI utility and daemon for JS8Call!

Hello all, I wrote a new utility for JS8Call. It can be found at https://github.com/ThreeSixes/js8cli. JS8CLI has been in the works and moving slowly for the last couple months. This new utility replaces the some of the functionality of the JS8CallTools GUI with command line functionality and can run as a daemon in the background. I also added a few features to this that probably should already be in JS8Call such as automatic GPS location support and the ability to update APRS position information via JS8Call automatically and periodically. This utility also allows you to send SMS messages via APRS from the console over JS8Call.

JS8Call sending a text message driven by js8cli being run in a command line window.
Screenshot of the CLI utility feeding JS8Call

This utility leverages JS8Call’s API and can run in either TCP or UDP mode. I also wrote a Python 3 class that can be used to interface with JS8Call’s API which isn’t really documented though it’s fairly simple to use (see mainwindow.cpp). It’s mostly just JSON sentences sent over a network stream to the application.

The JS8CLI application is also a good citizen and leverages GPSD to share the GPS with other applications rather than bogarting the serial port. This also makes it possible to get position information from another host on a network. This could be useful in fixed or networked applications or cases where a GPS needs to be remote. The SMS functionality doesn’t require GPS capabilities at all.

Cold weather backpack setup test

So, the weather in Portland has been pretty snowy which is a touch unusual! As most folks have been inside and not out attempting to drive on icy and snowy roads which are not plowed I decided I’d take my HT for a walk in the cold weather and test methods of keeping it warm enough to not have the battery fail as the temperature is dropping to ~18F with wind chill. My partner and I have been walking to the grocery store and taking our dog out so I decided to test an external antenna I’d built to mount on my backpack a year ago in the gnarly weather. I did some tests with APRS and some 5w FM phone as well. The theory here is that keeping the HT inside the fairly sealed bag would preserve some amount of air that’s warmer than the bag’s surroundings. It seemed to work as I was out with this setup for a few hours at a time and battery performance was within expectations.

Snow and ice covered backpack set on a snow-covered sidewalk with counterpoise extending down and antenna extending up.
Setup covered in ice and snow.

In order to not go stir crazy I’ve been taking walks with my partner and we’re close enough to a grocery store to just walk and pack our food in our bags which is very fortunate. I’ve taken the opportunity to test different ways of carrying the HT so it doesn’t get too cold, and to test a MOLLE antenna holder with a simple antenna and counterpoise setup. During the grocery store run pictured below I was able to reach stations in SE and NE Portland with a strong signal. I was between 2 and 9 S units into a station in Battelground, WA as well depending on structures around me. The antenna I’m using in this picture is a Nagoya NA-771. I used that instead of my Signal Stick because the signal stick doesn’t stay rigid in cold temperatures and will curve and lay over giving poorer performance. The speaker mic was used as both a speaker that I could hear outside the bag and as a sacrificial component in the event something gets too wet. A $30 speaker mic is much cheaper than a new HT. I did test the SWR on this setup and 2m performed very well near 1.2, but 70cm performance was poor with the SWR being near 2.8.

The small bit of orange paracord is used to secure the speaker mic for cable routing purposes. When the mic comes un-clipped intentionally or on accident this cord makes it easier to grab and replace or remove and use. The longer orange paracord holds the weight of the HT in side the bag so the antenna cable and speaker mic don’t hold it up. It’s also necessary to hold it up in the bag to make sure there’s enough speaker mic cable to reach outside the bag and to my shoulder.

HT in the bag suspended by paracord.

The HT holder inside the bag is suspended by the longer bit of paracord that runs through a loop on the HT holder. This suspension system also makes it easy to load the bottom of the bag with heavier items that might otherwise crush the HT or damage connectors.

The above gallery shows the antenna assembly set up but not mounted to the webbing on the backpack.

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.

Successful Portland NET simplex exercise!

Hello radio enthusiasts, geeks, etc.! Tonight was my first exercise as a certified Portland NET (Neighborhood Emergency Team) ARO (Amature Radio Operator). We operated on simplex nets tonight throughout the city in order to practice communicating directly with each other and PBEM in the event city wide repeater networks failed during an incident.

I decided to test from my staging area tonight rather than operate from home… last time I was out I couldn’t get Pat Winlink going, and I have some new gear to test tonight: a legit collapsible table and a GoalZero LED lantern! There was supposed to be rain tonight, and the plan to cover myself and the top of the table in a tarp and work under it but alas it wasn’t necessary. The rain stayed away and I didn’t need to test my half-baked idea.

My partner and the doggo came out again and hung out with me as I operated. Most of the photos of the deployed setup and of me operating are hers taken for the blog. I should note that I don’t have her help me do any actual setup or tasks related to station operation. The idea is to make sure that I can manage all aspects of setting up, transporting, and tearing down the station without assistance.

Me sitting at a lamp-lit table with a radio on top at night, the antenna mast is in the background.
Set up at my staging area.

Setting up was pretty smooth today even in the dark. I unloaded the antenna mast and propped it up. The table was then set up and the J-pole was mounted on the non-conductive part of the mast. The second half of the 2m element was attached. After that the feedline was connected to the j-pole and the Kenwood TM-V71 was set up inside my weatherproof backpack along with the wireless access point, Winlink Pi, and 20Ah Bioenno LiFePo4 battery. With that and the ARO binder set up I powered the radio up and the resource net was just beginning.

I managed to check in just fine and the resource net controller and had an excellent signal at 5w (minimum power the radio can do). For this exercise the resource net did directed check-ins by call sign suffix. It was pretty smooth and orderly and net control did a good job. There were quite a few participants from various neighborhoods and I could hear almost every station. After all stations had checked in the subnet controller for each city region would announce their frequency and have all operators in that region move to their regional net as specified in the procedure that was sent out ahead of time. It should be mentioned that I uploaded the procedure for the exercise to the documentation server on the Raspberry Pi ahead of time as well. I was, however, missing the Multnomah County ARES frequency template. I need to make sure I have that on the document server.

Antenna mast made of a speaker stand with a wooden closet hanger deployed at the top. Open stub J-pole antenna is fixed at the top.
Antenna mast and antenna deployed

Once on the regional net we checked in using our tactical call signs. We exchanged signal reports and everyone on the net was a 5 (readability) to me which was very nice, and my signal was a 3 or above to everyone else. It looks like my staging area is pretty good in terms of connectivity to the other stations in my city region (Alameda South). Interestingly one of our operators that generally has a great signal to all stations had some trouble hearing the nearby subnet controller. I suspect there might be some multipath interference between that station and the subnet controller resulting in an unexpectedly poor signal.

Table top lit by LED lantern with a backpack containing a radio, a tablet, and zipped 3-ring binder with a partially filled form 8 and a pen on top.
Table setup with form 6 (ICS 309) in a binder, my tablet, and radio gear in a weather resistant backpack.

As we operated the radios we also filled out a form 6, or ICS 309 to track events and messages on our radios. These forms are used to document events and messages during an incident or exercise. When passing messages we fill out or voice form 8s (ICS 315), but we didn’t actually do one tonight.

Once we concluded talking on our regional nets we checked out of them using our tactical call signs, and then tuned back to the resource net and checked out there as well. It took a while to get checked out as there was a lot of doubling (more than one station transmits on the frequency at the same time interfering with other stations). It’s hard to coordinate stations by call sign suffix arriving on the resource net at random times even though the resource net controller was doing a great job.

Everything was good so far! Now it was time to attempt to send e-mail again after my last failed attempt. This time I managed to use the Winlink host and an Android tablet to send an e-mail to both OH8STN and a friend from my staging area over VHF. I had a lot of trouble sending e-mail at first. While the wifi network and applications worked just fine this time I had some challenges sending e-mail due to odd issues with the content. It seems that if the body of he e-mail or subject is too long there are protocol errors. After a few experiments I was able to finally get the messages out.

Time to break down and get some dinner! Breaking everything down was super-smooth this time around. There were no issues and everything packed away nicely! I just rolled the wagon back home and unloaded it!

Folding wagon with cloth sides loaded with equipment lit by street light. The collapsed antenna mast is  sticking from the back of the wagon.
The ham hauler loaded up on the way back home.

Lessons learned:

  • A table makes life a LOT easier when doing this sort of deployment.
  • The Goal Zero LED lantern wokred very well. The adjustable light level is very nice, and even with half the lantern on at the lowest possible power was more than enough for the vast majority of tasks I had to perform from setup to operating and filling forms to breaking down. I did increase the light level a couple times for specific tasks, but I didn’t need to keep the light level up.
  • Make sure you have all the documents you’ll need with you including frequency lists.
  • Having exercise-specific and general guides at your fingertips is a good idea. It helped in this exercise.
  • It takes 45 minutes from loading equipment to being on air for my staging area under more-or-less ideal conditions in the dark.
  • Some changes to the J-pole made it work a lot better in the field. I’ll post an entry the modifications I made.
  • My power cabling was really messy. I could do better.
  • It didn’t rain but I need to figure out a shelter that would protect the table top from wind and rain that can fit in the bag with the table.
  • The exercise seems to have gone well broadly. The check-in process was pretty efficient.
  • The check out process was a bit chaotic but maybe we could implement a system whereby net subnet controllers check into the resource net and once that happens the resource net controller adds that subnet controller’s region to a directed checkout by region. We could cycle through regions until all stations check out.