Overview
FSK (Frequency Shift Keying) modems encode binary data by switching between two frequencies:- Mark frequency: Represents binary ‘1’ (or idle state)
- Space frequency: Represents binary ‘0’
--mark and --space options, enabling compatibility with custom protocols and non-standard signals.
Command-Line Options
—mark (-M)
Specifies the mark frequency in Hertz:The mark frequency must be greater than 0 Hz. There is no upper limit enforced, but practical limits apply based on sample rate and audio hardware.
—space (-S)
Specifies the space frequency in Hertz:Default Frequency Behavior
When not specified, minimodem automatically calculates mark and space frequencies based on the baud rate:High Speed (≥ 400 bps) - Bell 202 Style
- Mark: 1200 Hz
- Space: 2200 Hz
- Shift: -1000 Hz
Medium Speed (100-399 bps) - Bell 103 Style
- Mark: 1270 Hz
- Space: 1070 Hz
- Shift: 200 Hz
Low Speed (< 100 bps) - RTTY Style
- Mark: 1585 Hz
- Space: 1415 Hz
- Shift: 170 Hz
Examples
Standard Bell 202 (1200 bps)
Explicitly set Bell 202 frequencies:TTY/TDD (Telecommunication Device for the Deaf)
TDD uses specific frequencies for 45.45 bps Baudot:The
tdd mode automatically sets these frequencies, but you can override them if needed.NOAA SAME Weather Radio
SAME (Specific Area Message Encoding) uses:Custom Protocol
Create a completely custom FSK encoding:UIC-751-3 Train/Ground Communication
European train control system frequencies:Frequency Inversion
The--inverted option swaps the mark and space frequencies:
Frequency Shift
The shift is the difference between mark and space frequencies:- Positive shift: Mark > Space (e.g., Bell 103: 1270 - 1070 = +200 Hz)
- Negative shift: Mark < Space (e.g., Bell 202: 1200 - 2200 = -1000 Hz)
- 170 Hz: Traditional RTTY
- 200 Hz: Bell 103
- 850 Hz: High-speed Bell 202
- 1000 Hz: 1200 bps Bell 202
Auto-Detection
With--auto-carrier (-a), minimodem can automatically detect the mark frequency:
- Scans incoming audio for strong frequency components
- Identifies the mark frequency
- Calculates space frequency based on the expected shift
Bandwidth Filtering
The--bandwidth option affects how tightly the receiver filters around the mark and space frequencies:
- Narrower bandwidth: Better noise rejection, requires precise frequency tuning
- Wider bandwidth: More tolerant of frequency drift, but more noise
- ≥ 400 bps: 200 Hz
- 100-399 bps: 50 Hz
- < 100 bps: 10 Hz
Implementation Details
Fromsrc/minimodem.c, the frequency handling:
Troubleshooting
No Carrier Detected
If minimodem doesn’t detect a carrier:- Verify frequencies: Use audio analysis tools to measure actual frequencies
- Check signal level: Ensure adequate volume (use
--volumeto adjust) - Try auto-detect: Use
--auto-carrierto let minimodem find the signal - Increase bandwidth: Use
--bandwidthto widen the filter
Garbled Output
If output is mostly garbage:- Verify mark and space: Double-check frequency specifications
- Try inversion: Add
--invertedto swap frequencies - Check baud rate: Ensure the baud rate matches the signal
- Adjust confidence: Lower
--confidencethreshold
Frequency Drift
For signals with frequency instability:- Widen bandwidth: Increase
--bandwidthvalue - Use higher sample rate: Try
--samplerate 96000 - Check confidence limit: Adjust
--limitfor better tracking
Advanced Techniques
Scanning for Unknown Frequencies
Use a spectrum analyzer or the auto-carrier feature:Testing Frequency Response
Generate test tones to verify your audio path:Frequency Reference Table
| Protocol | Baud Rate | Mark (Hz) | Space (Hz) | Shift (Hz) |
|---|---|---|---|---|
| Bell 103 | 300 | 1270 | 1070 | +200 |
| Bell 202 | 1200 | 1200 | 2200 | -1000 |
| RTTY | 45.45 | 1585 | 1415 | +170 |
| TDD | 45.45 | 1400 | 1800 | -400 |
| NOAA SAME | 520.83 | 2083.3 | 1562.5 | +520.8 |
| UIC Ground | 600 | 1300 | 1700 | -400 |
See Also
- Custom Baud Rates - Configure non-standard baud rates
- Confidence Thresholds - Adjust signal detection
- Audio Backends - Configure audio hardware