Field Guide · term

Also known as: DSC, digital selective calling, ITU-R M.493

The DSC message format is Digital Selective Calling as defined by ITU-R M.493 — the SOLAS-mandated digital calling protocol on marine VHF channel 70 (156.525 MHz) and the MF/HF distress channels, used for distress, urgency and safety alerts, ship-to-ship paging, and the routine call-up that precedes a voice working-frequency hand-off.1 On the air it is a 1200-baud FFSK stream (tones 1300 and 2100 Hz) of 7-bit data symbols, each wrapped in a short error-detecting code and sent twice for redundancy.2

phasing format MMSI (5 sym) category nature · position · time EOS each character = 10 bits: 7 data bits 3 check BCH(10,7), g(x)=x³+x+1 (0x0B) — minimum distance 2: detects one error, cannot correct it real correction comes from sending every character twice (DX / RX redundancy)
A DSC sequence is a chain of 7-bit symbols — format, MMSI address, category, and (for distress) nature/position/time — each carrying three BCH check bits and repeated for redundancy.

How it works

By the time symbols reach GopherTrunk’s dsc.Decode, the bit-stream layer above has already handled sync, the per-character BCH check, and the redundancy merge, so each symbol is one clean 7-bit value 0..127. The decoder reads the first symbol as the format specifier, then walks the fields that format prescribes. A distress alert carries the sender’s own MMSI immediately (no separate target), followed by a nature-of-distress symbol, a five-symbol position, and an HH:MM time; a non-distress call carries a target MMSI, a category, then the sender’s MMSI. Malformed or short sequences never error — they return with FormatUnknown and the raw symbols preserved, because a real receiver sees noisy half-frames constantly.

Format, category and nature tables

The leading symbols classify the call. GopherTrunk encodes the ITU-R M.493 code points directly:

Format Code Category Code Nature (distress) Code
Distress 112 Distress 112 Fire / explosion 100
All-ships 116 Urgency 110 Flooding 101
Group 114 Safety 108 Collision 102
Individual 120 Routine 100 Sinking 105
Geographic 102     Man overboard 110
Auto-individual 123     EPIRB emission 112

The “all-ships” and “distress-relay” formats share the same 116 code point and are told apart by the category. The nature table continues through grounding, listing, disabled-and-adrift, abandoning ship and piracy.

MMSI and position codec

Addresses and coordinates are packed as pairs of decimal digits per symbol. An MMSI is five symbols: each of the first four contributes two of the nine digits, and the fifth symbol’s high digit is the ninth MMSI digit while its low digit is a format-extension byte. A position is also five symbols — one quadrant digit (0 = NE, 1 = NW, 2 = SE, 3 = SW), four latitude digits (DDMM) and five longitude digits (DDDMM); GopherTrunk collapses the spec’s all-9s sentinel to “position unknown” and applies the quadrant as sign (bit 0 = West, bit 1 = South).

The detect-only BCH(10,7)

Despite the “BCH” label the spec uses, DSC’s per-character code has a minimum Hamming distance of only 2. Each 10-bit character is 7 data bits followed by 3 check bits computed as a CRC-3 with generator g(x) = x³ + x + 1 (binary 0x0B). Distance-2 means a single flipped bit is reliably detected but cannot be reliably corrected — legal codewords sit only one bit apart, so “correcting” a corrupted word could silently produce a different valid one. GopherTrunk’s BCHCheck therefore returns only a pass/fail syndrome; the real error correction comes from DX/RX redundancy, the M.493 scheme of sending every character twice and merging the two copies, which the bit-stream layer performs before symbols reach the decoder.

Sources

  1. Digital selective calling — Wikipedia, on the ITU-R M.493 marine calling protocol and its distress functions. 

  2. Maritime Mobile Service Identity — Wikipedia, on the 9-digit MMSI a DSC sequence addresses. 

See also