CDW version 0.8 is here

Transfer data through morse code, or phonetic!

by SV3ORA



Older version can be found (19 Jan 2015)Older version can be found here

Introduction

CW is a very old mode of digital communication and it is to my knowledge the only digital communications mode that is human-oriented. Communication using an unmodulated ON/OFF carrier presents significant advantages, since small bandwidth is used and if combined with sharp receiver filters, it can lead to very long distance communication with moderately low transmitter power. Additionally, CW transceivers are usually cheap and very easy to build, as they don't require complex filters. Generally speaking, in a CW transceiver, you get more for the time, labor and money you spend to build it.

However, CW is used only for transferring text messages and it cannot be used to transfer data, like images and other files. For this purpose, other suitable modes are used (SSTV etc.), that require SSB transceivers and they use more bandwidth to transfer the data. To overcome the CW limitations, CDW was born!



The CDW communications scheme

CDW is a human-oriented encoding scheme, designed for data transfer in difficult (low s/n ratios) conditions on LF/HF/VHF/UHF/SHF bands. Such difficult conditions may be EMEs or LF noisy transmissions. This encoding scheme, uses the already well established morse code for data transfer, but it is not only limited to CW. Any other mode that is used to transfer text messages (phonetic alphabet and other HAM modes like RTTY, PSK etc.), can benefit from the encoding scheme of CDW. However CDW allows for ON/OFF keying low data rate radio communication and it's spectral efficiency is high, because it can be combined with CW. Since CDW uses CW to transfer data, it has the same propagation and bandwidth characteristics, but it includes the next additional features:

High spectral efficiency (when it is used with sharp CW filters; bandwidth is relative so read this nice archived article).

Data transfer (unlike CW and other modes that are used only for text).

Data compression (encoded files are being automatically compressed before they are transferred).

Data encryption (transferred files can be encrypted using password keys).

CDW is currently under development. The program has been completely re-written from the previous version in php and it is a web utility that runs locally from your computer. A tiny php-enabled web server (quickphp) runs on your computer on port 8080 to host the CDW program. The use of php for programming, makes the program opensource by default and the program is free for radio amateur use. If you are a radio amateur and you want to improve the program feel free to do so, but before releasing any new version you should contact me first. The use of php also, means that the program can run online from any web server with very little code changes. Some changes to the code may be needed in order to run on a web server, especially when external programs are called for execution.

The current version of CDW can be downloaded from the following link (Windows executable setup): CDW



How it works



The new version of the CDW mode has been completely revised to use the zbase32 encoding (human oriented base32 encoding) to transfer data inside compressed zip files. Zbase32 contains case-irrelevant alphabet characters and numbers and the program converts the files to be sent, into a string of these symbols which then can be transmitted through morse code, phonetic alphabet or other modes.

CDW is mainly a human oriented mode, humans are used to receive and transmit the encoded data (characters). Since CDW is used for transferring data on low S/N ratios, there is barely a program that can replace the human ear-brain ability to recognize and decode signals at these noisy conditions. However CDW can also be perfectly used along with computer programs that automatically encode and decode the transferred characters.

The files you choose to send with CDW, are automatically compressed before encoding. At the receiving end, the file received, is always assumed to be a compressed zip file.



Automatic data compression is utilized by the program prior to transferring, because it can lead to huge data transfer saving. An estimation of the data compression effect is shown below:

58Kb .doc file compressed to 12.8Kb .zip (huge data saving)

20.3Kb .html file compressed to 4.8Kb .zip (huge data saving)

15.1Kb .txt file compressed to 5.8Kb .zip (huge data saving)

20.6Kb .jpg file compressed to 20.4Kb .zip

351Kb .bmp file compressed to 137Kb .zip (huge data saving)

34.9Kb .gif file compressed to 34.9Kb .zip

100Kb .png file compressed to 100Kb .zip

352Kb .tif file compressed to 137Kb .zip (huge data saving)

2.93Mb .mp3 file compressed to 2.82Mb .zip

However, you should be aware that file size of the files you are trying to send, must be of as small size as possible. For example, if a big resolution BMP photograph is to be sent, it has to be first converted to another format (eg. JPG) and reduced in resolution, but without loosing too much visual information, so that it can be transferred in reasonable time. For images, there is always a tradeoff between resolution/image quality/image file type and file size. At these low data transfer rates, data size must be kept to minimum, to maximize efficiency of CDW.







The CDW program



Before running, the CDW program runs a tiny php-enabled web server to your task bar at port 8080. Then a pop-up window appears, asking you to open your web browser and type at it's address bar the text "localhost:8080" without the quotes of course, to access the CDW program. Note that only Firefox and Chrome are fully supported; the program will run on any browser, but some features may not be supported.

The CDW program is split into two parts, the upper part is used at receiving and the lower part at transmitting. The simplest way to describe how the program can be used, is through a case scenario.

Suppose you want to receive CDW data. You normally sit in your radio shack, listening to a radio receiver. When morse code (or phonetic alphabet) starts to be transmitted, you listen to it and decode it (using your ear-mind combination) and you type the letters/numbers one by one into the text area in the top part of the program. When transmission ends, click "Decode typed data". A link to the zip file appears and you may open the file using your favorite zip program.

Alternatively, if you use an external automatic CW decoder program, you may save the recorded sequence of numbers and letters to a .txt file. Then load this file into the CDW program by clicking "Browse" to select the .txt file and then "Decode selected txt file" to decode it and get the zip file link. For your convenience, a suitable CW decoder program, is included inside C:\cdw\cdw\cwget.

Suppose you need to send an image file using the CDW. Select this image file from the "Browse" button in the lower part of the CDW program. From now on, you have three options. Use just one of the three, each time you load a file, not more than one. These options are:

1. Click "Encode file". The file, will be compressed and encoded into a series of letters and numbers which are displayed in the text area. You can transmit these characters yourself, using your morse key or your voice (phonetic alphabet).

2. Click "Encode file & Play morse". The file, will be compressed and encoded into a series of letters and numbers which are not displayed in the text area. Then each character is encoded and automatically played in morse code. You will hear the encoded data played as morse code from your speakers. You can play this audio stream through your SSB transmitter (with the PTT manually enabled) or use the circuit provided (Transmitter Keyer), to automatically PTT your transmitter. The circuit is connected to the line output of your sound card and automatically closes the key, every time audio output is detected. Alternatively, you can use this circuit to directly key a CW transmitter, without the need to pass audio to it.

3. Click "Encode file & Play phonetic". The zip file, will be compressed and encoded into a series of letters and numbers which are not displayed in the text area. Then each character is encoded and automatically played in phonetic alphabet. You will hear the encoded data played as phonetic alphabet from your speakers. You can play this audio stream through your SSB transmitter (with the PTT manually enabled) or use the circuit provided (Transmitter Keyer), to automatically PTT your transmitter.

Note that depending on the file size, compression can take some time, so please be patient when you click the encode buttons.

Also note that for options 2 and 3 above, as long as the audio stream has started to play, you cannot terminate it. Even if you close the program the audio stream continues to play (which could be convenient in some cases). The only way to terminate the audio stream from playing, is to terminate the tiny web server by clicking Alt+Ctrl+Del and terminating the CDW server process, or by waiting until data transmission is complete.

As of version 0.3, there are some more options which help novice morse code and phonetic alphabet users to encode and decode the data. These options include phonetic and morse code encoding and decoding charts.

As of version 0.4, simple protection of the transferred data with password is supported. There is another set of encoding and decoding buttons to handle this protected data, but a password has to be entered first, before clicking these buttons. The Password protection, is actually the application of simple XOR encryption to the data. This is not strong encryption, because the key password is repeated throughout the encryption/decryption process, but this is enough for the purposes of radio amateur transmission. However if one produces a truly random password, which is at least as long as the data length itself, then this is considered as a one-time-pad encryption, which is theoretically unbreakable. Whereas it is possible, it is not practical for the purposes of radio amateur transmission. Not to mention that broadcasting encrypted data may be prohibited for radio amateurs. So use this at your own risk and make sure you check your country and radio amateur regulations before using this feature.



Installation instructions



As of version 0.8, there is an installer to make installation for you easier. Just click on the installer, to setup CDW on your computer.



It is important to note that if you have any firewall or other software that blocks running applications/servers on your computer, you have to unblock/allow the CDW server program to run. If this is the case, usually a pop-up window will appear when running CDW for the first time, to allow you to do so.

For any problems or additional information, you may contact me.

