hfmodem

Listening with the console

For installation and guided radio setup, start with the operator guide.

hfmodem console <mode> monitor opens the receive audio and decodes just that protocol. It does not call a station, answer a call, acknowledge a packet, scan channels or transmit. With no target it uses the rig's current dial and mode. Set the radio's sideband and filter for the signal you want to hear. A voice passband up to 4 kHz, such as the FTDX10's wide SSB filter, is supported: RTTY and SITOR/NAVTEX acquire tone pairs throughout that audio range. The audio input is captured at 48 kHz without cropping it to a 3 kHz data filter. Other waveforms use their standard audio placement; the wider radio filter does not change the waveform's bandwidth. The monitor preserves your radio's filter. Set filter_hz under [rig] in the station file to match your receive passband for accurate recording metadata.

For active ALE scanning, sounding, calls and native text, or selcall calling and paging, use the HFLINK console.

hfmodem console pactor monitor
hfmodem console rtty monitor --freq 14080
hfmodem console vara monitor NS0A --band 40
hfmodem console ardop monitor --peer W6IDS-40m-7061500-500
hfmodem console stanag4285 monitor --mode 1200L
hfmodem console mil110 monitor --framing 7E1
hfmodem console cw monitor --audio-centre 700
hfmodem console monitor --list-modes

Frequencies after --freq are dial frequencies in kHz: 7104 means 7.104 MHz. An optional peer is a saved console callsign or full channel ID; --band resolves callsigns listed on several bands. Multiple entries at the same dial frequency are one listening target. If a callsign names different frequencies, the command lists the matching IDs and asks you to choose. The peer is a frequency shortcut: traffic from other stations on that channel is still decoded. PACTOR, VARA and ARDOP use their own saved peer lists. Other monitor commands can use a named channel from any of those lists. No peer list is needed to monitor the current dial or an explicit frequency.

The console tunes once, before opening audio, when you supply a frequency or peer. You can then retune with the radio's controls and keep listening. The console never writes the frequency again or restores the starting dial on exit. The periodic channel line shows signal level and the latest CAT dial read. Decoded events from live rig monitoring do not attach an RF frequency calculated from the opening dial: a receiver can still be decoding buffered audio when you move the knob. The recording and events remain one continuous run. Give --dial HZ only to label a run when CAT is unavailable; it does not tune the radio.

Available receivers

Command modeWhat it decodesReceive selection
pactorPACTOR family receiversAutomatic within the PACTOR family
varaVARAAutomatic
ardopARDOPAutomatic
rttyITA2 RTTY, 45.45 Bd, 170 Hz shiftAutomatic tone-pair acquisition
sitor-bSITOR-B text, including NAVTEX bulletins100 Bd, 170 Hz shift
navtexCompleted NAVTEX bulletins over SITOR-BBulletin headers and text
sabirSabir beacons and control burstsExisting passive monitor decode path
rprRobust Packet AX.25 framesBoth supported levels; CRC-checked frames
ale2G ALE words, calls and messagesReceive primitives only; no link controller
selcallHF selcall, pages and other supported call typesNo automatic acknowledgment
mil110MIL-STD-188-110 serialRate and interleaver from preamble
stanag4285STANAG 4285--mode 1200L by default
stanag4529STANAG 4529--mode 600L by default; optional carrier suffix supported by Bateleur
stanag4539STANAG 4539Rate and interleaver from preamble
wbhfMIL-STD-188-110C appendix D, 3 kHzWaveform and interleaver from preamble
tone3939-tone parallel waveform--mode 600/33/A10.8 by default
tone1616-tone waveform--mode 1200 by default
fskBateleur binary FSK--mode 75W by default; e.g. 50N, 75V3D
mod110188-110A MOD channel bitsPayload coding remains unknown; output is packed channel bits
cwMorse text--audio-centre 700 Hz by default

stanag (also stang or bateleur) is a convenience spelling for selecting one Bateleur waveform. It defaults to 4285 at 1200L; for example, hfmodem console stanag monitor --mode '4529 600L' runs only 4529. The individual commands are clearer when you know the standard. --list-modes also lists aliases, including 110, 4285, 4529, 4539, sitor, robust-packet and the modem bird names.

The waveforms with an explicit receive selection do not identify that selection on air. Choose the correct rate, interleaver and carrier rather than assuming the default matches the transmission. For serial waveforms, --framing 8N1, 7E1 and the other supported character formats decode start-stop characters. The default SYNC preserves synchronous bytes; --bit-order lsb|msb selects their bit order. FSK and 39-tone have their own character framing. Receive sub-carriers are not restricted by the station's transmit passband; for example --mode 75V16D and --mode 600L/2400 remain available when listening through a wider filter. Binary output includes a hex representation, and terminal control bytes are escaped. A successful waveform decode alone does not prove an application message passed its own checksum.

PACTOR monitoring is passive observation of the existing receiver outputs; it does not establish an ARQ session or promise to reconstruct arbitrary third-party mail. Sabir's passive monitor recognizes its existing beacon and control formats. MOD monitoring does not claim to decode the unknown payload coding.

Sources, recordings and stopping

The monitor uses the selected station audio input; override it with --device NAME. It takes the console's arm locks while reading the local card so a console flight cannot contend for that stream. It never changes receive gain, sideband, filter or PTT.

By default a live run saves audio segments, events.jsonl and provenance under the station's configured [audio] capture_dir. --no-record disables audio recording while keeping events and provenance. Ctrl-C stops the source and lets the receiver drain; a second Ctrl-C stops waiting. --minutes N bounds the audio duration. These commands also accept the existing monitor sources and recording options:

hfmodem console rtty monitor --minutes 30 --no-record
hfmodem console pactor monitor --wav capture.wav
hfmodem console vara monitor --arm SAVED-ARM
hfmodem console navtex monitor --kiwi HOST --freq 518 --span 6000
hfmodem console rtty monitor --no-rtty-usos

--no-rtty-usos keeps RTTY in figures across spaces. A recording cannot be retuned with --freq or a peer; use --dial HZ for its frequency label. The selected receiver runs directly over the input audio, without the multimode tracker or per-track dispatch. Use the original hfmodem console monitor when you want all available monitor decoders and track discovery.