MODEM73

Quickstart

modem73 is a free, open source software modem. It has configs for any setup, from line of sight UHF links over FM to HF propagation. This guide gets you running in under 5 minutes.

Step 1

Download & install

The first step is to download either the source or compiled binary for your system from modem73.app.

If you're building from source, follow along with the instructions in the README or run install.sh if you are on a Debian or Arch based system.

For a precompiled build, find the release that matches your OS and architecture:

Install the package with apt or your system's package manager:

sudo apt install ./modem73_<version>_<arch>.deb
Installing Windows

Grab the latest build from the modem73-win releases. The Windows build is a separate fork, ported to Win32 APIs and PDCurses with LLM assisted tooling, so treat it as experimental. If you do not need serial PTT, running the upstream build under WSL is the more stable path.

To build it yourself, everything is vendored under deps/ (aicodix DSP, PDCurses, hidapi, miniaudio, cJSON) and the exe is statically linked, so there is nothing external to install at build or run time. CM108 USB PTT is always enabled.

Native on Windows, from a MinGW64 shell after installing MSYS2:

pacman -S --needed make mingw-w64-x86_64-gcc
make CXX=g++ CC=gcc

Or cross compile from Linux:

# Debian/Ubuntu
sudo apt install make g++-mingw-w64-x86-64-posix
make

Either way you end up with modem73.exe.

Step 2

Launch modem73

Once installed, you can launch modem73 in any terminal.

modem73

By default it will start in UI mode where you can configure all of the settings.

To navigate the program you can click with the mouse or use the shortcut keys:

Launching Windows

On Windows you will want to call the .exe instead:

# Start in UI mode
modem73.exe

# Start in headless mode
modem73.exe --headless

# See all options
modem73.exe --help

Step 3

Config

The first tab you will want to head over to is CONFIG. Under config, you'll want to configure your:

SOUND DEVICES

Input is what the modem decodes. Set this to whatever your radio or sound interface shows up as on the output side.

Output goes the other way. Set this to your radio's input.

Most interfaces present both under the same name. An all in one audio cable shows up as AIOC, and similarly HF rigs like the ICOM-7300 that have internal soundcards will have their own name.

PTT

Push to talk is what keys up the radio to transmit. There are five options:

OptionUse case
noneOver the air (speaker/mic) or PTT handled elsewhere
rigctlHF rigs with CAT control
VOXRadios keyed by an audio tone
COM (serial)Serial RTS/DTR keying, including the AIOC and Digirig
CM108GPIO keying on CM108 based sound interfaces

COM (serial) is the straightforward path for HT interfaces. Point it at the serial device your cable enumerates as and pick RTS or DTR to match the cable.

rigctl comes from the Hamlib library. Install it with the libhamlib-utils package or your distro's equivalent:

sudo apt install libhamlib-utils

modem73 connects to rigctl over TCP, so start rigctld with your rig's options first. For an IC-7300:

rigctld -m 3073 -r /dev/ttyUSB0 -s 115200

Run rigctl -l to find the model number for your radio. rigctld runs in the background, listens on port 4532, and gives you both PTT and control of the rig from modem73 itself, including ALC tuning under the RIG tab when rigctl PTT is selected.

rigctl and Hamlib Windows

Hamlib ships the rigctld.exe binary. Download it from the Hamlib 4.7.2 release, then add its bin folder to your PATH so you can start rigctld from any terminal.

An example that lets modem73 key up and change frequency on an ICOM-7300:

rigctld.exe -r COM3 -m 3073 -s 19200

Replace COM3 with whatever your radio actually enumerates as. -m is the model number, and rigctl.exe -l lists them all.

To check the connection before pointing modem73 at it, drop the d and run rigctl.exe on its own, then type f to read back the current frequency.

Serial, AIOC, and CM108 Windows

Serial PTT takes a COM port rather than a device path. Check Device Manager for the number, and expect it to change after a reboot or a replug.

modem73.exe --ptt com --com-port COM4 --com-line rts

For the All In One Cable, set PTT to COM, pick your COM port, set PTT line to BOTH, and set invert to NORMAL. Note that this differs from Linux, where the AIOC wants invert set to INVERT RTS.

CM108 keying works the same as it does everywhere else:

modem73.exe --ptt cm108 --cm108-gpio 3

TEST YOUR SETUP

Restart modem73 after changing audio or PTT settings.

If audio is working you will see it coming in on the waterfall. To confirm the transmit side, go to UTILS and hit Send random data, or press 2. Your radio should key up and transmit.

Step 4

Modem settings

modem73 has three families of data modems, and all of them decode simultaneously. Between them they cover poor HF propagation through to clean line of sight FM links.

Three things matter on this screen: the modem itself, which you change with the left and right arrow keys, its settings, and the info panel on the right, which updates to show the details of whatever mode and options you have selected.

OFDM

Use OFDM for anything over FM, and for stable HF SSB links keep modulation under 8PSK.

Modulation runs from BPSK up to QAM4096. Each step up the ladder buys throughput and costs you required SNR.

Coding rate is the balance between data and redundancy. 1/4 carries the most redundancy, 5/6 the least. On a link with a high noise floor or fading, take the lower rate and give up the throughput.

Frame size is how many bytes go out in one transmission: short, normal, or long frames. It also sets how long the modem spends on air.

Postamble adds a second sync marker at the end of the frame. Worth turning on for high noise, busy channels, or HF fading. It costs 0.4 seconds of extra transmit time.

ROBUST (RDM)

The RDM modes are built for daily HF use and run from RDM-1200 down to RDM-300.

ModeDecodes down toSurvives
RDM-12005 dB SNR1 second of deep fading
RDM-600near 0 dB SNR2 seconds of deep fading

These are the modes for long distance HF DXing and NVIS.

MFSK

MFSK is non-coherent, so it decodes without a preamble or sync. Modes run from 32R down to 8.

Keep these around as your weak signal backup.

DECODERS

Every mode decodes at once, which costs CPU. On a Pi Zero 2 or anything else with limited headroom, disable the ones you aren't using under the decoders section.

Step 5

CSMA

Carrier sense multiple access means listening for stations already talking before you transmit. modem73 is designed for multiple users sharing a channel, so this is worth setting.

Pick a preset by selecting your band and how busy the channel is. From there you can choose between an audio threshold and sync detection.

RUNNING OVER HF?

Enable Sync only when you are running modem73 over HF.

Step 6

Fragmentation and TX blanking

Fragmentation handles incoming packets that exceed your frame size by chunking them automatically.

TX blanking stops you from hearing your own packets.

Where settings live Windows

Settings, presets, and the performance log are stored in %APPDATA%\modem73\.

If you are running modem73interface for Reticulum, the interface file goes in %USERPROFILE%\.reticulum\interfaces\.