FLDIGI(1)

πŸ’– fldigi(1) β€” the manual, but make it cute πŸ’–

okay bestie, so this is the manual page for fldigi, and we're doing it in sections because there's a lot. Section order stays exactly like the original, no skipping, no "lol you'll figure it out". You're welcome. 🫢


✨ NAME ✨

fldigi β€” a digital modem program for hamradio operators. that's it, that's the whole vibe. πŸ’…


✨ SYNOPSIS ✨

fldigi [OPTIONS]

✨ DESCRIPTION ✨

so Fldigi is a cross-platform, multi-modem program that covers basically most of the digital modes ham radio operators are out here using today. and when we say most, we mean: CW, PSK, MFSK, MT-63, RTTY, Hellschreiber, DominoEX, Olivia, THOR and Throb β€” all of them, supported, no cap. πŸ¦‹

she can also help you calibrate a sound card to a time signal, and run on-air frequency measurement tests. like, she's versatile.

and the features? oh we love a multi-talented queen:

  • basic rig control πŸ‘‘
  • logging πŸ““
  • contest operation πŸ†
  • "panoramic" PSK decoding 🌈
  • a PSK Reporter client πŸ“‘
  • remote control via XML-RPC πŸ’»

✨ OPTIONS ✨

quick rules before we dive in, bestie, because grammar matters even here:

  • Long options start with two hyphens and they're handled by fldigi itself. you can abbreviate the option name to any unambiguous substring, and the option argument can be separated from the name by a space or an equals sign β€” that's the getopt(3) way. ✨
  • Short options start with one hyphen and get passed directly to FLTK. these ones you can only abbreviate exactly as indicated, no freestyling. πŸ™ˆ

πŸŽ€ the main options πŸŽ€

  • --config-dir DIRECTORY β€” tells her where to look for and stash configuration files, in the directory DIRECTORY. if that directory doesn't exist yet? she makes it. defaults to "$HOME/.fldigi". πŸ’–
  • --rx-ipc-key KEY β€” sets the receive message queue key. you can hand it over in hex if you prefix it with "0x". defaults to "9876" or "0x2694".
  • --tx-ipc-key KEY β€” sets the transmit message queue key. same deal, hex works with the "0x" prefix. defaults to "6789" or "0x1a85".
  • --arq-server-address HOSTNAME β€” sets the ARQ TCP server address. defaults to "127.0.0.1". HOSTNAME can be any node name string that getaddrinfo(3) will accept, so go wild (responsibly).
  • --arq-server-port PORT β€” sets the ARQ TCP server port. defaults to "7322". PORT can be any service name string that getaddrinfo(3) accepts.
πŸ“Œ Note β€” the --xmlrpc-* options are only available if fldigi was built with XML-RPC support. no XML-RPC build, no XML-RPC options, that's just how it is. 😭
  • --xmlrpc-server-address HOSTNAME β€” sets the XML-RPC server address. defaults to "127.0.0.1".
  • --xmlrpc-server-port PORT β€” sets the XML-RPC server port. defaults to "7362".
  • --xmlrpc-allow REGEX β€” allows only the methods whose names match REGEX. and REGEX is a POSIX extended regular expression, so it's the real thing. πŸ”₯
  • --xmlrpc-deny REGEX β€” allows only the methods whose names do not match REGEX.
  • --xmlrpc-list β€” lists every available XML-RPC method and then dips out (exits). pro move: you can put --xmlrpc-allow or --xmlrpc-deny in front of it to check their effect. ✨
  • --cpu-speed-test β€” runs the CPU speed test that normally happens when fldigi runs and there's no existing configuration directory. results show up in the event log, and options can be changed to whatever values are recommended for the measured CPU speed. πŸ’…
  • --noise β€” unhides the controls for adding noise to the transmitted signal. yes, on purpose. πŸŽ›οΈ
  • --wfall-only β€” hides all the main window widgets except the menu bar and the waterfall (plus its associated controls). this is meant to be used with external programs that control fldigi over XML-RPC.
  • --debug-level LEVEL β€” sets how chatty the event log is. LEVEL gets clamped to the range [0,5], for Quiet, Error, Warning, Info, Verbose and Debug. defaults to "3" (Info).
  • --version β€” prints version information and exits.
  • --build-info β€” prints build information and exits.
  • --help β€” prints the options summary and exits.

🌸 Standard FLTK options 🌸

these are the FLTK classics, passed straight through:

  • -bg, -background COLOUR β€” sets the background colour.
  • -bg2, -background2 COLOUR β€” sets the secondary (text) background colour.
  • -di, -display DISPLAY β€” specifies the X server to connect to; peep X(7) for the deets.
  • -dn, -dnd or -nodn, -nodnd β€” enable or disable drag and drop copy and paste in text fields.
  • -fg, -foreground COLOUR β€” sets the foreground colour.
  • -g, -geometry GEOMETRY β€” sets the initial window size and position. heads up though: Fldigi may not honour this option. πŸ™ˆ
  • -i, -iconic β€” starts fldigi in an iconified state. and again β€” Fldigi may not honour this option. 😭
  • -k, -kbd or -nok, -nokbd β€” enable or disable visible keyboard focus in non-text widgets.
  • -na, -name CLASSNAME β€” sets the window class. defaults to "Fldigi".
  • -ti, -title WINDOWTITLE β€” sets the window title. defaults to "fldigi - <callsign>".

πŸ¦‹ Additional UI options πŸ¦‹

  • --font FONT[:SIZE] β€” sets the widget font and, optionally, the size. defaults to "sans:12".

🧚 Options useful to developers 🧚

πŸ“Œ Note β€” the --benchmark-* options are only enabled if fldigi was built (exclusively) for benchmarking and batch decoding. so if your build wasn't made just for that, don't come looking. πŸ’€
  • --benchmark-modem ID β€” specifies the modem. defaults to "25" ("BPSK31").
  • --benchmark-frequency FREQ β€” sets the modem frequency in Hz. defaults to "1000".
  • --benchmark-afc BOOLEAN β€” enable or disable modem AFC. defaults to "false".
  • --benchmark-squelch BOOLEAN β€” enable or disable modem squelch. defaults to "false".
  • --benchmark-squelch-level LEVEL β€” sets the modem squelch level (1β€”100%). defaults to "0.0".
  • --benchmark-input INPUT β€” specifies the input. it has to be a positive integer saying how many samples of silence to generate as the input, or β€” if fldigi was linked with libsndfile β€” the name of the input audio file. and if you're going the filename route, the filename must contain non-digit characters. πŸ‘‘
  • --benchmark-output FILE β€” specifies the output data file. non-textual output (i.e. Hellschreiber or MFSK images) cannot be saved. default: the decoder output just gets discarded. πŸ—‘οΈ
  • --benchmark-src-ratio RATIO β€” specifies the sample rate conversion ratio. defaults to "1.0" (input is not resampled).
  • --benchmark-src-type TYPE β€” sets the sample rate conversion type. TYPE is an integer in the range [0,4]. defaults to "2" ("Fastest SINC Interpolator").
⚠️ Warning β€” the following options should not be relied upon. they're listed here purely for the sake of completeness, and they may be replaced by GUI settings or removed altogether in a future version. fr fr, don't build your whole setup on these. 😭
  • --wfall-width WIDTH β€” sets the waterfall width.
  • --wfall-height HEIGHT β€” sets the waterfall height.
  • --window-width WIDTH β€” sets the minimum window width.
  • --window-height HEIGHT β€” sets the minimum window height.
  • --exit-after SECONDS β€” runs for approximately SECONDS seconds.
  • --frames-per-buffer FRAMES β€” sets the frames per buffer option to FRAMES when creating PortAudio streams. defaults to "0" (let PortAudio choose). πŸ’…

✨ ENVIRONMENT ✨

fldigi uses a whole bunch of environment variables, mostly set for child processes created by the <EXEC> macro and the notifier. it's giving "we made you a little ecosystem". 🌈


πŸ’œ General variables πŸ’œ

  • FLDIGI_BROWSER β€” the web browser to use for http and file URIs. this one overrides $BROWSER and xdg-open(1). she's the main character here. πŸ‘‘

πŸ’œ Macro variables πŸ’œ

the following variables get created in the environment of the child process that is forked by the <EXEC> macro. if values aren't available, they're just empty. no drama. ✨

  • FLDIGI_RX_IPC_KEY β€” the receive message queue key.
  • FLDIGI_TX_IPC_KEY β€” the transmit message queue key.
  • FLDIGI_XMLRPC_ADDRESS β€” the XML-RPC server address string.
  • FLDIGI_XMLRPC_PORT β€” the XML-RPC server port string.
  • FLDIGI_ARQ_ADDRESS β€” the ARQ server address string.
  • FLDIGI_ARQ_PORT β€” the ARQ server port string.
  • FLDIGI_VERSION β€” the version string.
  • FLDIGI_PID β€” the process ID of the parent fldigi process.
  • FLDIGI_CONFIG_DIR β€” the configuration directory.
  • FLDIGI_MY_CALL β€” the operator's callsign.
  • FLDIGI_MY_NAME β€” the operator's name.
  • FLDIGI_MY_LOCATOR β€” the operator's IARU (Maidenhead) locator.
  • FLDIGI_MODEM β€” the short modem name.
  • FLDIGI_MODEM_LONG_NAME β€” the long modem name.
  • FLDIGI_DIAL_FREQUENCY β€” the rig (radio) frequency.
  • FLDIGI_AUDIO_FREQUENCY β€” the modem (audio) centre frequency.
  • FLDIGI_FREQUENCY β€” the actual receive/transmit frequency, i.e. the sum of rig and modem frequencies taking into account the rig sideband.
  • FLDIGI_LOG_FREQUENCY β€” the text (frequency in MHz) contained in the QSO Freq log field.
  • FLDIGI_LOG_TIME_ON β€” the text (QSO start time) contained in the (time) On log field.
  • FLDIGI_LOG_TIME_OFF β€” the text (QSO end time) contained in the (time) Off log field.
  • FLDIGI_LOG_CALL β€” the text (other station's callsign) contained in the Call log field.
  • FLDIGI_LOG_NAME β€” the text (other station's name) contained in the Name log field.
  • FLDIGI_LOG_RST_IN β€” the text (received RST) contained in the (RST) In log field.
  • FLDIGI_LOG_RST_OUT β€” the text (sent RST) contained in the (RST) Out log field.
  • FLDIGI_LOG_QTH β€” the text (other station's QTH) contained in the QTH log field.
  • FLDIGI_LOG_LOCATOR β€” the text (other station's Maidenhead locator) contained in the Loc log field.
  • FLDIGI_LOG_NOTES β€” the text (free-form notes) contained in the Notes log field.
  • FLDIGI_AZ β€” the text (azimuth in degrees to other station) contained in the Az log field.

πŸ’œ Notifier variables πŸ’œ

these ones get created in the environment of child processes created by the notifier. πŸŽ€

  • FLDIGI_NOTIFY_STRi β€” these variables (i in [0,9]) contain substrings matched by capturing groups in the event's regular expression. 0 contains the whole matched text.
  • FLDIGI_NOTIFY_STR_NUM β€” the number of substrings available.
  • FLDIGI_NOTIFY_CALLSIGN β€” builtin event types that match callsigns will place the callsign in this variable.
  • FLDIGI_NOTIFY_TEXT β€” the complete string that matched the event's regular expression.
  • FLDIGI_NOTIFY_AUDIO_FREQUENCY β€” the modem frequency.
  • FLDIGI_NOTIFY_EVENT β€” the event type.
  • FLDIGI_NOTIFY_COUNTRY β€” the station's country name (for events of type "station heard twice").

πŸ’œ Debugging variables πŸ’œ

these are only used if fldigi was built with debugging support (--enable-debug), or they're only useful when you're debugging specific modules. πŸ”§

  • FLDIGI_NO_EXEC β€” if set, this variable disables glibc's malloc debugging, which fldigi enables by default when built for debugging.
  • FLDIGI_TRACE_LOCKS β€” traces Fl::lock() calls.
  • FLDIGI_HAMLIB_DEBUG β€” initialises hamlib in debug mode.

more coming bestie, don't go anywhere πŸ’–

🚨 RESTRICTIONS 🚨

okay bestie, legal tea time, don't skip this one πŸ’…

Fldigi is licensed under the GNU GPL, which means you've got the right to run the program for any purpose (that's freedom 0, periodt). BUT β€” and this is the big but β€” permission to actually use it to transmit radio signals can only come from the communications authority of your country. And when they do hand it out, it's almost always in the form of an amateur radio license. no cap.

Now, if you don't have an amateur radio license, you can still absolutely have fun with fldigi as a shortwave listener 🎧✨. One way to do that? Use the builtin PSK Reporter client to submit realtime spots of transmitting stations β€” peep the RESOURCES section below for that. All you need is a computer, a homebrew SDR receiver, and a simple wire antenna. that's it. that's the whole setup. iconic honestly πŸ¦‹


πŸ“ FILES πŸ“

Various files and subdirectories get created in $HOME/.fldigi. Some of the most interesting ones are listed below πŸ‘‡ (yes this is a vibe tour of your dot-directory).

  • fldigi_def.xml β€” the main settings file. the whole personality lives here.
  • fldigi.prefs β€” the "status" file. It stores window geometries, button states, current modem, current audio frequency, squelch level, and so on. basically your last-known state of being πŸ’Ύ
  • status_log.txt β€” the event log.
  • macros/macros.mdf β€” the default macro file.
  • palettes/ β€” this directory contains waterfall palettes 🌈 (aesthetic AND functional, we love to see it)
  • scripts/ β€” this directory is added to the PATH environment variable of the child process that runs <EXEC> macros.
  • logs/ β€” this directory contains logged received and sent text (when such logging is enabled), including the default logbook database, logbook.adif.
  • images/ β€” received MFSK images are automatically saved in this directory. pics or it didn't happen πŸ“Έ
  • freqanalysis.csv β€” this file is written by the frequency analysis modem. The fields are dial frequency, audio frequency, and offset. See documentation for details.
Note πŸ“Œ The following files are used if present. They must be downloaded and copied to ~/.fldigi/ by the user β€” they do not come with the program, bestie, you gotta go get them yourself.
  • cty.dat β€” list of DXCC entities and callsign prefixes; used to display tooltips in the received text buffer, and also to auto-fill the Country, Locator and Azimuth log fields. Available at http://www.country-files.com/cty/.
  • lotw1.txt β€” list of known LOTW users (one callsign per line); used for the received text tooltips. Available at http://www.hb9bza.net/lotw/.
  • AGMemberList.txt or eqsl.txt β€” list of "Authenticity Guaranteed" eQSL users (one callsign per line); used for the received text tooltips. Available at http://www.eqsl.cc/QSLcard/Programming.cfm.

✨ EXAMPLES ✨

real commands, real energy, let's go 🫢

fldigi --wfall-height 144 --font sans:11 -fg "#c0c0c0" -bg "#5f5f63" -bg2 "#19213b"

This is how the author of this document invokes fldigi. main character behavior, honestly πŸ’…

fldigi --xmlrpc-deny "main.(tx|tune|run_macro)"

Unregister XML-RPC methods that may transmit. πŸ”’ protecting the airwaves, we stan.

ssh -L 7362:localhost:7362 remote-host xvfb-run fldigi -display :99

Start fldigi on remote-host under a "fake" X server. (The xvfb-run(1) utility is available on Debian systems). The remote "headless" fldigi is then controlled via XML-RPC on port 7362, i.e from flrig, flamp etc. ghost in the machine fr fr πŸ‘»

fldigi --benchmark-input 480000 --benchmark-modem 1

Benchmark the DominoEX-4 modem with 480K audio samples. speedrun mode ⚑

fldigi --benchmark-input audio.wav --benchmark-modem 25 --benchmark-frequency 1500 --benchmark-afc 1 --benchmark-squelch 1 --benchmark-squelch-level 5.0 --benchmark-output out.txt

Read audio.wav (whose sample rate must be 8000Hz in this case) and decode BPSK-31 signals at 1500Hz. AFC is enabled and the squelch is set to 5%. Decoded text is saved to out.txt.


πŸ› BUGS πŸ›

Yes. πŸ’€

(that's it. that's the whole section. honestly? iconic.)


πŸ‘€ SEE ALSO πŸ‘€

fldigi-shell(1), gmfsk(1), gpsk31(1), grig(1), rigctl(1), xlog(1), getaddrinfo(3), getopt(3), regex(7), X(7)

go read those too, iykyk πŸ“š


πŸ”— RESOURCES πŸ”—

More information on MFSK16, DominoEX and other digital modes can be found at http://www.qsl.net/zl1bpu/ and https://www.w1hkj.org/FldigiHelp/Modes/index.htm πŸ¦‹

The PSK Automatic Propagation Reporter site can be found at http://www.pskreporter.info/ πŸ“‘


πŸ‘‘ AUTHORS πŸ‘‘

Fldigi was written by

  • David Freese, W1HKJ.
  • Stelios Bounanos, M0GLD.
  • Leigh L. Klotz, Jr., WA5ZNU.

Fldigi also includes code written by others. Among them are

  • Tomi Manninen, OH2BNS.
  • Pawel Jalocha, SP9VRC.
  • Hamish Moffatt, VK3SB.

This manual page was written by Stelios Bounanos <sb[at]enotty(dot)net>. 🫢


πŸ“œ COPYING πŸ“œ

License GPLv3+: GNU GPL version 3 or later.


aaaand that's a wrap bestie πŸŽ€ this page is from the fldigi 07/11/2026 release and it's filed under FLDIGI(1) in your manual pages. go forth, decode some signals, and stay licensed πŸ’–βœ¨

πŸ“¦ where this page comes from
  • fedora 43: fldigi 4.2.13-1.fc43 Β· GPL-3.0-or-later AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-3.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND GPL-2.0-only AND BSL-1.0 AND MIT-0 AND LGPL-3.0-only AND GPL-1.0-only AND Apache-2.0
  • fedora 44: fldigi 4.2.13-1.fc44 Β· GPL-3.0-or-later AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-3.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND GPL-2.0-only AND BSL-1.0 AND MIT-0 AND LGPL-3.0-only AND GPL-1.0-only AND Apache-2.0
  • nixpkgs unstable: fldigi 4.2.13
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms