USB V-A14.074.00 V-B07.074.00 PWR13.5V SIG

//greg lehto

KF8EJM

licensed amateur radio operator · bit by the POTA bug · digital mode enthusiast · linux native · self-hosting advocate

QTH hazel park, mi GRID en82 CLASS general STATUS de KF8EJM ●
U1

//AMATEUR RADIO

parks on the air · portable HF · digital first, SSB always

Xiegu G90 head unit mounted in a custom 3D-printed faceplate in the center console of a Ford Ranger. Display shows 14.239.00 MHz USB on V-A, 07.073.00 MHz on V-B, 12.3V supply, waterfall active.
// THE MOBILE SHACK Xiegu G90 in a custom-designed faceplate, mounted in the Ranger. Center console becomes a portable HF station — drive to a park and get on the air. Plenty of contacts from random parking lots.

KF8EJM · licensed amateur radio operator

General class. Based in Hazel Park, Michigan (grid EN82). Most of my air time is HF digital — FT8 is the daily mode and CW practice on the side. Parks on the Air motivates me to get out and take the long way home on trips.

Find me on the air or look me up: pota.app/KF8EJM and qrz.com/KF8EJM.

MODES
FT8 · SSB · CW
BANDS
80m – 6m, You can usually find me on 20m FT8
OPS
home · mobile · backpack · POTA
GRID
EN82 when home. Lately changes often.

01.// stations

Three configurations, picked by the kind of day it is.

HOME SHACK

Fixed station. Full power, full bands, and the wire that takes itself seriously.

RIG
Icom IC-7300
PWR
100W HF
ANT
Hustler 5-BTV vertical

MOBILE SHACK

G90 in the Ranger. Default config keeps a 20m Ham stick on the mount — FT8 from anywhere I can park.

RIG
Xiegu G90
PWR
20W HF
ANT
Ham sticks · 20m default

BACKPACK STATION

Full-portable go-kit. Pack holds rig plus battery — walk in, deploy a wire, you're a station.

RIG
IC-7300, G90, tr(uSDX)
BATT
20Ah LiFePO4
ANT
20m and 40m spooltennas · JPC-7 with mods (ground spike, 18' masts)· Various EFHVs

02.// antennas

Different problems, different wire. The Ham sticks work great until they don't — then a bigger antenna comes out of the bag.

REF ANTENNA BANDS NOTES
ANT-01 Hustler 5-BTV 80 · 40 · 20 · 15 · 10m home · ground-mounted trapped vertical · daily driver at the QTH
ANT-02 Ham Sticks · ×5 80 · 40 · 20 · 15 · 10m mobile · single-band swappable on the custom built Ranger mount ·20m is the DEFAULT
ANT-03 Spooltenna · 20m (DIY) 20m Great for POTA · Rolls up small · deploys fast
ANT-04 Spooltenna · 40m (DIY) 40m Great for POTA · Rolls up small · deploys fast · 40m takes over when the grey line is here
ANT-05 JPC-7 multi-band portable POTA · when a stick isn't enough antenna for the propagation

03.// digital & GPS

FT8 is the daily mode. WSJT-X on the Lenovo T480 (Arch Linux, of course) does the heavy lifting — GridTracker2 is a must for tracking and logging. JS8Call is a curiosity and I have jumped in a few times. Not a regular thing.

For portable, the laptop has hotspot when available. Sometimes thats just not possible. Like Death Valley. so I wrote a small Python app that polls a USB GPS dongle and sets the system clock from $GPRMC, calculates the Maidenhead grid from the fix, updates the clock with chrony and sends the UDS packet for grid to WSJT-X. By the time the radio is warm, the clock is right and the grid is set. No fiddling — just deploy and operate or drive and stay correct.

04.// pota awards · 2026

DX Hunter

Confirmed contacts with parks in five different DX entities. Long-haul propagation putting in the work.

2026.05.18 view cert

Arizona Agave

100 unique POTA reference areas worked as a hunter. The first triple-digit hunter milestone in the books.

2026.05.25 view cert

Silver Activator

20 unique reference areas activated — not just worked. Each one a setup, a CQ POTA, and a logbook full of contacts.

2026.05.28 view cert

Rover Warthog

Five POTA entities activated inside a single UTC day — US-9425, US-9432, US-9486, US-1944, US-0483. A roving day with no idle time.

2026.05.27 view cert

Support Your Parks · Spring 2026

Hunter award for the April 18–19 UTC weekend event. A whole weekend of working activators across the program.

2026.04.19 view cert
U2

//CW PRACTICE

the oldest mode · still works when nothing else does

K F 8 E J M

Working on copying speed. It's a long road but a good one — the lower HF bands still belong to Morse, and there's no faster way to make a contact when conditions get rough. The plan: drill characters to the point of reflex, then move to real on-air copy. Sending comes after the ear catches up. I plan to setup one of the ultimate cheap portable rigs. The tr(uSDX) and the spooltenna.

Morse Master

Character and word drills with Koch progression. Send and receive practice with adjustable WPM. This is where the reflexes get built, two characters at a time.

Morse Expert

The on-air style copy trainer. Once the characters are solid, this is where they get tested against real CW pacing — Q-codes, callsigns, RST exchanges, the whole rhythm of a contact.

Vibe Coded trainer

I have embraced the hated AI coding. I wanted a CW trainer that meets my needs so I created it. It has the usual Koch Farnsworth method but also has random call signs and mock conversations.

IN DEVELOPMENT

Morse Code Sender V2 · with decode

A modified build of Lou VK2IDL's open Morse Code Sender V2. The original is a transmit-side tool — text in, keyed Morse out. I'm adding the other half: audio in, decoded text out. Adding a couple components to get both directions.

The goal is a single bench box for off-air practice that can also sit alongside the rig and help with copy when the headphones aren't enough. Code, schematics, and notes will land in GitHub when it's stable.

ORIGINAL SENDER · VK2IDL · ham radio & electronics projects

U3

//SELF-HOSTED SERVICES

running on a homelab · open source where possible · own your data

13ft

Self-hosted proxy for breaking through soft paywalls — read the article, skip the spotlight overlay.

access service

Mealie

Recipe vault and meal planner. Import from any cooking site, scale ingredients, plan a week of dinner.

access service

Open WebUI

Front-end for running local and remote LLMs. Chat, RAG, tool use — all self-hosted, no SaaS lock-in.

access service

Gitea

Personal git forge — repos, issues, CI. Where my projects actually live before they go public.

access service

RSS Feed Reader

A self-hosted aggregator. The open web still has good things — RSS is how I find them without the algorithm.

access service
U4

//STACK

tools, tech, and what I do when I'm off the keyboard

A non-exhaustive list of the things I build with, hack on, ride, and break regularly. Snapshot of the rig — not links, just inventory.

R01Python
R02Arch Linux
R03UnRAID
R04ESP32 / RP2040
R05Raspberry Pi / Mini PC
R06Home Assistant
R07Amateur Radio
R08Automotive CAN
R09Custom Keyboards
R10Cycling · Road & MTB
R11Open Source
R12Self Hosting
R13Docker
R14Bash & Vim
U5

//CONNECT

on the air, on the net · pick a band

QRZ · CALLSIGN KF8EJM POTA · PROFILE pota.app/KF8EJM GITHUB gnl221 MASTODON · FEDIVERSE @[email protected] YOUTUBE @Glehto STRAVA · CYCLING Profile EMAIL [email protected]