Overview
minimodem uses confidence values to measure signal quality and determine whether a valid FSK frame has been detected. Two key parameters control this behavior:--confidence(-c): Minimum confidence threshold (SNR-like squelch)--limit(-l): Maximum confidence search limit (performance vs. quality trade-off)
Confidence Values Explained
The confidence value is an SNR-like (Signal-to-Noise Ratio) measurement that indicates how clearly the FSK signal can be distinguished from noise. Higher values indicate cleaner signals.- Typical clean signal: confidence ≥ 3.0
- Marginal signal: confidence 1.5-3.0
- Noisy/weak signal: confidence < 1.5
Confidence is not a standardized dB measurement, but rather an internal metric specific to minimodem’s FSK decoder.
Command-Line Options
—confidence (threshold)
Sets the minimum confidence required to accept a frame as valid. Syntax:1.5
From source code (src/minimodem.c line 519):
Examples
Strict threshold for clean signals:—limit (search limit)
Sets the maximum confidence at which to stop searching for a better frame. Syntax:2.3
From source code (src/minimodem.c line 528):
How It Works
When decoding each frame, minimodem:- Scans through possible frame positions
- Calculates confidence for each position
- Stops searching when it finds a frame with confidence > search limit
- Uses the best frame found
- Lower limit: Faster performance, but may miss optimal frame position
- Higher limit: Better decode quality for difficult signals, slower performance
- INFINITY: Always finds the absolute best frame (slowest)
Examples
Fast decoding (lower quality):Relationship Between Parameters
The confidence threshold and search limit work together:The search limit is automatically adjusted to be at least as high as the confidence threshold.
Practical Use Cases
Clean Audio File Decoding
For high-quality recordings with minimal noise:Real-Time Radio Reception
For noisy radio signals with fading:Weak Signal DX (Long Distance)
For extremely weak signals at the edge of detectability:High-Speed Clean Signals
Optimized for performance with clean high-speed data:Bell 103 or Skewed Rates
For difficult-to-decode signals requiring careful frame alignment:NOCARRIER Report
When a carrier is lost, minimodem prints a summary including average confidence:- ndata: Number of frames decoded
- confidence: Average confidence across all frames
- ampl: Average signal amplitude
- bps: Effective throughput (should match baud rate)
Monitor the confidence values in NOCARRIER reports to tune your threshold settings. If average confidence is much higher than your threshold, you can increase the threshold to reject more noise.
No-Confidence Handling
Fromsrc/minimodem.c line 1290:
- Drops the carrier
- Prints the NOCARRIER report
- Returns to carrier search mode
Performance Implications
CPU Usage vs. Search Limit
| Search Limit | CPU Usage | Quality |
|---|---|---|
| 1.5 | Low | Basic |
| 2.3 (default) | Medium | Good |
| 5.0 | High | Better |
| inf | Very High | Best |
Confidence Threshold Impact
- Higher threshold: Fewer false positives, may miss weak signals
- Lower threshold: More tolerance for noise, more false positives
Advanced Tuning
Finding Optimal Values
- Start with defaults: Test with
--confidence 1.5 --limit 2.3 - Monitor NOCARRIER: Check average confidence values
- Adjust threshold: Set slightly below average confidence
- Tune limit: Increase if frames are misaligned or output is garbled
Signal Analysis
Use quiet mode to see only confidence reports:Amplitude Considerations
Low amplitude can cause low confidence. Increase volume:The
--volume option only affects transmission. For receive, adjust your audio input levels using system controls or mixer settings.Implementation Details
Frame Search Algorithm
Fromsrc/minimodem.c line 1265:
- Searches multiple frame positions (default: 3 steps)
- Evaluates confidence at each position
- Stops early if confidence exceeds search limit
- Returns the best frame found
Fine Frame Refinement
When carrier is acquired or confidence drops, minimodem performs a fine search with 8 steps instead of 3:Troubleshooting
No Output Despite Visible Signal
Problem: minimodem detects carrier but produces no output Solutions:- Lower confidence threshold:
--confidence 1.0 - Increase search limit:
--limit 4.0 - Check frequency settings: Verify
--markand--space - Adjust bandwidth: Try
--bandwidthto widen or narrow filter
Excessive Garbage Output
Problem: minimodem outputs random characters when no signal is present Solutions:- Raise confidence threshold:
--confidence 2.0 - Use auto-carrier: Add
--auto-carrierto suppress noise - Check input level: Reduce input gain to avoid clipping
Intermittent Decoding
Problem: Some frames decode correctly, others are lost Solutions:- Increase search limit:
--limit 3.0 - Lower threshold slightly:
--confidence 1.2 - Monitor confidence: Check NOCARRIER reports for patterns
- Check for interference: Verify clean audio path
Slow Performance
Problem: minimodem uses excessive CPU Solutions:- Decrease search limit:
--limit 2.0 - Use faster baud rate if possible
- Reduce sample rate:
--samplerate 24000(for high-speed modes)
Best Practices
See Also
- Custom Baud Rates - Configure non-standard speeds
- Frequency Tuning - Adjust mark and space frequencies
- Audio Backends - Configure audio hardware settings