Thursday, February 20, 2020

HF APRS with JS8Call

How to configure JS8Call to report your location into the APRS network

  1. Find your 10 character grid square, K7FRY has a great tool Find QTH or map square built in Google maps that lets you find your location, click on the map and it displays your 10 character grid square.
  2. In JS8Call, File > Settings > General, enter the grid square in the My Maidenhead Grid Locator box.
  3. In JS8Call, File > Settings > Save messages > add a new message: @APRSIS GRID <MYGRID12> and OK to save. Note: JS8Call will replace "<MYGRID12>" with the value from My Maidenhead Grid Locator set in step 2 when the saved message is selected and sent next.
  4. In the main JS8Call window right click in the Message(s) or outgoing message box > Saved Messages > select your saved @APRSIS message to send it.
When I selected the saved message to send, my location appeared on with-in about a minute:

(Click for larger/clearer image)

Here I am, shows it came from JS8, was on 30m band, and a SNR of -12dB. It was received by one of WB6CXC's dedicated gateway receivers.

After sending the occasional @APRSIS messages with my grid square over the several days it seems to work on 80, 40, 30 and 20m bands, even when there is no JS8Call activity it appears enough people leave it running to receive and forward the messages. Overall 40m has been the most reliable at any time, and looking at who's hearing me on the different bands on shows 40m having by far the most stations receiving my APRS messages.

Taking it Mobile

This is work in progress..

Raspberry Pi Model 3 B+, Raspbian Buster with desktop.

JS8Call for Raspberry Pi from

GPS for the Pi

GlobalSat BU-353-S4 USB GPS Receiver.

To get this GPS working:
  1. Plug the GPS in, open a terminal window.
  2.  sudo apt-get update
  3.  sudo apt-get install gpsd gpsd-clients python-gps
  4.  dmesg to see where the GPS was mounted, /dev/ttyUSB1 in my case. This will depend on what other USB devices are connected.
  5. Edit /etc/default/gpsd to match this post on askubuntu and where our GPS was mounted.
  6.  sudo /etc/init.d/gpsd restart
  7.  cgps -s
  8. Had a GPS fix, hit q to exit cgps.

Sync time via GPS (I got the details from here):
  1. Install Chrony: sudo apt-get install chrony python-gi-cairo
  2. Edit /etc/chrony/chrony.conf add this to end of file (one line): refclock SHM 0 offset 0.5 delay 0.2 refid NMEA
  3. Restart Chrony: sudo /etc/init.d/chrony restart
  4. Check Chrony's sources: chronyc sources -v


Now the magic part, some software to glue it all together and send updated positions via JS8Call.

First, enable the UDP API options in JS8Call under Settings > Reporting.

Mark M0IAX created an app written in Python called JS8CallUtilsGPSD, this can be configured to automatically start with the TX timer enabled, Auto TX Grid to APRSIS enabled, and the position precision increased to 10 character grid squares. To install this:

pip3 install OSGridCoverter
pip3 install maidenhead
pip3 install serial
pip3 install configparser
pip3 install gps
git clone
cd JS8CallUtilsGPSD
chmod +x

On the first run it creates some config files we need to edit, close the app.

If we want 10 character grid squares which are fairly precise, edit gps.cfg, and under the [LOCATOR] section: precision = 5

Automated Startup

The rest of this relates to automating the startup of everything for use in a mobile, so when the vehicle is started everything turns on and sets it self going, and when the vehicle is turned off everything shuts down again. This consists of:
  • Making another config file change with JS8CallUtilsGPSD.
  • Configuring some options in JS8Call.
  • Setting up a script that starts JS8Call and JS8CallUtilsGPSD when the Pi boots.
  • Some hardware to automatically switch the rig on and off, and signal the Pi to turn on and cleanly shut down.

Edit js8call.cfg, under the [APP] section:

AutoTimePeriod = 10
AutoOnAtStart = 1 
AutoSelectedOption = 1 

AutoTimePeriod is the number of minutes between sending a new position.
AutoOnAtStart enables the timer on startup.
AutoSelectionOption sets the Auto TX Grid to APRSIS option.

Now when is run, it'll count down from 60 seconds to the first transmit, then every 10 minutes after that.

Configure JS8Call to automatically transmit messages from JS8CallUtilsGPSD:
  • Auto TX the message in JS8Call when JS8CallUtilsGPSD sends an updated position, Mode > Enable Autoreply.
  • To enable autoreply when JS8Call is started, Settings > General > Networking & Autoreply > check Turn autoreply on at startup.
  • I also enabled Settings > Radio > Rig Options > Hold PTT between frames. I don't see a use having the rig go back to receive for 2 seconds between frames.

Next we need a script that runs when the Pi boots that will start JS8Call and JS8CallUtilsGPSD for us, this requires an autostart file and a shell script. See which includes setup info.

So far so good!

I'm currently running this setup under test in the shack on 40m, except on a 3 hour timer. Raspberry Pi with the auto startup script, Icom IC-7300 at 10W into an OCFD at 45ft.
PSK Reporter:

Switching the rig and Pi on and off

I also want to automate the powering on of the rig and Pi when the vehicle is started, and also power the rig off, and cleanly shutdown the Pi when the vehicle is turned off.

For the rig I found this Powerwerx DC Automatic Power Switch/Timer which senses the vehicle voltage. It will switch the output off after a set amount of time when the voltage drops below 12.7V, and back on again when the vehicle is started and the voltage is above 13V.

With a 15 min power off delay and 10 minute position reporting interval we can report the finial position after stopping and turning the vehicle off.

For the Pi, Mausberry 4amp Car Supply / Switch which can use the output from the automatic power switch as the ignition signal to safely shutdown the Pi and power it on again when it turns the supply back on. The Pi can automatically start JS8Call etc when it boots.

Power cabling to power the IC-7300 from a cigarette lighter socket (These are fused at 20A in my car, the IC-7300 draws about 13A at 40W).
12ft Car Cigarette Lighter Extension Cable, 15A 250V Fused
30A 1M Fuse 4 PIN Cable for ICOM


I have ordered a pair of 40m and 20m band Hamsticks (7ft versions), and a Comet HD-5-3/8-24 lip mount from my favorite outlet of hamradio equipment.

These arrived on Feb-21, out of curiosity I laid the aluminum latter I had in the shack on the floor and set up the 40m antenna and the lip mount, send an APRSIS message on 40m with 30W, two stations heard me and my position made it into the APRS system, map from

(Click for larger/clearer image)


For some time I've been intrigued with APRS over HF, while the VHF APRS system is very good, and easy to use with modern rigs like my Kenwood TH-D72A you're limited to being in range of an iGate or digipeater - normally not a problem in most populated places, and even many sparsely populated places.

When I drove from Fairbanks Alaska to Seattle in May 2014, I ran VHF APRS with a 50W rig and decent antenna on the car, with a couple of exceptions (Tok AK and Whitehorse YT) once I was out of range of the digipeater in Fairbanks the coverage was non-existent until I was half way through British Columbia where the coverage was excellent all the way to Seattle. During the trip I shared the tracking link on with friends, and some of them got a real kick out of watching my trip progress on a map each day, including a couple goofups I made with wrong turns, one where I had to back the car with trailer back down a street the GPS "thought" looped around, but was a dead end.

APRS on HF? Seems current information on this subject is scarce. Some searching found which describes using 300 baud packet on the 30m band, for fun I got SoundModem and APRSIS/32 running (I disabled its internet access so the map didn't fill up with stuff, and would just show what I had heard), and over a couple days spotted some beacons, including some from WA8LMF who was reporting the location of the ISS. I took at look at Stephens website and found more info on HF APRS using PSK63, but after a couple emails with Stephen it turns out the author of the application called Cross Country Wireless APRS Messenger that does PSK63 has stopped developing it and removed it from download, but noted at the bottom of the page suggesting using JS8Call's ARPS function. So I looked into that..

At this time the JS8Call Guide nor any other info I can find tells you how to successfully send your location via JS8Call and have it show up in the APRS system, e.g. on This YouTube video by OH8STN refers to an earlier version of JT8Call (later renamed to JS8Call), the message syntax has since changed. Digging around in the JS8Call group I found this post which was the clue to adding the saved message using the @APRSIS group.

Wednesday, December 25, 2019

Audio-technica BPHS-1 and Icom

I received a Audio-technica BPHS-1 headset for Christmas from my wife :-) The BPHS-1 looks to be a quality headset that is well rated on Amazon, Audio-technica's site and other places.

K8JHR wrote an article called Headsets I have tried, like or recommend which includes the BPHS-1.

I quickly discovered that Icom rigs (and Elecraft) are setup for electret condenser microphones, where as the rest use dynamic microphones. Electret mics are powered, dynamic mics are not and are about 20 dB lower in level. The BPHS-1 uses a dynamic mic.

Will a dynamic mic work with an Icom? Maybe..

Next, cables. The BPHS-1 comes with a cable that has a 1/4" plug for the headphones and a 3-pin XLRM-type connector for the mic.

  • First, the mic pin in an Icom supplies 8 VDC for the electret mics they use, when used with a dynamic mic we need to use a DC blocking capacitor otherwise the magic smoke will come out. Heil recommends a 1 uF tantalum (noted in link above), some posts on QRZ suggest anything up-to 10 uF is good. I found some 2.2 uF 16V tantalum capacitors on Amazon, these are polarized so the positive leg should connect to the mic pin in the Icom.
  • Mic side: Need a female 3-pin XLRM, I chose this cable from Amazon, can cut to length and wire into a 8-pin Foster mic plug with the DC blocking cap for the Icom's mic socket.
  • Headphone side: 1/4" to 3.5mm adapters are easy to find, thou I prefer a short cable here so the 3.5mm jack in the rig doesn't have an adapter and 1/4" plug hanging out of it. A quick search around Amazon finds MillSO 1/4 to 3.5mm Headphone Adapter, TRS 6.35mm Female to 3.5mm Male 1ft cable.
  • A cheaper option is to just cut the 1/4" and 3-pin XRLM plugs off, put a 3.5mm plug on the headphone side, and 8-pin Foster mic plug on the other plus the DC blocking cap.

Parts ordered, plan to have it together next week..

Parts arrived yesterday 29 Dec, I installed the DC blocking cap into the mic plug, I found I could fit it in-between the unused pins:

I cut the XLRM cable so it matched the 1/4" to 3.5 mm adapter cable length, and it looks like this:

Wiring diagram: Headset diagram from BPHS-1 manual (left), the mic connector diagram is from my Icom IC-7300 manual (right), with the connections shown as I wired it:

The shield (shown in green) I folded back in the mic plug and "clamped" in with the strain relief so it's grounded to the frame of the radio via the plug.

After adjusting the mic gain and compressor settings on SSB, I found mic gain at 80% and compressor at 5 would drive the IC-7300 about the same as the supplied hand mic with mic gain at 40% and compressor off. I did this by doing several comparisons watching the RF power output and listening to my self via the rigs monitor function with the headset on.

I have yet to do an on air test on SSB. I was able to do a quick test on a 6 m FM repeater, on FM the speech compressor option is unavailable and with the mic gain set to 100% the deviation is too low.

Sunday, December 22, 2019

AL-80B Keying Interface

KV5R wrote a nice article (Amp Interface) on building a solid state keying / relay interface for use with Icom rigs, using an SPST-NO MOSFET switch. I also have an Icom rig and an Ameritron AL-80B.

The nice thing about this is it's super simple, much faster than a mechanical relay and is opto-isolated.

I had ordered some parts for another project a while back, part of which was to rebuild the keying interface so I could key two devices. That project got shelved, but today I decided to rebuild the interface as originally planned since I had the stuff to do it.

Version 1 (with the heat shrink removed):

I had this hanging out the back of the rig, that was ok.

Version 2:

Only the orange and grey wires are used from the Icoms pigtail, the rest are just tucked out of the way.

The solid state switch's control voltage is 3 to 10V, but work ok from 12V. With two of them I wired them series for use with the rigs accessory jack which supplies 12V when keyed. With this I can independently key two separate devices with a closing current of 3A at up-to 60V each.

Parts I used:
  • Project box is a "Zulkit Waterproof Plastic Project Box ABS IP65 Electronic Junction box Enclosure Black 3.94 x 2.68 x 1.97 inch (100X68X50mm) (Pack of 2)", from Amazon. I have found it quite difficult to find good project boxes.
  • DIN plug and pigtail came with my IC-7300, I simply cable tied once for strain relief and a second time looping it through two small holes I drilled to stop the cable from rotating. This secured it nicely since I didn't have anything better on hand.
  • Solid state relay is a Crydom DMO063, Mouser part # 558-DMO063. Can also be found on Amazon, and other places.
  • Barrier Terminal Blocks TERMINAL STRIP 6 LUG, Mouser part # 158-1006.
  • RCA Phono Jack, Mouser part # 490-RCJ-032.

Monday, December 16, 2019

Ameritron AL-80B AM Operation

Since I get into a bit of AM on 75 m, I had wondered about using my AL-80B for some extra Amplitude Modulation power :-)

While chatting on 75 m AM today I raised the question about using an AL-80B on AM. A couple of the ops in the round table we had going said they work great, in-fact one who later joined-in was using an AL-80B!

Setting up an AL-80B for AM use is pretty simple, the goal is 100W unmodulated carrier power on AM from the amp.
  • With the Icom IC-7300 set to 30% / 30W on RTTY mode, tuned the amp, this delivered about 400W output.
  • Switching to AM I reduced the drive power (to 20% in my case) to where I got 100W unmodulated carrier power from the amp, modulated voice peaks are around 300W PEP.

With this configuration I found that anode would start to show a dull cherry red color after a few minutes of transmitting which is perfect for the 3-500Z tube.

Signal reports from the group indicated going to 100W carrier power made a worth while improvement over the 25W carrier / 100W PEP from the IC-7300 on AM.

The AM operators in the Pacific North West are a friendly bunch, if you enjoy informal round table QSOs that can last a while, then this is the place (3.870, 3.877 and 3.885 MHz).

Wednesday, November 27, 2019

New Desk version 2

Earlier this year I got some IKEA for the shack, the setup was ok for ham radio use where I might spend an hour or two.

The company I work for offers the luxury of working from home up-to a couple days a week (perk of working in tech) which I've been doing more of recently. I was finding the ergonomics of my IKEA setup not great after 7 or 8 hours of use.

I needed something better. After some searching I came across Cymax Bush Business Furniture, yes it costs a bit more but the quality is good with a 10 year warranty. I got the Bush Business A-Series Left Corner Office Suite in Hansen Cherry, which is just two Series A 36W Desks and a Series A 48W Corner Desk.

Much better!

The Bush Business setup was just over $600 delivered, not cheap but the quality is there. Feels solid and can handle up-to 200 lb / 100 kg, ideal for those heavy vacuum tube amps. They shipped fast too, ordered Saturday delivered Wednesday morning, had it assembled and in-place by the end of the day.

Previous setup:

The three IKEA draw sets are now under the window just out of view on the right in the first pic, these made up most of the cost of the previous setup, the two IKEA table tops were $30 each at the time I got them so no big deal.

Saturday, November 16, 2019

A Better Off Center Fed Dipole?

Experimenting with OCFD models, I discovered adding 175 pF series capacitance at the feed point moved the resonance on 80, 40, 20 and 10 m into the phone (SSB/AM) segments of these bands. I call this an "FPL-OCFD" (Feed Point Loading Network).
  • 80 m - 3.8 MHz, SWR 1.6:1.
    The result falls out of the length and cap value that works best for 40, 20, 10 m.
  • 40 m - 7.2 MHz, SWR 1.33:1.
    Nicely centered across the phone segment.
  • 20 m - 14.275 MHz, SWR 1.3:1.
    Favors upper end where most activity is in North .
  • 10 m - 28.4 MHz, SWR 1.17:1.
    Favors the phone segment of the band where most activity is.

What else can we get out of this? 17 m is close, resonance is just below the band. 12 m looks good. 6 m resonance is just below the band again.
  • 17 m - SWR 2.5:1.
    ATU will take care of that one.
  • 12 m - SWR 1.36:1.
  • 6 m - 50.0 MHz, SWR is 2.5:1.
    SWR goes up from there. Can't win em all.

Model parameters using EZNEC:
  • 41.3 m wire.
  • 33% offset.
  • 175 pF cap at balun / feed point.
  • 12 m / 40 ft height above ground.
  • 13 AWG, 0.5 mm PVC insulated wire (The Wireman 531 material).

This capacitively loaded OCFD relies on the antenna being physically too long. The capacitive loading network at the balun / feed point has the desired electrical shortening effect, which is greater lower in frequency where it's need more.

My goal was to find something that at a minimum moved 80 m resonance somewhere between 3.7 - 3.9 MHz, and favors phone the segments of 40, 20 and 10 m with low SWR. This satisfies my solid state rig with out needing an ATU, and gives the AL-80B a good match. It's an order better than a conventional OCFD where 80 and 40 m resonance are below the bands, 20 and 10 m end up high in my experience.

I credit the idea of adding capacitance to ON4AA's "CL-OCFD" design which moves the resonance on 80 m (and optionally adds 30 m too). This one locates the capacitor at the center of the antenna, which only affects 80 m and odd harmonic resonance. K5GP's "A broadband 80/160 meter dipole" is another example of using a center loading network.

After a lot of searching, I managed to turn up a couple of references where a capacitor is placed at the balun:

20 m 3D Far Field Plot:
20m 3D Far Field Plot - GAL-ANA

SWR Plots:
80 m SWR 40 m SWR 20 m SWR 17 m SWR 12 m SWR 10 m SWR

The modeling results are a surprise, it was literally a "what if.." thought one morning to place a cap at the balun to see what would happen. I got started building it last weekend, hopefully try it out soon time and weather permitting.

A copy of the MMANA-GAL model I started with, and the EZNEC model can be found at

This modeling exercise started out in MMANA-GAL which I've been using over the last year to teach my self with. I decided to cross check the results with a demo version of EZNEC.

EZNEC offers a high accuracy ground model (recommended with antennas under 0.2 wave length above ground), and can model the effect of wire insulation. With the ground conductivity configured for my location and insulation defined, I found I had to shorten the antenna model nearly 1 m / 3 ft and increase the value of the capacitor from 150 to 175 pF compared to the MMANA-GAL model.

After spending a few days with EZNEC and the well written manual I decided it was well worth purchasing.

Update 01 Dec 2019:

I got the antenna assembled and up semi inverted V, with out the cap for now.

SWR sweep:

As expected resonance is low on 80, 40, 20, 17, 12 m. 15 m unexpectedly is under 3:1, 10 m pretty good.

Update 08 Dec 2019:

The trees between the front and back yard are too close together by about 15 feet for the 90+ ft long leg. The best I could do was run the long leg from the front yard tree to the tree in the back yard, with the balun hanging between the last 15 ft of the long leg and where the short leg is tied off, but the tension needed to get most of the sag out is more than I can supply which causes the short leg to get mixed up in the lower branches of a Maple tree.

Tried to find a solution with EZNEC using a 80 ft / 50 ft or so split, no dice with an offset much other than 33%.. Well, the positioning of my trees sure has let the air out of my tires on this one..

I may be-able to get the antenna situated by bending the end of the long leg down and hanging the balun further out on a limb. That's easier said than done in cold rainy weather with a pair of Maple tress in the way that snag wire anytime it gets near..

For now I have left the capacitor out and shortened things to get 40 m and 20 m to fall into place, still needs a couple more tweaks. This improved 17 m and 15 m, but need ATU to dial them in. 12 m looks good, 10 m is towards the upper end of 28 MHz. 80 / 75 m SWR is 1.5:1 at 3.650 MHz rising to 2:1 at 3.850, and 2.8:1 at 4 MHz. I have a harsh sounding noise level on 80 m up-to S9 at times, the next crusade might be see if it's originating from with-in our house and eliminating it.

Receive wise it works as expected, not had much time for QSOs except some 75 m AM during the day using the IC-7300 barefoot (25 W carrier power / 100 W PEP) with good signal reports.

Update 15 Dec 2019:

After some more trimming:

  • 80 / 75 m centered on 3.750.
  • 40 m centered on 7.000 - SWR rises to just under 2:1 at 7.300.
  • 20 m centered on 14.200 - SWR low across the band.
  • 17 m centered on 18.075 - SWR is under 1.5:1 across band.
  • 15 m SWR 2:1 at bottom, 1.8:1 at top of band.
  • 12 m SWR under 2:1, resonance moved above the band.
  • 10 m SWR good across the band.

I need to trim the short end maybe 10 cm or less to pull 20 and 17 m up a little more, wont make much difference on 40 or 80 m.

In essence I may have wound up with something fairly reasonable with out needing a loading network. 15 m is close enough to be a bonus, and I exchanged a good match on 12 m for 17 m which is more useful during solar minimum. 40 m is a bit low, 10 m sweet spot at 29.3 MHz, but its good enough for a weekly net or two around 28.4 MHz. 80 / 75 m is much higher up the band than expected, the last two OCFD antennas I've had previously would favor the bottom of the band.

Overall I'm pleased with it given the situation.

I still want to explore how the FPL (Feed Point Loading Network) shapes up in practice, maybe next summer.

Thursday, October 17, 2019

WSPR - Turning off MW Band Attenuation for 630m

About three weeks ago I decided to turn off the MW band attenuation in the Icom IC-7300 - this is a sub menu option in the settings that is on by default. Wow what a difference! I started spotting stations much further away from Australia, Hawaii, Alaska, midwest to the east coast.

I've been spotting these stations semi-individually on and off, finally got a good selection of them in one night:
  • VK4YB - Roger's 630m antenna is something else.
  • K9FD - on a former AM broadcast site with radials intact on an Island, dream location!
  • K3MF
  • K5DNL - holds the distance record for a QSO on 630m with VK4YB!
  • KL7L

The antenna I'm using on receive is the ZS6BKW with no additional matching, just an HF 1:1 current choke at the bottom of the ladder line, remote ATU (bypassed) then 10ft coax drop to ground where it runs around to the other side of the house. The other RX settings I configure when running WSPR with the IC-7300 are NB and NR off, notch filter off, AGC fast set to 0.3 seconds.

Since turning off the MW band attenuation, I would start spotting the closer stations in California as soon as it got dark through until sunrise like clockwork. First I thought it was propagation changing with the D layer absorption which quickly disappears at sunset and quickly returns at sunrise.

Turns out it's more than the D layer at work, there are several strong AM broadcast stations in my area, during the daytime they are very strong and overload the receiver in the IC-7300. At night these stations lower output power and/or change their antenna pattern, this reduces signal levels at my location to a level where the receiver can cope.

Screen capture of the strong signal on 850 kHz during daytime, S meter maxed out at +60dB. There are several more at +40 to +50dB.

630m band WSPR frequency during daytime, the S meter hovers around S9 +15dB. Band scope shows the "mess" these strong AM broadcast stations create in the receiver.

630m band WSPR frequency at night, the S meter hovers around S1 when AM broadcast stations reduce power and/or switch their antenna patterns.

Note: The time displayed on the IC-7300 clock top right is UTC.

Update 04 Dec 2019:

Since switching back to using an OCFD a few days ago, I no longer have the receiver overloading issue during the day on 630m. It seems to have knocked back the signal levels from the AM broadcast stations enough but with out appearing to adversely affect the WSPR receive performance.