Linux Soundcard Shortwave digital modes
by Thomas Sailer, HB9JNX/AE4WA
This software allows a standard PC soundcard to be used
as a shortwave data "modem". The whole processing is done on
the main processor CPU.
The HF software is split into two parts. The hfkernel
handles the HF protocols, but has no user interface. It provides
a UNIX domain socket (so it can be easily switched to INET domain
sockets in the future, when the need arises to separate the terminal
software from the kernel) to communicate with terminal programs,
mailboxes or other software that wants a HF circuit.
Since most HF protocols retain even bit synchronisation over
transmission cycles, HF controllers need a very accurate clock.
The CCIR SITOR specification calls for ±20 ppm! The PC
environment does not provide such an accurate clock. The problem
however is not clock stability, at least not if the PC is operated
in an office. The problem is the exact frequency of every PC
clock oscillator is not known.
- This method uses the signal transmitted by the german long wave
timecode transmitter DCF77 at 77.5kHz. Tune your receiver to
76.5kHz USB and run the program for at least 15min. It will continually
print out correction information, which will get more exact as time
- This program requires an accurate reference frequency signal
in the range 100Hz-20kHz to be applied to the soundcard. One possibility
is to use a baseband video signal. Some TV transmitters, such as
the german ZDF have a very accurate horizontal sync frequency generated
by atomic clocks. The horizontal sync frequency of PAL systems
The following protocols are supported:
- Amtor (Sitor)
- Pactor 1
Programs and their purpose
The following executables should build from the sources:
- This is the standard kernel. It uses the standard Linux sound
driver (OSS/Free) and does not require any special kernel support.
It works well on some computers, but not on others, your mileage
may vary, depending on the soundcard and other kernel drivers used.
- This kernel sits on top if the hfmodem kernel driver
introduced in current 2.1.x kernels (there's a version for 2.0.x
included in this package). Time critical functions are then executed
in the kernel.
- This version of the kernel can be run twice on a single
computer connected with channel (see below). This allows
for easier development and performance evaluation.
- This is a rudimentary terminal program. I know it's not really
usable, but feel free to contribute something better (hint hint).
- Calculates the required clock correction constants from
a DCF77 timecode transmitter signal applied to the soundcard.
- Calculates the necessary clock correction constants from
an exact reference signal (eg. the video baseband signal of certain
- This is a rudimentary HF channel simulator
A makefile generates all the abovementioned programs. You
need LinuxThreads for hfkernel and xforms
Please note that monitoring commercial services may be prohibited
in some countries, this software should therefore only be used
to monitor the amateur radio service.
The software is published under the GNU GPL V2
hf-0.1.tar.gz 325070 bytes