MINIMODEM(1)
π minimodem β general-purpose software audio FSK modem π
okay bestie, listen up, because this one is iconic and also kind of a lot. this is the minimodem(1) page from the General Commands Manual, and i am going to hold your hand through every single flag, no cap. π«Ά
β¨ NAME β¨
minimodem β a general-purpose software audio FSK modem. yes. a whole modem. in your terminal. it's giving 1994 but make it gorgeous. π
β¨ SYNOPSIS β¨
minimodem --tx [options] {baudmode}
minimodem --rx [options] {baudmode}
that's it. that's the whole shape of it. you're either transmitting or receiving, and you always gotta tell it the {baudmode}. no {baudmode}? no vibes. π¦
β¨ DESCRIPTION β¨
so basically, Minimodem is a command-line program that decodes (or generates) audio modem tones at any baud rate you want, using various framing protocols. it's a general-purpose software FSK modem, and it comes with built-in support for a bunch of standard FSK protocols β think Bell103, Bell202, RTTY, TTY/TDD, NOAA SAME, and Caller-ID. a whole squad. π
Minimodem can play and capture audio modem tones in real-time via the system audio device, or in batched mode via audio files. both. it contains multitudes. β¨
and the use cases?? immaculate. you can use Minimodem to transfer data between nearby computers using an audio cable (or literally just via sound waves, which is so cool it hurts π), or between remote computers using radio, telephone, or another audio communications medium. main character energy fr fr.
β¨ TX/RX MODE β¨
pick your fighter. you have to pick one.
-t,--tx,--transmit,--writeβ transmit mode: generate audio tones. you're the one speaking. π€-r,--rx,--receive,--readβ receive mode: decode audio tones. you're the one listening. π
β¨ {baudmode} β¨
okay so the required {baudmode} parameter can be any floating-point value to specify a baud rate, or any of the special keywords listed below. and here's the tea: the {baudmode} also implies certain other parameter defaults depending on the rate, including standard (or at least reasonable) default mark and space tone frequencies. so it's not just a number, it's a whole preset vibe. π
{any floating point value N}β Bell202-style at N bps--ascii1200β Bell202 1200 bps--ascii300β Bell103 300 bps--asciirttyβ RTTY 45.45 bps--baudot --stopbits 1.5tddβ TTY/TDD 45.45 bps--baudot --stopbits 2.0sameβ SAME 520.83 bps--startbits 0 --stopbits 0 --sync-byte 0xAB, the NOAA Specific Area Message Encoding (SAME) protocolcalleridβ Bell202 1200 bps Caller-ID (MDMF or SDMF) protocoluic-trainβ UIC-751-3 600 bps train-to-ground message protocol πuic-groundβ UIC-751-3 600 bps ground-to-train message protocol π
β¨ OPTIONS β¨
the big list. buckle up, bestie, we're going through ALL of them. π
-a,--auto-carrierβ Automatically detect mark and space frequences from carrier. let it figure it out itself. self-sufficient king. π-i,--invertedβ Invert the mark and space frequencies (applies whether the frequencies are defaults, discovered by--auto-carrier, or specified manually). flip it. π-c,--confidencemin-confidence-threshold β Set receive confidence minimum threshold (default1.5). The "confidence" value is a metric based primarily on the SNR (signal-to-noise ratio) of the received signal. This value acts as an FSK decoder "squelch" control. Increase to accept only very clean signals (up toINFINITY, but a value around5.0is more practical). Decrease to accept partial decoding of noisy signals (down to a minimum value of1.0). (This option applies to--rxmode only).-l,--limitmax-confidence-search-limit β Set receive confidence maximum search limit (default2.3). The "confidence" value is as described above. This value acts as a performance vs. analysis quality control. Increase (up toINFINITY) for a more pedantic analysis and higher CPU usage. Decrease (down to the min-confidence-threshold) for a sloppier analysis, with lower CPU usage. (This option applies to--rxmode only).-8,--asciiβ ASCII 8-N-1.-5,--baudotβ Baudot 5-N-1.5.-f,--filefilename.wav β encode or decode an audio file (extension sets audio format).-b,--bandwidth{rx_bandwidth} β the bandwidth, bestie.-v,--volume{tx_amplitude or 'E'} β Sets the generated signal amplitude (default is1.0). As a special case useful for testing, the value'E'sets the amplitude to the very small valueFLT_EPSILON. (This option applies to--txmode only).-M,--mark{mark_freq} β the mark frequency.-S,--space{space_freq} β the space frequency.--startbits{n} β Sets the number of start bits (default is1for most baudmodes).--stopbits{n.n} β Sets the number of stop bits (default is1.0for most baudmodes).--sync-byte{0xXX} β If this option is used, initial carrier acquisition will be suppressed until after one or more consecutive data frame(s) containing this value are received. This can be used to synchronize the stream for protocols which include a fixed preamble byte. (This option applies to--rxmode only).-q,--quietβ Do not report CARRIER / NOCARRIER or signal analysis metrics. shhh. π€«-R,--samplerate{rate} β Set the audio sample rate (default rate is48000Hz).-A,--alsa[={plughw:X,Y | X,Y | X }]β Use ALSA as the audio output system instead of the default PulseAudio (depending on build configuration options). The ALSA device alias"default"is used, if a specific device is not specified. For example, the following options all select ALSA device #1, sub-device #0:
--alsa=plughw:1,0 --alsa=1,0 -A1
--lut={tx_sin_table_len}β Minimodem uses a precomputed sine wave lookup table of1024elements, or the size specified here. Use--lut=0to disable the use of the sine wave lookup table. (This option applies to--txmode only).--float-samplesβ Generate 32-bit floating-point format audio samples, instead of the default 16-bit signed integer format (applies to--txmode only;--rxmode always uses 32-bit floating-point).--rx-oneβ Quit after the first carrier/no-carrier event (applies to--rxmode only). one and done. βοΈ--binary-outputβ Print received data bits as raw binary output using characters'0'and'1'. The bits are printed in the order they are received. Framing bits (start and stop bits) are omitted from the output. (This option applies to--rxmode only).--binary-raw{nbits} β Print all received bits (data bits and any framing bits) as raw binary output using characters'0'and'1'. Framing bits are not interpreted, but simply passed through to the output. The bits are printed in the order they are received, in lines{nbits}wide. So in order to display a standard 8-N-1 bitstream (8 databits + 1 start bit + 1 stop bit), use"--binary-raw 10"or a multiple of 10. (This option applies to--rxmode only).--print-filterβ Filter the received text output, replacing any "non-printable" bytes with a'.'character. (This option applies to--rxmode only).--tx-carrierβ When transmitting from a blocking source, keep a carrier going while waiting for more data.--benchmarksβ Run and report internal performance tests (all other flags are ignored). main character only. the other flags don't get a word in. π-V,--versionβ print program version.
β¨ EXAMPLES β¨
okay now the fun part, real actual things you can type. π
minimodem --tx 100
Transmit 100 baud tones from one computer ...
minimodem --rx 100
... and receive 100 baud tones on another nearby computer. it's a conversation. a little audio pen pal situation. π«Ά
minimodem --rx -a rtty
Decode amateur radio RTTY signals (listen near 14.085 MHz).
minimodem --rx same
Decode NOAA SAME protocol emergency alert transmissions, e.g. <http://en.wikipedia.org/wiki/Specific_Area_Message_Encoding>.
minimodem --tx 0.5
Experiment with very low baud rates (works in noisy conditions). slow and steady. π’
minimodem --tx 12000
Experiment with very high baud rates (works with audio files). zoom zoom. β‘
β¨ NOTES β¨
real talk, some boundaries:
- minimodem does not decode AX.25 framed packets. not that girl. π
- minimodem does not support modem control ("AT") commands, nor does it produce DTMF telephone dialing tones. so no dial-up screech, no touch-tone beeps. sorry bestie. π
β¨ VERSION β¨
This page documents minimodem version 0.24. The latest version is available at <http://www.whence.com/minimodem>.
β¨ AUTHOR β¨
minimodem was written by Kamal Mostafa <kamal@whence.com>. legend behavior. π
β¨ COPYRIGHT β¨
Copyright Β© 2011-2016 by Kamal Mostafa <kamal@whence.com>. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
β οΈ bestie. i need you to hear me on this one: NO WARRANTY. like, none. zero. it's free and it's yours and if it eats your audio setup that's between you and the universe. i'm just the messenger. π
and that's the whole page!! minimodem, from the General Commands Manual, dated June 10, 2013. go make some tones, you absolute icon. πβ¨π
π¦ where this page comes from
- debian bookworm: minimodem 0.24-1+b1 Β· GPL-3.0-or-later
- debian trixie: minimodem 0.24-1+b2 Β· GPL-3.0-or-later
- nixos 26.05: minimodem 0.24-1
- nixpkgs unstable: minimodem 0.24-1
- ubuntu jammy: minimodem 0.24-1 Β· GPL-3.0-or-later
- ubuntu noble: minimodem 0.24-1build3 Β· GPL-3.0-or-later
- ubuntu questing: minimodem 0.24-1build3
- ubuntu resolute: minimodem 0.24-1build4 Β· GPL-3.0-or-later
- ubuntu stonking: minimodem 0.24-1.1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms