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 in. 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 Fax!). 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 etc. 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 automatically. 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 up. 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: Baudrate Shift Letters, Figures, Third or Fourth Shift in operation Unshift On Space Carriage Return Inhibit Decoder Centre Frequency Automatic Threshold Control Normal/Inverted Control Indicators In-Sync Mark/Space 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 anymore! 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. Oscilloscopes ============= 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. Demodulators ============ 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) SITOR-A, SITOR-B AX.25 Packet Radio (300 and 1200baud) ARQ-E, ARQ-E3, ARQ-M2, ARQ-M4 Piccolo 6-tone, 12-tone (ASCII) Coquelet 8-tone, 13-tone ARQ-S SI-FEC SWED-ARQ TWINPLEX DUP-ARQ POL-ARQ ARQ 6-90, 6-98, 6-70 ROU-FEC TORG-10, TORG-11 FEC-A FEC-S HC-ARQ HNG-FEC Fax ASCII Hellschreiber PACTOR I, II, III ACARS POCSAG BAUDOT F7B 2 channel ICAO ANNEX10 (aircraft selcal system) VHF Options (Selcals): EEA, EIA, EURO, CCITT, CCIR, VDEW, ZVEI, NATEL, DTMF 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!).