An experimental amateur-radio text modem with forward error correction (FEC), a Windows desktop interface and a live audio waterfall. It sends UTF-8 text, including newlines, as actual modem audio. Messages are unencrypted.
FEC-RTTY began as an experiment to build a digital mode in 24 hours: develop the modem, add FEC and a usable GUI, and demonstrate transmission and decoding over a real audio path. This was the original challenge, not a claim that all development or radio validation finished in that time.
Current application: 0.46.1, experimental Windows x64 CAT/audio build.
- Windows installer: installs application runtimes, documentation, Start-menu shortcuts and standard Windows uninstall.
- Portable Windows ZIP: extract completely, then run
gui/fectty-gui.exe. - Latest release and checksums: source download, SHA256 checksums and matching Qt library sources.
Requires Windows 10 1809+ or Windows 11 x64 and a suitable 48 kHz audio device. No Qt SDK, compiler or separate application-runtime installation is needed. The installer is unsigned; Windows may display an unknown-publisher warning. Only use packages obtained from this repository's release page. See Installation for repair, uninstall and known deployment limits.
GitHub contains one canonical latest source tree and one current release. Older development packages are not published here.
- One fixed 50-baud, 48 kHz four-tone FSK mode with convolutional FEC and CRC.
- Direct text transmission and decoding, without link negotiation or ACK waits.
- A resizable Qt GUI, input/output device selection and output-volume control.
- A real RX waterfall with linked or separate RX/TX audio-frequency offsets.
- WinMM/PortAudio audio and a
NullRig / audio onlydefault. - Direct Hamlib, rigctld TCP and OmniRig with explicit PTT arming and RF tuning.
Recorded v0.46.0 cable receiver after playback; the sender used Hamlib Dummy PTT, not a physical radio. Device names and offsets are examples.
This is not conventional two-tone Baudot RTTY; a compatible FEC-RTTY
decoder is required. Optional CAT supports direct Hamlib, rigctld TCP and
OmniRig. Arming is off on every launch; see Radio control.
TX complete means playback (and armed PTT release) finished, not guaranteed reception.
Launch gui/fectty-gui.exe twice. For a virtual-cable test, install
VB-CABLE separately, then select CABLE Output
for RX and CABLE Input for TX in both windows. Keep NullRig / audio only,
use matching 1500 Hz offsets and start both sessions. Send A to B, wait for
playback to finish, then test B to A. A shared cable carries both instances'
audio, including their own transmissions; simultaneous sends can collide.
See GUI operation and Testing. Bench results do not establish RF readiness. The virtual-cable driver is optional and is not included or installed by FEC-RTTY.
Core tools require CMake 3.20+ and a C++20 compiler. The GUI also needs a compatible Qt 6 SDK/compiler. Development dependencies are not downloaded by the build helpers.
git clone https://github.com/M0NXD/FEC-RTTY.git
Set-Location FEC-RTTY
& .\source\build.batThis builds/tests the core, not the GUI. Follow Building from source for GUI dependencies and deployment.
- Project guide: operation, architecture and limitations.
- Build instructions and test instructions.
- Protocol specification: waveform, framing, FEC and decoding.
- GUI operation, radio/CAT operation and design requirements.
- Development roadmap.
- Documentation and test-record index.
Exact sequential two-way modem-audio decoding has been demonstrated on a shared Windows virtual cable. Independent radios/computers, long sound-clock drift, clean-machine deployment and exhaustive accessibility remain unverified. Stopping RX can abandon queued samples; zero overflow does not prove all captured samples were processed. See the known limitations.
The public-package acceptance records 37 installer assertions and exact two-way text on both audio backends, but also an intermittent WinMM capture-buffer error. Prefer PortAudio for the cable bench if that error appears; continuous fault-free WinMM capture is not claimed.
No general application source license has been selected; source visibility is not an open-source license grant. Qt is dynamically linked under LGPL-3.0; its license texts, corresponding sources and replacement instructions accompany the downloads. Those library rights are not restricted by the application. See dependency notices and publication policy.
