cocoaModem RTTY Interfaces

Kok Chen, W7AY [w7ay (at) arrl (dot) net]
Last updated: May 8, 2010

Index (User's Manual - RTTY Interfaces)

General Information
Aural Monitor
Accessibility (Incremental Speak and Voice Assist)

RTTY Interfaces
PSK Interface
MFSK Interface
Hellschreiber Interface
CW Interface
ASCII Interface
SITOR-B Receiver
HF-FAX Receiver
Synchronous AM Receiver
Part II

RTTY Interfaces

cocoaModem contains three separate RTTY interfaces - a "basic" RTTY interface, a Dual RTTY interface and a Wideband RTTY interface.

The three interfaces share the same underlying implementation and differ from one another mainly in the user interfaces.

The Dual RTTY interface also has two independent demodulators. If your transceiver has two separate receivers (e.g., the Yaesu FT-1000MP and the TenTec Orion) you can connect the two demodulators of the Dual RTTY interface to the two outputs of the transceiver. This enables you to copy two different RTTY signals at the same time - this can be useful when you are working DX that is operating "split" (transmitting and receiving on different frequencies).

In addition to having two receivers, the Wideband RTTY interface also has agile "tone-pairs" which you can instantly tune to anywhere within a 2 kHz bandwidth by clicking on a "waterfall" spectrogram.

Config Panel

After selecting an RTTY interface in the main cocoaModem window, you can open the Config panel by selecting Config under the Window menu in the Menu bar. You can also open the Config panel by using the Command-Option-comma keyboard shortcut.

The Config panel is closed by using the red (leftmost) button in the title bar of the configuration panel.

The common functions of the Config Panel are discussed in the General Information section of this manual. We will only discuss the Config Panel functions that depart from the common functions here.

RTTY Receiver Configuration

The Config Panel for the Wideband RTTY interface is shown in Fig 1, shown tabbed to the Main Receiver. The Config panel for the Basic RTTY interface is similar except that there is a single Receiver config tab view.

Figure 1 - RTTY Receiver Configuration

The input device controls have already been described in an earlier section (Audio Device Selection).

The RTTY specific configuration items are contained in the box on the right of Figure 1.

Sideband Selection

The popup menu that is inside the Dial Readout box selects which sideband your transceiver uses when operating RTTY.

Figure 1b - LSB/USB menu

Proper selection of the LSB/USB ensures that cocoaModem's demodulator matches the transceiver. If they don't match, an RTTY Mark will be received as a Space, and vice versa.

When this menu is properly set up, cocoaModem will do the rest of the tone-pair management for you. Refer to the transceiver’s user manual for which sideband to use. The sideband setting is documented in the “Packet” or "Data" section of the transceiver manual. Most transceivers use LSB for RTTY, FSK or AFSK.

The VFO Offset field allows you to control the label below the waterfall so that the waterfall label will show the proper offset of the RTTY mark signal from the transceiver's VFO dial. Again, refer to your transceiver manual to determine what the RTTY Mark offset is, relative to the transceiver's VFO dial.

AFSK/FSK/OOK Selection

The popup menu below the Dial Readout box in Figure 1b allows you to select between AFSK, FSK and OOK modes. The expanded menu is shown below.

Figure 1c - AFSK/FSK/OOK menu

Each receiver in the Wideband RTTY and Dual RTTY interfaces can independently select between AFSK, FSK or OOK modes. You can, if you like, use FSK when transmitting through one "receiver" and use AFSK when transmitting through the second "receiver." Devices which are unavailable are grayed out (as shown in the above figure for the digiKeyer). A microKeyer II will show up in the menu as a plain microKeyer and a digiKeyer II will appear as a plain digiKeyer. Remember to also select the appropriate PTT method in the transmitter tab of the Config panel.

When you use AFSK, cocoaModem ensures that the transmit tone pair tracks the receive tone pair. You will always be zero beat to the received signal unless you have chosen a non-zero RIT offset.

If you use FSK or OOK, be sure to set the cocoaModem tone pair to the same tone pair that your transceiver uses since the frequency of the transmitted signal is determined by the transceiver and not by cocoaModem. If not, your transmission will not be zero beat to a received RTTY signal. Transceivers usually offer you more than one tone pair that you can choose. Be sure to set the selected tone pair (mark and space frequencies) in cocoaModem's tone pair configuration. Failure to do this will cause you to transmit away from where you think you might be transmitting.

Please note that you lose the frequency agility function of the Wideband RTTY interface when you use FSK or OOK, and the interface will behave as if the transmit tones are locked -- in fact, the Tx Lock button is grayed out if you choose to use FSK instead of AFSK. You also lose the keyclick filter that is present when using cocoaModem's AFSK setting.

cocoaModem directly supports FSK transmission when you use a microHAM microKeyer or digiKeyer through the ÁH Router. You can also use the on-off keying (OOK) mode to generate an FSK keying signal with an appropriate interface such as the microHAM USB Interface III.

When on-off keying (OOK) is selected, cocoaModem sends a constant amplitude, fixed frequency tone-keyed signal to the sound card. Instead of an AFSK two tone signal, the OOK mode sends a 2500 Hz tone when RTTY is in the Space state. The output is silent when RTTY is in the Mark state. This keyed tone be used by a simple tone detector to generate a keying signal for an FSK transmitter. The amplitude of the tone is about -3 dB (relative to full scale) of the sound card. When the transmit polarity is set to Reverse, the tone is keyed on during the Mark state instead of during the Space state.

The microHAM USB Interface III supports this tone keyed method for generating an FSK keying signal. With the USB Interface III, be sure to select the right channel of the sound card. With most Icom and Ten-Tec transceivers, keep the cocoaModem transmit polarity putto set to Normal when using the USB INterface III. With most Yaesu or Kenwood transceivers, use Reverse for the transmit polarity (unless you have changed menus or jumpers in the transceiver to invert the transmit polarity).

When you use FSK (or FSK that is keyedthrough a device that uses OOK), you can still use the waterfall of the Wideband RTTY to quickly move to a different receive offset, but your transmit frequency will not move.

Important note: some transceivers require that you invert the FSK polarity. This is true with most Yaesu transceivers -- for example, the RTTY Tone switch in the top access panel of the FT-990 needs to be switched to the Reverse position; the RTTY Polarity menu (Menu 6-1) of the FT-1000MP needs to be changed to the Reversed setting, etc. Failure to set this up correctly will cause you to put out an "inverted" or "reversed" RTTY signals that others will copy as gibberish.

You can change the polarity by setting the Transmit Polarity in cocoaModem to Reverse. The transmit polarity button of the Wideband and Dual RTTY interfaces are in the Aux panels, while the transmit polarity button of the basic RTTY interface is in the main interface. However, it is always better to reverse the RTTY transmit polarity at the transceivers, since it will not depend on plist changes, etc. Leave the transmit polarity buttons in cocoaModem for use in the rare and temporary occasions when the other station is receiving in reversed polarity.

Finally, there is a myth that you must use LSB when operating RTTY in AFSK mode. This is totally false. As long as the proper audio tone-pair polarity is generated, you can use either LSB or USB to generate and copy an RTTY signal. The sideband popup menu allows you to use cocoaModem with USB or LSB transceivers.

RTTY Receiver Options

There are three checkboxes to specify receiver options.



USOS (unshift on space) is a commonly used protocol in RTTY. Amateur RTTY uses the Baudot code to send characters. Baudot has only 5 bits to encode each character and the code can therefore only represent a maximum of 32 distinct symbols.

To accommodate the 26 letters and punctuation marks, 10 numbers, space character, carriage return, line feed, bell, etc, Baudot adds a pair of “letters/figures shift” characters to the set. The behavior of these two extra characters (LTRS and FIGS) is very much like the caps lock key on your computer keyboard which allows you to have more character combinations than there are keys on the keyboard. The LTRS/FIGS scheme allows two different characters to share the same code. A LTRS character locks the Baudot state into the letters symbol set and the FIGS character locks the Baudot state into the figures symbol set.

For example, to send a "W", the sender makes sure that the Baudot shift state is already in LTRS, and if not he first sends a LTRS character. The character code that represents "W" is then sent.

To send a "2", the sender first makes sure the Baudot state is in FIGS, first sending a FIGS character if neccessary, and then he sends the character code for "2".

However, a "W" and a "2" shares the same character code in Baudot - both are sent as the bit sequence 11001. The recipient of the message will print the correct character only if his LTRS or FIGS state corresponds to the sender's state.

Every so often, a LTRS and FIGS character is corrupted along the way by noise and the recipient no longer correctly tracks the Baudot state of the sender.

The USOS protocol is an attempt to re-synchronize the two ends without sending extra shift characters. The protocol states simply that in addition to using LTRS and FIGS characters to control the Baudot state, all space characters should be considered to be accompanied by an implicit LTRS character.

Without sending any extra characters, the USOS mechanism helps synchronize the sender and receiver since spaces occur often in a message and it works well in practice if both ends use the protocol.

The protocol fails completely however when the sender does not use USOS and the receiver is set to obey USOS - a message sent as "599 +20DB" will be received as "599 ZWPDB".

The USOS checkbox allows you to disengage USOS in case the other end does not use USOS.

Robust Mode

cocoaModem has a unique option to turn on a "robust mode," which allows cocoaModem transmissions to be received correctly whether the receiver is set to USOS or non-USOS decoding.

When cocoaModem is transmitting with both USOS and robust mode turned on, it will insert a LTRS character right after sending a space character if the character before the space character was in FIGS shift and the character after the space character is in LTRS shift. This additional LTRS character ensures that both USOS and non-USOS receivers can copy cocoaModem's USOS transmission.

When cocoaModem is transmitting with USOS turned off and with robust mode turned on, it will insert a FIGS character right after sending a space character if the both the character before the space character and after the space character are in FIGS shift. This additional FIGS character ensures that both USOS and non-USOS receivers can copy cocoaModem's non-USOS transmission.

Space characters in English transmissions occur at the rate of about one character in six. If the other characters are random, then one out of four such space characters will transmit an extra shift character. Thus, about 4% more characters are sent if the message is random. For regular text transmissions, the character before a space character is usually a character in LTRS shift, implying that in general, the overhead of robust mode is less than 4%.

In addition to the USOS compatibility scheme described above, cocoaModem periodically sends redundant LTRS and FIGS character in Robust Mode. A redundant LTRS or FIGS character will be inserted if 16 consecutive characters are sent without sending a space character. This should be quite rare and should not impact the transmission speed in practice.

Bell Mute

The Baudot code has a BEL (bell) character that can be sent to wake up a teletype operator at the other end. Mute BELL is a preference to ask cocoaModem to ignore the BEL character and avoid sending a chime through the computer's output device.

The use of the Mute BELL option should be considered mandatory if you are using the built-in audio as the output device, otherwise system beeps and chimes will be transmitted through your transceiver and in violation of FCC regulations. cocoaModem uses AFSK, which means that if you are using the built in system sound as the output to your transceiver, all sound output from the computer will go out on the air . Although BEL is seldom used by good RTTY operators, a "J" that is misinterpreted as a FIGS shift can still be interpreted as a bell character since J and BEL share the same Baudot code.

RTTY Input Device Spectrum

As seen in Figure 1 above the RTTY Config panels includes a pair of red markers in the spectrum display to indicate the positions of the current tone-pair.

RTTY Transmitter Configuration

(Please note that the RTTY transmitter obeys the USOS setting in the receiver section.)

Figure 2 shows the Config panel when the Transmitter tab is selected.

Figure 2 - RTTY Transmitter Configuration

In addition to the controls for selecting and adjusting the output sound device that is common with the other interfaces (describe in Audio Device Selection in an earlier section), the RTTY transmitter configuration comes with a set of RTTY-centric test tones to aid in the adjustment of output signal levels.

To familiarize yourself with the controls, you can initially select the Built-in Speakers of the Macintosh as your output device. You will be able to hear from the speakers what the other buttons do.

Notice the row of buttons for selecting Test tones. These are used for making AF level adjustments that are needed to match the transmitter’s requirements.

The Mark and Space buttons generate clean reference sine waves at the Mark (default of 2125 Hz) and Space (default of 2295 Hz) tones.

The Two Tone generator produces a sum of the mark and space tones, each of the tones are attenuated by 6 dB from the individual reference tones that is generated by the Mark or Space buttons.

The Diddle button generates the familiar RTTY idle pattern (a sequence of Baudot LTRS character).

The RY button generates a repeating sequence of R and Y Baudot characters. This pattern was used to tune the mechanism of old mechanical Teletype machines. It no longer serves any useful function for everyday use with modern equipment. For nostalgic reasons however, the RY sequence has been kept in use by some Amateurs, while other Amateurs find the use of the RY sequence to be a complete nuisance. Except for testing, I would recommend not to send the RY sequence on the air unless you know that the person on the other end is running an old mechanical Teletype machine.

The RY sequence remains mildly useful for equipment testing purposes since the sequence generate one of the highest bit transition rate of any Baudot character sequence – as a result, it will exhibit the widest spectrum occupancy. If you generate a clean spectrum when sending the RY sequence, chances are your spectrum will be clean in actual use.

Finally, the Text button generates a repeating “The quick brown fox jumps over the lazy dog” sequence, which is closer to “real-world” than the RY sequence.

If you had selected the Built-in speakers on the output device menu, you should be able to hear changes in the audio tones and patterns on the Macintosh’s speakers as you cycle through these test tones.

Once you are familiar with the output controls, you are ready to hook your audio device up to the transceiver and follow the transceiver’s AFSK level adjustment procedure, using one of these test tones as the test signal (I recommend using the diddle or the RY sequence).

Adjusting RTTY Output Level

Adjust cocoaModem’s RTTY output levels and any external devices (such as the trim pot in a SignaLink SL+ interface) to satisfy the transceiver’s requirements.

The main purpose of the AFSK adjustments is to make sure that you are operating within the linear region of an SSB transmitter. Usually, that means that the audio levels have to be reduced to the point where there is no ALC activity in an SSB transmitter. Typically, the procedure is to increase the the audio drive until you notice ALC kicking in, and then back off from that position so there is again no ALC action. Your transceiver manual should cover this under the AFSK or Packet description.

Please be careful not to overdrive the transmitter. An overdriven AFSK signal is overly broad, and possibly with keyclicks that can interfere with stations that are many kHz away. Keep an eye on the ALC of the transceiver as often as practical. The ALC setting can even vary with changing antenna SWR with some transceivers.

The audio response of your transmitter may not be flat (it is definitely not flat with a Yaesu FT-1000MP operating in PKT mode, for example) across the audio spectrum. With transceivers that do not have a sufficiently flat audio response, be sure to check to make sure that you are not over driving the transmitter each time you change the transmit tone pair (for example, when you click on the waterfall to change the tone-pair in the wideband RTTY interface).

Stop Bits

Characters in RTTY are transmitted asynchronously. Each character consists of a start bit, the 5 Baudot data bits and then a stop bit. A start bit is represented by a binary "0" and transmitted as a Space tone. The stop bit is a represented by a binary "1" and is transmitted as a Mark tone. The start of a character is detected by looking for a Mark to Space transition.

With 45 baud RTTY, all bits except the stop bit have the same duration of 22ms.

cocoaModem allows you to set the stop bit to be 1, 1.5 or 2 times the duration of the other bits. 1.5 stop bits is the most commonly used stop character today. I recommend that you select a stop bit duration that is no less than 1.5 times the duration of data bits.

cocoaModem’s Baudot decoder will track the stop bit duration of the received signal and there is no need for selecting the duration of stop bits for the receiver.

RTTY Macros

The following macros are specific to the RTTY interfaces.

%[b1] use narrow bandwidth
%[b2] use normal bandwidth
%[b3] use wide bandwidth
%[d1] use normal Mark/Space demodulator
%[d2] use light multipath demodulator
%[d3] use heavy multipath demodulator

Please note that all the RTTY interfaces share a single set of macros. When you edit the Macro Sheet for one RTTY interface, it take effect for all RTTY interfaces.

Basic RTTY Interface

Please proceed to the Basic RTTY Interface page.

Dual RTTY Interface

Please proceed to the Dual RTTY Interface page.

Wideband RTTY Interface

Please proceed to the Wideband RTTY Interface page.