Tone Modes in CHIRP

(None)

An empty Memory.tmode means that no tone is transmitted or received

Tone

A Memory.tmode of "Tone" means that the radio will transmit a single sub-audible tone, according to the Memory.rtone value. In this mode, the receiver is carrier squelch.

TSQL

A Memory.tmode of "TSQL" means that the radio will transmit a sub-audible tone, according to either the Memory.rtone or Memory.ctone value. In this mode, the receiver uses tone squelch with the same value as the transmitter. If the radio's feature set includes "has_ctone" (most Icom and Kenwood radios) then the value used in this case is Memory.ctone. Otherwise, use Memory.rtone.

DTCS

A Memory.tmode of "DTCS" means that the radio will transmit a DCS code, according to either the Memory.dtcs or Memory.rx_dtcs value. In this mode, the receiver uses DTCS squelch with the same value of the transmitter. If the radio's feature set includes "has_rx_dtcs" then the value used in this case is Memory.rx_dtcs. Otherwise, use Memory.dtcs.

TSQL-R

A Memory.tmode of "TSQL-R" means that the radio will squelch when the tone is received and use carrier squelch if not. This is usually used to listen for transmissions that should not be there. If the radio's feature set includes "has_ctone" then the value used in this case is Memory.ctone. Otherwise, use Memory.rtone.

DTCS-R

A Memory.mode of "DTCS-R" means that the radio will not transmit a sub-audible tone, but will squelch the receiver when the specified DCS is present and use carrier squelch when it is not. If the radio's feature set includes "has_rx_dtcs" then the value used in this case is Memory.rx_dtcs. Otherwise, use Memory.dtcs.

Cross

A Memory.tmode of "Cross" means that the radio will use an asymmetric squelch configuration according to the value of Memory.cross_mode:

Tone->Tone

A cross_mode of "Tone->Tone" means the radio will transmit one sub-audible and will use another tone to open the receive squelch. The tone values are in Memory.rtone and Memory.ctone respectively. By convention, the driver code generally expects "Cross": "Tone->Tone" to be used only when the two tones are different, and a mode of "TSQL" to be used when the tones are the same.

Tone->DTCS

A cross mode of "Tone->DTCS" means that the radio will use a sub-audible tone for transmit, according to Memory.rtone, and a DCS code for receiver squelch. If the radio's feature set includes "has_rx_dtcs" then the value used in this case is Memory.rx_dtcs. Otherwise, use Memory.dtcs

DTCS->Tone

A cross mode of "DTCS->Tone" means that the radio will use a DCS code for transmit, according to Memory.dtcs, and a sub-audible tone for receiver squelch. If the radio's feature set includes "has_ctone" then the value used in this case is Memory.ctone. Otherwise, use Memory.rtone.

->Tone

A cross mode of "->Tone" means that the radio will not transmit a sub-audible tone, but will enable tone squelch on the receiver. If the radio's feature set includes "has_ctone" then the value used in this case is Memory.ctone. Otherwise, use Memory.rtone.

->DTCS

A cross mode of "->DTCS" means that the radio will not transmit a sub-audible tone, but will enable DCS squelch on the receiver. If the radio's feature set includes "has_rx_dtcs" then the value used in this case is Memory.rx_dtcs. Otherwise, use Memory.dtcs.

DTCS->

A cross mode of "DTCS->" means that the radio will use a DCS code for transmit, according to Memory.dtcs. In this mode, the receiver is carrier squelch.

DTCS->DTCS

A cross mode of "DTCS->DTCS" means that the radio will transmit a DCS code and will use a DSC code to open the squelch. The code values are Memory.dtcs and Memory.rx_dtcs respectively. By convention, CHIRP generally uses "Cross":"DTCS->DTCS" when the two codes are different, and uses a mode of "DTCS" when they are the same.

Radio Behavior

Icom/Kenwood style

Most (maybe all?) Icoms and Kenwoods behave in a specific way. They store two tone values, one of which gets used in Tone mode, and the other which gets used in TSQL (CTCSS) mode. No Icom (that I'm aware of) can use the two values for separate TX and RX tones, nor can most Kenwoods. However, at least the Kenwood D72 can operate this way.

Yaesu style

Older Yaesu radios store just a single tone value, which gets used regardless of whether or not the radio is in Tone or TSQL mode.

Newer Yaesu HTs use both rtone and ctone. These radios support all of the ctcss modes. They also store separate DTCS transmit and receive. they support all modes except DTCS-R and all cross modes except TONE->DTCS and DTCS->Tone.

Commercial style (Wouxun, Baofeng, etc)

These radios store separate TX and RX tones all the time (and often overload the same field for DTCS and tone values, storing a flag if the value is not to be used). These are effectively in "Cross" mode all the time, but CHIRP detects the common modes and provides the appearance of the other radios (emulating Tone, TSQL, and DTCS where possible).

Memory tone fields usage matrix

This table summarize which memory fields are used in each tone mode.

           |   rtone  |  ctone  |   dtcs  | rx_dtcs
           +----------+---------+---------+--------
Tone       |    X     |         |         |
ToneSQL    | !has_ct  | has_ct  |         |
DTCS       |          |         | !has_rd | has_rd
->Tone     | !has_ct  | has_ct  |         |
->DTCS     |          |         | !has_rd | has_rd
Tone->     |    X     |         |         |
Tone->Tone |    X     |   X     |         |
Tone->DTCS |    X     |         | !has_rd | has_rd
DTCS->     |          |         |    X    |
DTCS->Tone | !has_ct  | has_ct  |    X    |
DTCS->DTCS |          |         |    X    |   X

Legend
X       field used
has_ct  used if has_ctone is set
!has_ct used if has_ctone is not set
has_rd  used if has_rx_dtcs is set
!has_rd used if has_rx_dtcs is not set