Skip to main content
Minimodem is a versatile tool with applications ranging from data transfer to amateur radio, debugging, and emergency communications. This guide explores practical use cases and detailed scenarios.

Data Transfer

Local Computer-to-Computer Transfer

Audio Cable Data Transfer

Transfer data between nearby computers using a 3.5mm audio cable.Setup:
  • Connect audio output of Computer A to audio input of Computer B
  • Use a standard 3.5mm stereo cable
  • Adjust audio levels to avoid distortion
Computer A (Transmitter):
minimodem --tx 1200 < data.txt
Computer B (Receiver):
minimodem --rx 1200 > received.txt
Advantages:
  • No network infrastructure required
  • Works between different operating systems
  • Air-gapped security (for isolated systems)
  • High reliability with direct cable connection
Typical applications:
  • Transferring small configuration files
  • Debugging isolated systems
  • Security-critical environments requiring air-gap
  • Backup communication channel

Acoustic Coupling (Air-Gap Transfer)

Wireless Audio Transfer

Transfer data through the air using speakers and microphones - no cables required!Setup:
  • Place computers close together (1-3 feet)
  • Ensure quiet environment
  • Use lower baud rates for reliability
# Transmit
echo "Secret message" | minimodem --tx 100

# Receive
minimodem --rx --confidence 1.0 100
Use cases:
  • Emergency communication when cables unavailable
  • Demonstrations and education
  • Temporary data sharing
  • IoT device configuration without network
Use 100 bps or lower for best results through air. Higher rates like 300 bps work in ideal conditions.

File Transfer with Error Checking

# Transmitter (with MD5 hash)
cat document.txt | tee >(md5sum >&2) | minimodem --tx 1200

# Receiver (verify with MD5)
minimodem --rx 1200 | tee received.txt | md5sum
Compare the MD5 hashes to verify successful transfer.

Amateur Radio Applications

RTTY (Radioteletype)

Decoding Amateur RTTY

Monitor and decode RTTY transmissions on amateur radio bands.Typical frequencies:
  • 20m: 14.085 MHz
  • 40m: 7.040 MHz
  • 80m: 3.580 MHz
Setup:
  1. Connect radio audio output to computer audio input
  2. Tune to RTTY frequency
  3. Use USB or LSB mode as appropriate
Receiving:
minimodem --rx --auto-carrier rtty
Transmitting:
echo "CQ CQ CQ DE YOURCALL YOURCALL YOURCALL K" | minimodem --tx rtty
Tips:
  • Use --auto-carrier to automatically detect transmitter frequencies
  • RTTY uses 170 Hz shift (45.45 baud)
  • May need --inverted depending on sideband (USB/LSB)
  • Adjust --confidence 1.0 for weak signals
Ensure you have proper amateur radio licensing before transmitting.

Packet Radio Integration

# Use minimodem as part of a packet radio setup
# with tools like direwolf or soundmodem

# Bell202 AFSK (common for APRS)
minimodem --rx 1200
Minimodem can be used as the modem component in larger packet radio systems.

Weak Signal Experimentation

# Very low baud rate for noisy conditions
minimodem --tx 0.5

# Or receive weak signals
minimodem --rx --confidence 1.0 --limit 5.0 0.5
Lower baud rates (0.5-45 bps) work better under poor propagation conditions or high noise.

Weather and Emergency Services

NOAA Weather Radio (SAME Protocol)

Weather Alert Monitoring

Decode NOAA Specific Area Message Encoding (SAME) weather alerts.NOAA Weather Radio frequencies:
  • 162.400 MHz
  • 162.425 MHz
  • 162.450 MHz
  • 162.475 MHz
  • 162.500 MHz
  • 162.525 MHz
  • 162.550 MHz
Setup:
# Connect weather radio output to computer
minimodem --rx same
Message format: SAME messages begin with ZCZC preamble followed by:
  • Event code
  • Location codes
  • Valid time period
  • Timestamp
Example alert:
ZCZC-WXR-RWT-012345-567890+0030-1234567-NOCALL/NWS
Applications:
  • Automated weather alert logging
  • Emergency notification systems
  • Integration with home automation
  • Scientific weather monitoring
SAME uses 520.83 bps with special framing (0 start bits, 0 stop bits, sync byte 0xAB).

Telecommunications

Caller-ID Decoding

Telephone Caller-ID

Decode caller identification information from telephone lines.Setup:
  • Use phone line to audio adapter
  • Connect between phone line and computer audio input
  • Ensure proper isolation
Receiving Caller-ID:
minimodem --rx callerid
Output example:
MDMF
DATE: 1209
TIME: 1430
NMBR: 5551234567
NAME: John Smith
Applications:
  • Call logging systems
  • Automated call routing
  • Security systems
  • Vintage telephony restoration
Formats supported:
  • MDMF (Multiple Data Message Format) - includes name and number
  • SDMF (Single Data Message Format) - number only
Use proper phone line isolation equipment. Direct connection between phone lines and computer audio can damage equipment.

TTY/TDD Communication

Telecommunications for the Deaf

Decode TTY/TDD (Telecommunications Device for the Deaf) transmissions.
minimodem --rx tdd
# or
minimodem --tx --baudot --stopbits 2.0 45.45
Characteristics:
  • 45.45 baud Baudot encoding
  • 2.0 stop bits
  • Compatible with TTY/TDD devices
Use cases:
  • Testing TTY equipment
  • Archival of TTY communications
  • Educational demonstrations
  • Accessibility research

System Administration & Debugging

Suspend/Resume Debugging

System State Monitoring

One of minimodem’s first practical applications was debugging suspend/resume issues.Concept:
  • Send continuous data during system suspend
  • Monitor for data corruption or timing issues
  • Detect when system actually enters/exits suspend
Setup:
# Transmitter (monitored system)
while true; do 
  echo "System active: $(date)"
  sleep 1
done | minimodem --tx 300

# Receiver (monitoring system)
minimodem --rx 300 | tee suspend-test.log
Analysis:
  • Gaps in received data indicate suspend periods
  • Corrupted data suggests timing issues
  • Can identify which components fail during suspend
This technique was used by Colin Ian King to debug Linux kernel suspend/resume issues. Read more

Serial Port Alternative

# Replace broken serial connection with audio
# Useful when serial ports are unavailable or broken

# Terminal 1 (acts as serial tx)
minimodem --tx 300

# Terminal 2 (acts as serial rx)  
minimodem --rx 300
Applications:
  • Debugging embedded systems
  • Router console access (OpenWRT)
  • Vintage computer interfacing
  • IoT device recovery

Educational and Experimental

Teaching Signal Processing

Demonstrate Modulation

Visualize FSK modulation:
echo "HELLO" | minimodem --tx --file demo.wav 300
# Open demo.wav in Audacity or similar
Students can see:
  • Mark vs. space frequencies
  • Start and stop bits
  • Baudot vs. ASCII encoding
  • Effect of baud rate on bandwidth

Hands-on Communications

Build a communication system:
  • Connect two Raspberry Pis via audio
  • Implement custom protocols
  • Add error detection
  • Experiment with different modulation parameters
Great for:
  • University coursework
  • Ham radio clubs
  • Maker workshops
  • Science fairs

Acoustic Data Transfer Experiments

Underwater Communication Research

Experimental acoustic data transmission:
# Ultra-low baud rate for challenging acoustic environments
minimodem --tx 0.5
Research areas:
  • Underwater communication
  • Through-wall data transfer
  • Covert acoustic channels
  • Speaker-to-microphone channels in various media
Parameters to experiment with:
  • Baud rate (0.5 to 12000+)
  • Frequency selection (--mark / --space)
  • Confidence thresholds
  • Bandwidth settings

Protocol Reverse Engineering

# Capture and analyze unknown FSK protocols
minimodem --rx --auto-carrier --binary-raw 10 300
Use for:
  • Understanding proprietary protocols
  • Vintage computer data recovery
  • Industrial equipment interfacing
  • Security research

Specialized Applications

Train Communication (UIC-751-3)

Railway Communications

European train-to-ground communication protocol.Train to ground:
minimodem --rx uic-train
Ground to train:
minimodem --rx uic-ground
  • 600 bps data rate
  • Railway-specific protocol
  • Safety-critical communications

Data Exfiltration Testing

Security Research

Testing acoustic covert channels:
# Simulated covert channel
echo "data" | minimodem --tx --volume 0.1 12000
Research areas:
  • Air-gap bridging detection
  • Ultrasonic data transmission
  • Covert channel analysis
  • Security policy testing
Only test on systems you own or have explicit permission to test. Covert channels may violate security policies.

Vintage Computing

Retro Computer Interfaces

Load programs into vintage computers:
# Load BASIC program into vintage computer
minimodem --tx 300 < program.bas
Applications:
  • Cassette tape replacement
  • Data recovery from old media
  • Retro gaming and computing
  • Computer history preservation
Compatible with:
  • Kansas City Standard tapes
  • Early home computers
  • Vintage modems
  • Historical equipment

Creative Applications

Audio Steganography

# Hide data in audio files
echo "hidden message" | minimodem --tx --file music.wav --volume 0.05 12000

# Extract hidden data
minimodem --rx --file music.wav --confidence 1.0 12000

Interactive Art Installations

  • Visitors send messages between exhibits via audio
  • Sound-based interaction without wireless infrastructure
  • Data transmission as part of artistic expression
  • Educational exhibits about communication technology

IoT and Home Automation

# Configure IoT device without network
echo "config:wifi:ssid:password" | minimodem --tx 100

# Device listens for configuration
minimodem --rx --rx-one 100 > /tmp/config
Advantages:
  • No network required for initial setup
  • Works through speaker and microphone
  • Simple fallback configuration method
  • No Bluetooth or WiFi needed

Performance Benchmarking

# Test different configurations
for rate in 100 300 1200 9600; do
  echo "Testing $rate bps"
  echo "benchmark" | minimodem --tx --file test.wav $rate
  time minimodem --rx --file test.wav $rate > /dev/null
done

Best Practices by Use Case

  • Use lower baud rates (100-300 bps)
  • Physical cable connection
  • Add error detection at application layer
  • Increase confidence threshold
  • Use appropriate sample rate
  • High baud rates (1200-12000 bps)
  • Direct cable connection
  • High sample rate (48000+ Hz)
  • Clean signal path
  • Integer sample format for lower CPU
  • Lower baud rates (< 100 bps)
  • Reduce confidence threshold (1.0-1.5)
  • Increase search limit
  • Use auto-carrier detection
  • Consider frequency selection carefully
  • Lower confidence search limit
  • Reduce sample rate if possible
  • Use ALSA instead of PulseAudio
  • Disable benchmarks at compile time
  • Consider integer-only processing

Getting Started

Pick a use case that interests you and start experimenting! Begin with:
1

Test locally

Use file-based audio to verify minimodem works:
echo "test" | minimodem --tx --file test.wav 1200
minimodem --rx --file test.wav 1200
2

Try acoustic coupling

Place two computers near each other:
minimodem --tx 100  # Computer 1
minimodem --rx 100  # Computer 2
3

Expand to your use case

Adapt the techniques to your specific application, adjusting parameters as needed.
Start with lower baud rates and increase once you have reliable communication.

Build docs developers (and LLMs) love