Skip to content
N1YWB Python Ham Radio Tools
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
hamtools use re.split Oct 2, 2016

N1YWB Python Ham Radio Tools

Copyright 2014 by Jeffrey M. Laughlin Copyright 2006 by Herrmann Hofer

This package includes several Python modules and scripts of interest to the radio amateur.

This stuff is very alpha. Really just a bunch of quick hacks I slapped together. But I will take bug reports and try to improve things over time.


  • lookup
  • ADIF file parsing
  • Cabrillo file parsing
  • cty.dat parsing and querying
  • Logged callsign georeferencing
  • Geojson output
  • KML output


The geolog script reads a log file in ADIF or Cabrillo format, georeferences the callsigns therein, and outputs a set of GeoJSON and KML files suitable for importing in Google Earth, Quantum GIS (QGIS), ArcGIS, etc.

I've only tested it with ARRL 10m contest logs. It will probably barf on other cabrillo files with different formats. If so, please file a bug report.

To georeference calls the program first looks it up on QRZ. If QRZ has no lat/lon information for the call, the program uses cty.dat. This will place the point in the center of the call area based on the prefix, so it's not very accurate, but better than nothing.

Should probably factor out the cabrillo parser into a separate module.

To avoid typing your QRZ username and password each time, you may save these to a config file at $HOME/.geologrc. You may also specify the config file location explicity with the -c command line option. See the included geologrc_example file. You may also use the config file to override the default QRZ cache file location.

hamtools comes with a recent copy of the big cty.dat. If you wish to install a newer version, download from and in .geologrc specify

[geolog] ctydatpath=path/to/cty.dat


The adif module implements a subset of the ADIF standard for reading and writing.


Simple interface to the XML data service.

To improve speed, this module caches XML responses in $HOME/.qrz_cache. You may wish to periodically delete this file to avoid stale data.


Straight port of the YFKLog cty.dat parsing/lookup code. I haven't tested this extensively, it's probably buggy.


Simple KML generation based on minidom.


A very trivial voice keyer script which plays an audio file while simultaniously keying a radio via the serial port. Requires pyserial.

License is released under the LGPL v3 All other files are released under the AGPL v3

You can’t perform that action at this time.