This is the release 0.5 of the MT63 modem for LINUX.
Date: 08-JUL-2004, Author: Pawel Jalocha, SP9VRC, Pawel.Jalocha@cern.ch

Release notes:

  0.5  --  This release changes the licence of the program to
           the GNU GPL and fixes a few compiler warnings.

  0.4  --  This is another "quick" release, the new feature is
           the CW identification which can be transmitted below 
           the 64-tone digital signal.

Important notes:

1. To take full advantage of the MT63 modem, the sampling rate of your
   sound card needs to be either calibrated or dead precise on 8000.0 Hz.
   For now, the MT63 receiver doesn't tell you the rate mismatch, I may provide
   such facility in the next software versions.

2. When connecting the audio to your PC/laptop be carefull not to damage
   the computer audio inputs. I suggest you first connect the grounds
   of the radio and the computer and only then connect or disconnect
   the audio cables.


The MT63 modem is intended for amateur radio as a conversation (RTTY like)
mode where one station transmits and one or more other stations can
listen. In short, the modem transmits 64 tones in its 1 kHz bandwidth: the
audio range for the tones is 500-1500 Hz. The differential bipolar
phase modulation is used to encode 10 bits of information per second on
each tone. The user data in the form of 7-bit ASCII characters is encoded
as a set of 64-point Walsh functions. The bits are interleaved over 32
symbols (3.2 seconds) to provide resistance against both pulse and
frequency selective noise or fading. The character rate equals to the
symbols rate thus the modem can transmit 10 7-bit characters per second.

This modem can as well run in two other modes obtained by simple time
scaling, the possible modes are summarized here:

Bandwidth  Audio range  Symb. rate  Char. rate  Interleave/char
  500 Hz   500-1000 Hz     5 baud     5 char/s   6.4 or 12.8 sec
 1000 Hz   500-1500 Hz    10 baud    10 char/s   3.2 or  6.4 sec
 2000 Hz   500-2500 Hz	  20 baud    20 char/s   1.6 or  3.2 sec

For each mode the interleave factor can be doubled thus each character
becomes spread over twice as long period of time.

The first experiments with this mode were done on the EVM56K DSP
evaluation board from Motorola and the package was named MT63ASC.ZIP.
This LINUX implementation is written to be compatible with that package.

The MT63 modem is made for single side band operation. The audio
generated by the modem (sound card output) is applied to the SSB
modulator. On the receiver side, the output of the SSB demodulator
is put into the sound card input. The envelope of the MT63 signal is not
constant as in other multi-tone systems - it is rather noise-like.
One must be carefull not to overdrive the transmitter.

The receiver of the MT63 is self-tuning and self-synchronizing thus
the radio operator is only required to tune into the signal with
+/- 100 Hz accuracy for the basic 1000 Hz mode. The modem will tell
the actuall frequency offset after it is synchronized. The operator
should not try to correct this offset unless he is able to tune very
slowly his radio receiver, because the MT63 as a low rate phase modulated
system does not like sudden frequency changes.

The package contains the following programs:

mt63tx    - MT63 transmitter
mt63rx    - MT63 receiver
mt63trx   - MT63 receiver and transmitter with a simple terminal
ratecal1  - soundcard rate calibrator
peakrms   - utility to measure peak/RMS ratio of an audio file
addnoise  - utility to add noise to an audio file

mt63tx and mt63rx can work on a soundcard as well as on raw audio files
in signed 16-bit format. For example to transmit the MT63 signal through
the /dev/dsp1 you can type:

mt63tx -d1

and to transmit and at same time save the audio onto a file mt63.raw you
type:

mt63tx -d1 -smt63.raw

Later you can decode the mt63.raw by typing:

mt63rx -ptm63.raw

To decode and listen to the audio at same time:

mt63rx -d1 -pmt63.raw

The file facility is made for off-line performace evaluation. You can pass
the mt63.raw file through off-line HF simulator and then put in back into
the mt63rx decoder.

The mt63trx can only work in real-time, you start it like:

mt63trx -d2 (receive standard 1000 Hz mode on /dev/dsp2)

to let it run on /dev/dsp2. To select the modem bandwidth you use the -B
option, like this:

mt63trx -d2 -B2000 (receive 2000 Hz mode on /dev/dsp2)

to select the 2000 Hz mode. To double the interleave factor add -i:

mt63trx -d2 -B2000 -i (receive 2 kHz mode on /dev/dsp2 with double interleave)

The -i and -B options apply as well to the mt63tx/rx commands.
For the mt63rx there is one more option -I which tells the
synchronizer integration time. For example:

mt63rx -d -B1000 -i -I64

means: receive 1000 Hz mode on /dev/dsp with double interleave, the
synchronizer would integrate over 64 symbols to measure the time and
frequency offsets.

Note, that none of the mt63xxx programs takes care for the mixer settings.
It is the operator job to setup proper audio levels on output and input.
I use the "aumix" for this, for example:

aumix -d /dev/mixer1 -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the receiver displays the ans -I

allows me to setup interactively the /dev/mixer1.

To help you with setting up the input level the rece