Computer Aided Technologies

Since 1989, the recognized Leader in Computer Control

An Electronic Club Dealing Exclusively in Utility Signals

The Hoka Code 30 Data Decoder and Analyser Mike Chace (

Why am I writing this?

The WUN mailing list is a wonderful place to find information about
what's going on on shortwave radio.  Within the spectrum of what we call
utility listening, many people are interested in decoding -- tuning into
all those wierd and wonderful data communications systems that can be
heard on HF and above, and decoding what is being sent.

With the advent of cheap and powerful computers, the number, variety and
complexity of data communications systems used on HF radio has been ever
increasing.  Every year new systems, or improved variants of existing
systems come on-air.  Herein lies the fun for listeners like me -- how
is the new system put together?, how do I break it down and analyse it?,
who might the user of this new system be?, and so on.  To do that job, I
need a piece of equipment to help me and that's where the Code 30 comes

Oh, and by the way, in case you're wondering, I'm not involved in any
way with Hoka.  I'm just a long-term user who likes their equipment and
would like to do it justice in a review.

What is Code 30?

Simply put, it's a decoder.  You install Code 30 (basically a small
piece of hardware plus some controlling software) into your PC, tune
your radio to a signal, say a ship sending a cargo list to a coast
station using the SITOR-A system, and Code 30 will decode what's being
sent and display it on the PC's screen.  And Code 30 knows how to do
this for over 60 known systems, from ACARS on VHF to Piccolo and
Coquelet on HF (see the section at the foot of this article for a full
list of the data systems supported as standard).

But of course, there are plenty of decoders that can do a job like that.
What makes Code 30 special is the sheer range of systems that it knows
about and its analysis tools.  If a new signal comes along, you have all
the tools to hand to decompose it -- in some cases, right down to the
level of the individual bits that are being transmitted.  The Code 30 is
also based on DSP (Digital Signal Processing) technology which makes it
very fast, flexible and sensitive.  They don't call it a decoder anymore
-- it's a digital data systems analyser.

But anyway, in terms of price, capabilities and performance, it's
probably the most powerful piece of equipment that a hobbyist in this
field can buy.  It's also probably the reason why lots of government and
military agencies are using the Code 30 for day-to-day intelligence
gathering jobs.  The only other machine that comes close in this respect
is the WaveCom W4100.

Who Needs One?

Firstly, if you're thinking of exploring the sorts of areas that I've
outlined above but you're a newcomer, then I wouldn't recommend the Code
30 to you.  Try a more modest unit first, learn and understand how
digital data systems are put together, and when you feel that you need
more power to support your widening horizons, try the Code 30.

If you're really interested in decoding and you're familiar with the
concepts and have experience of machines like the old WaveCom 4010 or
the Universal M8000, then Code 30 may well be the one for you.

What do you get?

Code 30 comprises of:

    1  1.44Mb DOS diskette
    1  Code 30 LF1 Interface Module
    1  50 page Operating Manual

The Code 30 interface is a small (12cm x 12cm x 2cm) RF-proof PC card
with a gold-plated edge connector which plugs into a free 8-bit or
16-bit expansion slot in an IBM compatible PC.  Three BNC connectors are
fitted: two for audio from your radio (one is for diversity reception
purposes), and the third is for signal output (see "Advanced Features"
later).  One complaint that I have here is that the connectors aren't
stamped or labelled where they can be seen after the card has been
installed in the PC.  When the manual mentions things like the "top
connector", and you have a PC like mine where the cards end up
horizontal in the PC's case, remembering which is "top" can be a bit of
a problem.

What other equipment will you need?

Not surprisingly, you need a fair amount of processing power to handle
the Code 30; minimum requirements are a '386 25MHz DX machine with at
least 640kb RAM and DOS v2+.  Obviously, if you want good results in
signal analysis screens that use graphical displays and in decoding Fax
transmissions, you'll need a good quality SVGA video card installed.
However, Code 30 will work with practically all types of display -- from
plain old Mono and Herc to SVGA at very high resolutions (great for

Next comes the radio, and once again, you'll need a fairly good set to
get the best out of the Code 30.  I've used mine with a Drake R8e and
more lately, a JRC NRD535.  However, with the digital filtering afforded
by the Code 30, I'm pretty sure that even a modest receiver would do
well.  The most critical requirements of the radio will be:

a) a line level audio output
b) tuning steps of 10Hz or below, and good stability to match
c) "flat" IF filters (good group delay characteristics)

The latter criterion is especially important for monitoring phase shift
keyed (PSK) systems.  Needless to say, for really demanding decoding
work, like a 3 channel Piccolo system, you will need tuning to 1Hz
steps, but an expensive, narrow IF filter is not required.  The digital
filtering in the Code 30 will do a better job!

The Code 30 software also includes a configuration program which can be
run from inside Code 30 itself, or stand-alone from DOS.  A screen
capture program is also included which can grab any Code 30 graphics
screen to a file in .PCX picture format with a single keypress -- handy!

Installing & Setting Up

Installing the PC card is simple.  It's just a matter of unscrewing the
cover of the computer, removing one of the expansion slot cover plates
and plugging the card in.

The Code 30 software itself is simply popped into the PC's disk drive
and "install" is typed.  In all, the installation of the software takes
about two minutes. Maximum disk space required is about 1Mb.  Following
installation of the software, it can be configured to your particular
requirements including the type of video card, decoder centre frequency

Hoka are obviously careful with copy protection -- a fiendish scheme of
security (although unobtrusive to the user) is employed in the software.
However, tools are provided to return the set-up to the installation
floppies from where it can be installed onto another machine.

After making up a sheilded cable for the audio (phono from the receiver
to BNC on the Code 30) I was up-and-running.  In all, from opening the
package and reading the installation instructions, to typing "code30",
it had taken about 40 minutes.

A quick check on a few well-known signals revealed that all was well and
it was time to "fine tune" the program.  Here, two things need to be
done.  Firstly, the Code 30 interface needs to be matched to the level
of audio coming from your receiver.  This prevents overloading and
thereby improves the fidelity of the decoder.  Both of these alignments
were completed except I could never seem to obtain the required
"correct" picture as shown in the Manual when I was setting the audio
input level.  Anyway, I erred on the side of caution and set the level
as low as I could.

Secondly, the precise interrupt clock rate must be discovered for your
PC.  This is important for the alignment of Fax pictures and for
high-precision baudrate measurement -- the Code 30 can accurately
measure baudrates down to 0.0001 (useful for "fingerprinting" signals).
The alignment of the clock interrupt is achieved by tuning in a Fax
transmission, checking how skewed it is and feeding the value of skew
back to the installation program.  This then adjusts the clock to a new
value and the process is repeated until the Fax picture runs perfectly
straight down the screen.

Another 30 minutes had passed following the User Manual instructions for
these two adjustments -- now I was ready to go!

Perhaps I should point out that I had been a Code 3 (the Code 30's
smaller relative) user before the Code 30.  The control software for the
two is mainly the same in terms of "look and feel" and operation, and so
I was able to do an awful lot without reference to the Code 30's User
Manual.  Of course, a new user would have to spend a while reading the
Manual to find out how it all works.

The User Manual

The 50-page manual is a printed and bound affair, nicely typeset and
very well written with plenty of pictures of the screens to demonstrate
what you should see when all goes well.  It describes all of the various
decoding options and describes the settings specific to each decoding
module eg SITOR-A, ARQ-E, Piccolo etc.  Each of the analysis tools is
also described, much of the text again linked to pictures.

The final chapters deal with troubleshooting, alignment procedures, tips
on computer interference reduction, how to install and configure the
software and a good index to help you find things.

Much of the description is clear but I wouldn't describe it as easily
understood by a newcomer to the hobby.

Basic Operation

The Code 30 software is very simple to operate.  At most, just the
cursor keys are required to move about a series of main menus, each
selection of which will access a program module once the Enter key is
pressed.  The main menus are:

    Mode      (access to all the systems that the Code 30 knows about)
    Analysis  (access to all the analysis tools)
    Files     (access to text or bit-buffer files (see "Advanced Features"))
    Info      (access to general information, help, frequency list etc)
    Tool      (access to the configuration tools, etc)
    Exit      (quits the program)

At any point in the program, the "?" key can be pressed to reveal a page
or two of help.  For example, in the ARQ-E decoding module, the help
page tells you all the specific key presses needed to change the
settings for that system and tells you the complete specification for it
eg speeds commonly encountered, bit/block structure, timing, control
signals etc.

The software is DOS based.  I found out very quickly that it's also not
possible to use it inside a "DOS box" under Windows, something I did
with Code 3 so that I could easily switch between Code 3 and the PC
Frequency Manager utility database.  However, I reverted to using
DOS-Shell which did the trick, allowing me to quickly switch between the
Code 30 and the database again.

Despite the Code 30's interface being a PC card, the installation
program also sets up a COM: port (COM2 by default).  This allows users
with external RS-232 based demodulators to interface to Code 30.
Remember however, that the default COM port is set-up and will be
controlled by Code 30 -- so look out if you have a receiver control
program, mouse or other peripheral attached to that port.  If you are in
this situation, just run the install program again and assign COM3: or
COM4: to be used by Code 30 instead.

In Practice -- Tools of the Trade

For everyday decoding, using the Code 30 is very simple.  Here's all
that needs to be done:

1) Tune the signal to the decoder's centre frequency using either the
   Speed-Shift or Audio Spectrum analysis modules.  These modules both
   essentially perform the same job.  That is, to display the amplitude
   and frequency of any signal in the decoder's audio passband.  They
   also both measure the frequency shift between the dominant signals
   and the amount of offset from the decoder's centre frequency.

2) Once correctly tuned, the Speed-Shift analysis module will analyse
   the signal and calculate its shift and measure the baud rate

3) What you do now depends upon how well you know the signal.

   Experienced listeners can simply select the required decoding module
   "by ear" and within that module, set the baudrate manually (Code 30
   will have remembered it after it was measured with the Speed-Shift
   module) with a single press of the "B" key.

   Less experienced (or lazy!) listeners can simply select the Auto
   Classification module which will automatically determine the type
   of system and its exact parameters.  The Auto Classification module
   will take a few seconds to determine these facts and will then
   display the results with a percentage confidence level.  All you
   then need do is hit the Enter key and Code 30 jumps straight to the
   required decoding module with the parameters measured already set

What could be easier?  The "tools of the trade" functions (Speed-Shift,
Auto Classification, and the Audio Spectrum Analyser), being so
commonly used, are all available from a single keypress.  F1 selects
Speed-Shift, Shift-F1 selects the Audio Spectrum Analyser and F3, the
Auto Classify module.

The Audio Spectrum Analyser

Because of its sheer versatility, this analysis module deserves a bit
more explanation.  This module displays, in real time, the frequency and
amplitude, of any signal from 0Hz to 4kHz (ie everything inside your
receiver's audio passband) and calculates the shift of the signal
received and the amount of mis-tuning from the decoder's centre
frequency.  A continuous "ruler", calibrated in 100Hz steps allows you
to measure the frequency of each signal.  On the ruler is also marked
the decoder's centre frequency -- the install program allows you to set
this to match your receiver's filters, or you can stick with the
defaults of 2210 and 800Hz.  There is also a "box" of varying width (ie
bandwidth) centred around the decoder's centre frequency mark.  This is
Code 30's digital "roofing" filter.

Once you are happy with the way in which you have tuned a signal, you
can adjust the roofing filter's width to match its shift.  So, say for
a standard shift of 170Hz for SITOR-A, you can set the roofing filter
at 300Hz.  The decoder then ignores any signal outside the limits of
the roofing filter.  The net result is powerful interference reduction
and thereby, a very sensitive decoder.  It is also useful for selecting
a single channel in a multi-channel (VFT) system.  The roofing filter
is also set-up by the Speed-Shift module, since once it has determined
the signal's shift, the optimum setting of the filter can also be
matched to it.

The audio spectrum analyser can also be "zoomed" to reveal more detail
about the signal.  The normal range of the analyser, as I have mentioned
before is 4kHz.  However, pressing M, followed by either 1 or 2, will
zoom the analyser in to 2kHz and 1kHz about the centre frequency
respectively. Signals can therefore be seen with greater detail and be
tuned very accurately.

The Decoding Modules

As I have already mentioned, the Code 30 has over 60 built-in systems,
each with it's own decoding module.  Each decoder module is divided
on-screen into two main parts.  The top 5 lines of the screen display
all the status indicators for the signal, and the decoded text occupies
the rest of the screen.  If the system is two-channel in nature say,
like ARQ-M2, then there will be a dividing line in the bottom part of
the screen, separating each channel's received text.

The status indicators show all the important information about the make
up of the signal and the current decoder settings.  These include:

Letters, Figures, Third or Fourth Shift in operation
Unshift On Space
Carriage Return Inhibit
Decoder Centre Frequency
Automatic Threshold Control
Control Indicators
Printer On/Off
Save To File On/Off
Bit-Buffer Position

The control indicators of course differ according to the system under
consideration.  SITOR-A for example, has a large number of control
signals (IRS, ISS, BETA, ALPHA) whereas others have just a few or none
at all.  However, having these indicators shown on-screen rapidly tells
you the mode in which a station is operating.

Active decoder settings are shown highlighted, and those that can be
changed by the user are surrounded in brackets to remind you of the
appropriate key that must be pressed to change it, eg  C[R]I, would
remind you that the "R" (or "r") key will toggle Carriage Return
Inhibut on and off.

Decoded text can be sent to a printer and/or a PC file for later review.

The "G" key will bring up a bargraph to allow fine tuning of the signal,
or you can press the "A" key to engage the automatic threshold control
to automatically compensate (and track) for a mis-tuned signal.

Should you be tuned to a station using a foreign alphabet eg Cyrillic,
you can instruct Code 30 to switch to that alphabet by hitting the F4
key.  This brings up a menu of 16 different alphabets like Greek,
Scandinavian, etc.  You simply type in your choice and the decoded text
will now be displayed in the chosen alphabet.

Unlike most other decoders, you also don't get stuck with only a set of
predefined speeds for each keying system module.  Although Code 30
provides preset speeds from 20 to 300 Baud, if you have measured the
speed with the Speed-Shift analysis module, then that speed can always
be set in any module by pressing the "B" key.  Some organisations use
odd speeds for systems, so it's always nice to know that Code 30 has the
flexibility to cope.

In Operation

So, how does it perform in real-life, I hear you ask?  Extremely well,
I'd have to reply!  As you can imagine, with the digital processing and
filtering, the decoder is *very* sensitive.  For example, it readily
synchronises to bearly audible signals and keeps them locked-in without
any problems.  With many signals on my NRD535 receiver, I can turn the
RF gain to zero and still get 100% copy but my ears can't hear anything

The digital roofing filter really does do useful work -- you can quite
easily tune into the crowded "maritime bands" with very closely spaced,
extremely strong signals with a modest receiver filter and get
problem-free copy.

Synchronisation time for signals is also very fast -- a matter of
seconds in most cases.  The Auto Classification module makes operation a
breeze, and the auto-speed sensing in the BAUDOT (RTTY) and CW modules
are a real boon.

Synoptic Decoder

If you like listening to meteo broadcasts, there are many to choose from
around the world, transmitting weather reports around the clock.  As an
option, Code 30 has a SYNOP module, which is activated by the pressing
the "W" key in the Baudot, TORG-11 or ARQ-E3 decoding modules.  What
happens then, is that instead of seeing rows of numbers like

31217 80027 38384 99/// 28437 49262...

You will see all this information decoded in real-time on the screen.
The SYNOP option can decode all AAXX and BBXX meteo information and the
decoded reports can also be captured in dBase file format for later
loading into a database or spreadsheet.

Advanced Features

Having looked at the basic capabilities and operation of the Code 30,
it's time to consider some of the advanced tools, those that make the
product more than just a decoder.  It is these tools that offer
possibilties way beyond conventional decoding tasks, allowing the user
to study the composition of signals, and thereby determining how they
are "put together".  The main tools are the:

* Character Analysis modules
* Oscilloscopes
* Phase Analysis modules
* Demodulators
* Bit Buffer
* Correlation modules
* Waterfall module
* Bit Analysis modules
* Signal Generator module

I haven't listed all of the analysis tools here, but these are the most
commonly used, and most useful ones.

As you will see, one of the great differentiators between Code 30 and
other decoders, is its ability to demodulate and analyse both frequency
and phase modulated signals.

The Character Analysis Modules

Character analysis can be accomplished through these modules.  Once you
have used the other analysis tools to determine the essential parameters
of a signal such as its speed and shift (via the Speed-Shift module) and
repetition cycle (via the Correlation modules), character analysis can
be used to find out exactly which "alphabet" the system uses.  These
alphabets are defined by international standards and the Code 30 knows
how to deal with most; ITA2, 2P, 3, 5 and CCIR476 for example.

Two different character analysis modules are provided, one for duplex
signals, the other for simplex.  Having set the appropriate speed,
shift, and repetition rates in the module, it will show a number of
lines of characters constantly changing.  By selecting different
aplhabets and other parameters such as parity and bit interleaving, one
should eventually spot "clean" text received on one of the lines.  Once
this happens, you know you've found the alphabet used.


The Code 30 offers 2 real-time oscilloscopes.  One measures frequency
against time, the other, phase against time.  Therefore, according to
whether the signal under examination is phase or frequency modulated,
one can determine its essential timing characteristics.  For example,
having tuned into a SITOR-A station, with the frequency oscilloscope,
one can clearly measure the timing cycle employed.  Obviously, to cope
with signals of differing speed, the 'scopes timebase may be changed
easily by use of the + and - keys.

Phase Analysis Modules

As I have mentioned before, being able to deal with phase modulated
signals is something rarely found on other decoders.  Code 30 contains
three main tools for examining phase characteristics;

* The Phase Spectrum Analyser
* The Phase Plane
* The Phase Oscilloscope

The first of these tools acts in much the same way as the Audio Spectrum
Analyser (see above), but is, of course, sensitive to phase changes in
signals, as well as frequency.  The Phase Oscilloscope, I've dealt with
above, so what does the Phase Plane Module do?  If any of you have come
across a vector 'scope, you'll know just what the Phase Plane module
looks like.

Imagine a circle, marked like a compass rose from 0 to 360 degrees, with
a point at the centre of the circle.  Amplitude variations in the signal
received will cause a dot within the circle to move away from the centre
spot.  The larger the amplitude, the larger the distance from the
centre.  A difference in frequency from the decoder's centre frequency
will cause a dot to move in rotation around the centre spot.  The larger
the frequency offset, the faster the rotation.  Through this simple
method, phase modulated signals can be examined.


Since Code 30 can demodulate both frequency and phase modulated signals,
you probably won't be surprised to hear that there are quite a few
variations available.  The demodulator can be set to one of:

OOK    On-Off Keying
FEK    Frequency Exchange Keying
FSK    Frequency Shift Keying
2DPSK  Binary Differential Phase Shift Keying
4DPSK  Quarternary Differential Phase Shift Keying

Each type of demodulator has its own merits and disadvantages, and the
manual explains when it is best to use which.  A number of different
triggering methods are selectable too -- Mark, Space or Level decoding
are all available.

Finally, if you've found something really exotic or new, then there is
an experimental "roll your own" demodulator.  This can be used to define
a generic multi-tone, multi-shift demodulator.

The Bit Buffer

In addition to being able to save decoded text to disk, the Code 30 can
also save a digital representation of a signal to disk.  On every
module, at the top righthand corner, can be seen two whirring counters,
one marked READ, the other WRITE.  This is the bit buffer.  As Code 30
"hears" a signal, it stuffs (writes) the resulting digital bits into the
bit buffer, as it processes those signals, it moves along the bit buffer
doing whatever is necessary to "read" the signal.

The complete contents of this bit buffer can be saved to a disk file.
This is perfect for capturing a signal quickly for later analysis since
any bit buffer file can be loaded into Code 30 and "played back" through
any of the decodning or analysis modules.  And, if you're stuck trying
to determine the make-up of a new or unusual signal, you can pass the
bit buffer to any other Code 30 user who can then play with it on their
system -- all with digital "recording" quality.

The Correlation Modules

These analysis modules can be used to examine a signal for any
repeating patterns at the bit level.  This is essential information
since it gives away useful clues about the make-up of a signal such as
how many bits per character, or how many characters per block are being
sent.   This information is then fed into other analysis modules (such
as those for character analysis) to allow further examination.

These modules work by performing complex mathematical analysis of the
signal being received, principally through the FFT (Fast Fourier
Transform) technique.  Code 30 can perform correlation on the raw or
modulated signal, or at the bit level.

The Waterfall Module

This one sounds odd, I know!  The waterfall uses the spectrum analyser
modules (audio or phase spectrum) but reveals information about the
energy distribution in a signal.  Thereby, it can often help identify
the make-up of a fast, multi-tone system or a weak signal.

It works like this: Watching a VFT system (or any fast multi-tone
signal, for that matter) in the spectrum analysers is difficult since
every few tens of milliseconds, one tone ends and another is sent.  It's
therefore quite hard to spot the precise number of tones involved in the
system.  What the waterfall does is to continually run along all
frequencies from 0 to 4kHz very quickly, plotting horizontally.  A
strong signal on a frequency is marked in white, a weak one in black,
medium signals in shades of colour from white to black.  It's like a Fax
picture slowly building up from the top of the screen to the bottom, but
it's showing where the energy in the signal is concentrated.  If there
is anything constant in the signal (like a pilot tone for example), this
can easily be seen as a white vertical line running down the screen.

The Bit Analysis Modules

These are basically like the Character Analysis modules, and require
much the same information to set them up, except that they show the
individual bit structure of a signal.  These modules are very useful for
getting down to the "bare bones" of any signal.

The Test Signal Generator

Remeber that I told you that the Code 30 interface has three connectors
-- two for audio input, the other for audio output.  The test signal
generator can synthesise any signal that the Code 30 supports as a
standard, decodable system, and transmit that signal through the audio
output connector.  The output is the usual "test slip" like:

ryryryryryryryryryryryryryryry 1234567890 test de code 30

Because the Code 30 is based on digital signal processing, one can also
add precise amounts of noise to the signal to simulate worsening
reception conditions.  The generator can therefore be used to test and
calibrate other decoders -- a useful add-on function.

DCF77 Time Station
Modes Decoded

Here's a full list of the current systems supported by the Code 30:

BAUDOT  (auto-speed and polarity sensing)
CW (auto-speed sensing)
AX.25 Packet Radio  (300 and 1200baud)
Piccolo 6-tone, 12-tone (ASCII)
Coquelet 8-tone, 13-tone
ARQ 6-90, 6-98, 6-70
TORG-10, TORG-11

BAUDOT F7B 2 channel
ICAO ANNEX10 (aircraft selcal system)

I should note that the Auto Classification module is capable of
recognising all of these systems plus a few more, for which there is no
supplied decoding module (well, not supplied to the hobbyists anyway!).

  • Return to Home Page

    Page prepared by