Linux Soundcard Shortwave digital modes

by Thomas Sailer, HB9JNX/AE4WA


Overview

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.

Reference clock

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.

dcf77
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 goes by.
refreq
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 is 15625Hz.

Supported modes

The following protocols are supported:

Programs and their purpose

The following executables should build from the sources:

hfkernel_user
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.
hfkernel_kernel
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.
hfkernel_link
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.
hfterm
This is a rudimentary terminal program. I know it's not really usable, but feel free to contribute something better (hint hint).
dcf77
Calculates the required clock correction constants from a DCF77 timecode transmitter signal applied to the soundcard.
reffreq
Calculates the necessary clock correction constants from an exact reference signal (eg. the video baseband signal of certain TV transmitters).
channel
This is a rudimentary HF channel simulator

A makefile generates all the abovementioned programs. You need LinuxThreads for hfkernel and xforms for hfterm.

Download

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


Thomas Sailer - sailer@ife.ee.ethz.ch