hfmodemDocumentation

STANAG 4529 (maritime, 1240 Hz)

hfmodem.bateleur.s4529 sends and receives STANAG 4529: the single-tone waveform for maritime HF links in 1240 Hz. It was written from the Joint Interoperability Test Command's *STANAG 4529 Conformance Test Procedures* (April 2004). Its paragraph 1.2 and appendix B restate the STANAG's requirements one by one (reference numbers 1–17). The STANAG's own text was not available. No other implementation was read, and nothing has been tested against another sender.

The waveform

PartTest procedures
8-PSK at 1200 Bd on a sub-carrier selectable from 800 to 2400 Hz in 100 Hz steps, 1700 Hz by default; 99% of the power within 1240 Hz1.2 b, d
A frame of 256 symbols (213.3 ms): 80 symbols of 2-PSK sync, then three blocks of 32 data and 16 reference symbols and a last of 32 data1.2 e
Sync from x⁵ + x² + 1 loaded with 11010 at every frame, the first symbol its least significant bit1.2 f; the 80 bits printed in table 1.6
The 176 reference and data symbols scrambled by an 8-phase sequence from x⁹ + x⁴ + 1 loaded with ones, three bits a symbol1.2 g, h
One, two or three bits a symbol at channel rates of 600, 1200 and 1800 bit/s1.2 c, tables 1.2–1.4
Coding, interleaving, interleaver synchronization and message protocol as STANAG 4285 annex E for the next higher data rate; 32 rows, each delayed 48, 24 or 12 more (long, 20.48 s) or 4, 2 or 1 (short, 1.706 s); the flush for each1.2 j, table 1.5
Uncoded channel rates of 600, 1200 and 1800 bit/s1.2 k
An offset of up to 37.5 Hz, drifting up to 3.5 Hz/s1.2 i

Every part of that is STANAG 4285's, symbol for symbol. That covers the frame, the sync sequence (the procedures' 80-bit pattern is 4285's), the scrambler, the bit-to-symbol tables, and the coding, interleaving and flush of the 4285 mode at twice the rate: the procedures' flush counts are what 4285's give. So a 4529 transmission here is a 4285 transmission at half speed, moved to the 4529 sub-carrier (stretch). The receiver brings the audio back to 4285's time scale and carrier (Squeeze, which streams) and runs the 4285 receiver, reporting offsets and times on the real scale.

Modes

Modes are named by user rate and interleaver as for 4285: 1200L, 1200S, 600L … 75S. Uncoded modes take the channel rate: 1800U, 1200U, 600U. A sub-carrier other than 1700 Hz goes after a slash: 600L/2000. Both ends set the mode beforehand (MODE 4529 <mode> on the host port; offair render|decode 4529 --mode). On the station, a sub-carrier is keyed only if the whole pulse (±660 Hz) lies in the span the station declares (365–2985 Hz), which means 1100 to 2300 Hz.

How it is tested

Against itself through bateleur.sim's channels:

Its performance follows 4285's, scaled to half the symbol rate. The same multipath delay spans half as many symbols, while a Doppler spread is twice as large against the symbol rate. So 4529 on a channel is 4285 on one with half its delays and twice its spread, as measured in bateleur's implementation notes.