CDW is here!
The first beta release available

(30 May 2010)

The CDW mode of communication

CDW is a ham radio digital mode designed to work in difficult (low s/n ratios) conditions on HF bands (though it also works as well on VHF/UHF/SHF). It is a new digital mode/program utility that allows low data rate radio communication under minimum bandwidth. CDW works pretty much like CW and has the same propagation and bandwidth properties, but it includes the next additional features:

CDW is currently under development. The program includes a web utility for encoding/decoding and a pc utilities for bit sending/receiving. The web utility can also run locally from your computer and the installation package takes care all the web programs that are required in order to run the utility. The current beta release of CDW can be found here: CDW (6.89Mb .zip file. Last updated 30 May 2010)

* Since the utility uses javascript for it's operation it can be used only for small files efficiently (<20k). This release is out just to show the basic principles of CDW. The next version will have this "problem" solved.

How CDW sounds like?

Wav sample file CDW1.wav

A rough explanation on the CDW


The CDW protocol uses 0s and 1s to send text, pictures, files, data etc.

The protocol uses .zip files to transfer data and it encodes them to base64. Then, each ascii character in the base 64 string/data is converted to it's binary equivalent. Thus, each character takes 8 bits (1 byte) to send.

The 8 bits of each character (word) are separated by the 8 bits of the other characters by space. Space is needed in the receiving end, for synchronization, to know where each character starts and for some error detection. If the receiver receives SPACE-8bits-SPACE, then it knows it has received a character. If the receiver receives SPACE-7bits-SPACE, then it knows that there is an error. If the receiver receives SPACE-9bits-SPACE, then it knows that there is an error.

The receiving program is able to replace all the missing bits in a byte by spaces. i.e when not receiving data (during a data transmission), it should write spaces in the file. For example it must be able to write to the file "01101011 0010 01". The second byte has two spaces and this means that two bits bave not been received. Each byte must contain 8 bits, no more not less.

When receiving text, when data loss occurs (empty space in a byte), this character is discarded.

When receiving data, each character (base64) of this data must be received ok by the receiver. If at least one character is not received correctly, the data fails to display. It is like changing a bit in an executable file using a hex editor. The executable will stop functioning.

I.e. if one byte has not been received correctly, it is discarded. This works ok at the receiver end for unencrypted text but not for encrypted text and data. When using .zip files there is more tolerance in data errors and images could be still transfered with some errors on them.

When transmitting the data (at the transmitter), each 0 represents a DOT and each 1 a DASH (pretty much like morse code).

In a switching transmitter, where the carrier is switched on/off, each DOT keeps the transmitter on for a period of time (say 1sec) and each DASH keeps the transmitter on for a greater period of time (say 3sec). In a continuous carrier transmitter, where the carrier is always present, each DOT inserts an audio tone for a period of time (say 1sec) to the transmitter and each DASH inserts an audio tone of the same frequency, for a greater period of time (say 3sec), to the transmitter.

When transmitting data, each bit in the eight bits word (character), is separated by the other bits, using space. This space is smaller in time length than the space between words. Thus the receiver distinguishes between bits and also distinguishes between words (characters).

The data compression scheme is as simple as this:
The CDW web utility sends a file and zips your file/s first. Then converts your zip file to base64, apply encryption if you like, and finally encode for transmission. The receiver must decode the binary data, apply decryption if needed, and recover the original base64 data. This base64 data will always be a .zip file format. Using this way you achieve some compression of data and at the same time you do not need to know the file type that is sent. The file you will receive will always be a .zip which contains the original data (image, sound, text, etc.). If simple small text is needed to be sent, compression may not be the option. Simple text can be also sent from a hardware keyboard device without using a computer (this will be implemented in future). In the later case compression cannot be applied. Although if large texts needed to be sent, they must be pasted in a .txt file, zipped and converted
to base64, like all the other file types. An estimation of the data compression using this scheme (winrar, .zip file creating):
58Kb .doc file compressed to 12.8Kb (huge data saving)
20.3Kb .html file compressed to 4.8Kb (huge data saving)
15.1Kb .txt file compressed to 5.8Kb (huge data saving)
20.6Kb .jpg file compressed to 20.4Kb
351Kb .bmp file compressed to 137Kb (huge data saving)
34.9Kb .gif file compressed to 34.9Kb
100Kb .png file compressed to 100Kb
352Kb .tif file compressed to 137Kb (huge data saving)
2.93Mb .mp3 file compressed to 2.82Mb

But usually, by converting your zip file to base64 there is only a low amount of data saving.

Appart from that, zipping your files before sending has also another advantage. It allows multiple files to be send at once, inside a .zip file, so you do not have to start and end multiple transmissions. It also ensures data integrity as long as the .zip file has been received correctly. You may even password protect your zip file, as an additional security measure, apart from the encryption scheme.


CDW utility is split into two parts. The bit-send/receive programs and the encoding/decoding utility. The bit-send/receive programs are used to transfer the data from your external transmitter/receiver to the computer and vice-versa. When the data has been transfered the encoding/decoding utility is used
to encode/decode this data. This has the advantage that the decoding utility can be made and updated independently from the data exchange utilities. Also, a lot of proccessing can be done in application level without having to rewrite the data exchange utilities.


The CDW web utility uses a wizard to make it easier to decode/encode data. Just follow the steps of the wizard and the instructions inside the text boxes. In this beta release of the CDW utility there is much time taken when you click "REMOVE SPACES/ERRORS" button, if your file is big (more than 100Kb or so). The browser may ask for script continuing confirmation so you have to let the script continue it's execution of you want this button to finish it's work. This is something that will be fixed in next versions. For the time being, it is recommended to send smaller size files, after all you will have to wait for too long if you want to transmit a big file using so low bandwidth.


The current Windows version of CDW uses two third party programs for bit exchanging with your transceiver. The CW-get, to receive bits and the CD-type, to send bits. You have to setup the CW-get and CD-type manually. These are located inside C:\CDW directory. When you run the CW-type, make the settings that suit your needs, from the setup menu. It supports COM, LPT and sound blaster connectivity. There is also an interface schematic inside the package. The CW-get uses the sound blaster and an FFT for distinguishing between zeros and ones. Before using the program you HAVE to load the CDW alphabet file "CDWALPHABET.CWG" located in the CDW directory. This will ensure that you make the program compatible with CDW and not mosre code. Choose "SETUP > User defined charset" to load the CDW alphabet file "CDWALPHABET.CWG" located in the CDW directory. This program is not freeware so settings save is not allowed. But you can use almost all it's functions needed for CDW except from the settings save. So each time you restart the program you have to reload the alphabet file and make all the relevant settings related to your sound blaster.


1. Unzip to a folder.
2. Run CDW.exe
3. In the pop-up window click INSTALL
4. Then click OK in all steps to complete the installation.
5. The web browser window will be automatically opened and the CDW web utility will start.
6. The next time you want to run the CDW web utility, go to C:\CDW and run CDW.exe. Then open your web browser
and type http://localhost

If you have any firewall or other software that blocks running applications/servers on your computer you have to unblock/allow the server program to run. The server program is accessed only by localhost and not by internet users. If you run any other local web servers you have to disable them before starting the CDW server.

You have to setup the CW-get and CD-type manually. The setup files are located inside C:\CDW directory.


Why not to use the morse code alphabet instead of base64, to save data rate by assigning less bits on characters occurring more frequently?

Morse code does not distinguish between lowercase and uppercase letters. To represent data as a text string we have to use base64, which uses  lowercase letters as well.

Disclaimer notice: Information and files in this page provided as is. You are free to copy any images and data in this page  provided that you do not alter their content and you clearly define their source.
Copyright 2009-2010 - All Rights reserved