Skip to main content

Overview

minimodem supports custom baud rates through a simple numeric specification. Instead of using a predefined mode like 300 or 1200, you can specify any floating-point baud rate value to match custom or proprietary protocols.

Syntax

To use a custom baud rate, simply specify the desired rate as a floating-point number:
minimodem --tx <baud_rate>
minimodem --rx <baud_rate>
Where <baud_rate> is any floating-point value N representing bits per second.

How It Works

When you specify a numeric baud mode (rather than a named mode like rtty or 1200), minimodem:
  1. Sets the data rate to your specified value
  2. Auto-calculates frequencies based on the baud rate:
    • For rates ≥ 400 bps (Bell 202-like):
      • Mark frequency: baud_rate / 2 + 600 Hz
      • Space frequency: Mark - (5 * baud_rate / 6) Hz
    • For rates 100-399 bps (Bell 103-like):
      • Mark frequency: 1270 Hz
      • Space frequency: 1070 Hz (200 Hz shift)
    • For rates < 100 bps (RTTY-like):
      • Mark frequency: 1585 Hz
      • Space frequency: 1415 Hz (170 Hz shift)
  3. Defaults to ASCII 8-N-1 framing (8 data bits, no parity, 1 stop bit)
The automatic frequency calculation follows industry-standard Bell modem conventions. You can override these with --mark and --space options.

Examples

Basic Custom Baud Rate

Transmit at 600 bps:
echo "Hello World" | minimodem --tx 600
Receive at 600 bps:
minimodem --rx 600

Custom Baud with 7-bit ASCII

For protocols using 7-bit characters:
minimodem --tx -7 450

Fractional Baud Rates

For precise timing requirements (e.g., NOAA SAME uses 520.83 bps):
minimodem --rx 520.83
Use fractional values when matching official protocol specifications that define non-integer baud rates.

Custom Baud with Custom Frequencies

Override the automatic frequency calculation:
minimodem --tx 150 --mark 1000 --space 1200

Custom Baud for Audio Files

Decode a recording at a non-standard rate:
minimodem --rx -f recording.wav 450.5

Baud Rate Ranges

minimodem can handle a wide range of baud rates:
  • Low speeds (< 100 bps): Suitable for RTTY and low-bandwidth applications
  • Medium speeds (100-400 bps): Bell 103 compatible range
  • High speeds (≥ 400 bps): Bell 202 compatible range
  • Very high speeds: Limited by sample rate and audio bandwidth
Extremely high baud rates may not decode reliably due to audio bandwidth limitations and the Nyquist frequency. The default 48 kHz sample rate theoretically supports up to ~24 kHz signals, but practical limits are lower.

Combining with Other Options

Custom Framing

Specify custom start/stop bits:
minimodem --tx 250 --startbits 2 --stopbits 1.5

Inverted Frequencies

Swap mark and space frequencies:
minimodem --rx 600 --inverted

Custom Bandwidth

Adjust the receive bandwidth filter:
minimodem --rx 150 --bandwidth 25

Protocol Implementation

Here’s how custom baud rates are processed internally:
// From src/minimodem.c line 883
bfsk_data_rate = atof(modem_mode);
if ( bfsk_n_data_bits == 0 )
    bfsk_n_data_bits = 8;
The frequency auto-detection logic (lines 900-934):
  • ≥ 400 bps: Bell 202-style, mark = baud/2 + 600, negative shift
  • 100-399 bps: Bell 103-style, mark = 1270 Hz, 200 Hz shift
  • < 100 bps: RTTY-style, mark = 1585 Hz, 170 Hz shift

Troubleshooting

Poor Decode Quality

If decoding fails at custom baud rates:
  1. Verify the actual baud rate: Measure the signal timing
  2. Adjust confidence threshold: Use --confidence to relax requirements
  3. Tune frequencies manually: Use --mark and --space options
  4. Check bandwidth: Adjust --bandwidth to match signal characteristics

Sample Rate Considerations

For very high baud rates, increase the sample rate:
minimodem --rx --samplerate 96000 5000

Best Practices

  • Document your settings: Keep notes on custom configurations for reproducibility
  • Test both directions: Verify TX and RX work symmetrically
  • Use —print-filter: Enable to see which characters are being filtered
  • Start with standard rates: Test with known-good rates before using custom values

See Also

Build docs developers (and LLMs) love