Skip to main content
minimodem is a command-line software audio FSK modem that can be installed on Linux, macOS, and Windows. Follow the instructions below for your operating system.

Linux

1

Install dependencies

Minimodem requires several libraries and build tools:
sudo apt update
sudo apt install libsndfile1-dev fftw3-dev libasound2-dev libpulse-dev libsndio-dev
sudo apt install pkg-config automake
The key dependencies are:
  • libsndfile - for audio file I/O
  • fftw3 - for FFT signal processing
  • alsa-lib - for ALSA audio backend
  • pulseaudio - for PulseAudio backend
  • libsndio - for sndio backend (optional)
2

Build from source

Clone the repository and build:
git clone https://github.com/kamalmostafa/minimodem.git
cd minimodem
autoreconf -i
./configure
make
You can customize the build with configure options:
  • --without-alsa - build without ALSA support
  • --without-pulseaudio - build without PulseAudio support
  • --without-sndio - build without sndio support
  • --without-sndfile - build without audio file support
3

Test the installation

Run the test suite to verify the build:
make check
All tests should pass. If you see any failures, check your dependencies.
4

Install minimodem

Install the binary to your system:
sudo make install
Verify the installation:
minimodem --version

macOS

1

Install Homebrew

If you don’t have Homebrew installed:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2

Install dependencies

Use Homebrew to install required libraries:
brew install libsndfile fftw autoconf libtool
brew install automake || brew upgrade automake
macOS doesn’t have ALSA, so minimodem will use the available audio backends (PulseAudio or file I/O).
3

Build and install

Clone and build minimodem:
git clone https://github.com/kamalmostafa/minimodem.git
cd minimodem
autoreconf -i
./configure --without-alsa --without-sndio
make
make check
sudo make install
4

Test the installation

Verify minimodem is working:
echo "hello" | minimodem --tx --file test.wav 1200
minimodem --rx --file test.wav 1200
You should see the decoded “hello” text.

Windows (via Cygwin)

1

Download Cygwin installer

Download the appropriate Cygwin installer for your system:
Most modern Windows systems are 64-bit. If unsure, download the 64-bit version.
2

Install required packages

Run the Cygwin installer and install these packages:Build tools:
  • gcc-core
  • make
  • automake
  • autoconf
  • pkg-config
  • gawk
  • libgcc1
Audio libraries:
  • pulseaudio
  • libpulse0
  • libpulse-simple0
  • libpulse-devel
Signal processing libraries:
  • libsndfile1
  • libsndfile-devel
  • libsndfile-utils
  • fftw3
  • libfftw3_3
  • libfftw3-devel
Other dependencies:
  • libevent2.0_5
  1. Click “Next” until you reach the “Select Packages” screen
  2. Click the dropdown list next to “View” and select “Full”
  3. Search for each package name (e.g., “gcc-core”)
  4. Double-click “Skip” next to the package so it changes to a version number
  5. Repeat for all packages listed above
  6. Click “Next” to install
If you get “Could not download mirror sites list”, visit cygwin.com/mirrors.html, copy any mirror URL, and manually add it in the installer.
3

Build minimodem

Open a Cygwin terminal and build minimodem:
git clone https://github.com/kamalmostafa/minimodem.git
cd minimodem
autoreconf -i
./configure --without-alsa --without-sndio
make
4

Test and install

Run the test suite:
make check
If all tests pass, install minimodem:
make install
Test with audio output:
echo hello | minimodem --tx 100 -M 1000 -S 3000
You should hear audible tones through your speakers.
On first run, you may see a PulseAudio capabilities message. If this happens, run the command again and it should work.

Troubleshooting

This means you’re missing a required dependency. Check the error message to see which package is missing, then install it using your package manager.Common missing packages:
  • pkg-config - required for detecting other libraries
  • fftw3 or fftw3f - required for FFT signal processing
  • libsndfile - required for audio file support
If the test suite fails:
  1. Check that all dependencies are properly installed
  2. Try building with specific backends disabled:
    ./configure --without-alsa
    
  3. Check the test output in tests/*.log for specific errors
Ensure you have the correct audio backend installed:
  • For ALSA: install libasound2-dev
  • For PulseAudio: install libpulse-dev
  • Check if your audio device is working: aplay -l or pactl list sinks
You can also explicitly specify the audio backend:
minimodem --alsa --tx 1200
Some operations may require elevated privileges. Try with sudo:
sudo make install

Next Steps

Quick Start

Learn how to transmit and receive data with minimodem

Usage Examples

Explore advanced usage scenarios and protocols

Build docs developers (and LLMs) love