Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk7 min

Building a MIL-STD-188-110 HF Modem in Modern C++: An Introduction to the Appendix C Waveform

A practical introduction to building the MIL-STD-188-110D Appendix C narrowband HF modem waveform in C++, covering scope, waveform parameters, software architecture, and the standard's test conditions.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

You can build a learning implementation of the MIL-STD-188-110 narrowband HF data waveform in modern C++ as a baseband library, and test it against the standard’s own channel conditions without any radio hardware. You cannot call the result compliant or interoperable until its framing, coding, interleaving, and acquisition match the full standard and it passes the specified tests. This article maps the scope, the Appendix C waveform parameters, a practical software structure, and the test conditions a build must meet.

Build against MIL-STD-188-110D with Change 1

The controlling edition is MIL-STD-188-110D with Change 1. The Defense Logistics Agency (DLA) record for the standard, reachable through its ASSIST Quick Search, lists a document date of 6 November 2024 and marks the document active. Check that record before you start, because a later revision would supersede this edition.

As an Amazon Associate I earn from qualifying purchases.

The standard establishes technical requirements and design objectives for modem interoperability and performance in voice-frequency communications systems. It is a specification rather than a tutorial. The parameters below show what the standard covers, but they are not a complete set of values you can code from.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What “implementing the standard” can mean

Three different claims are often blurred together, and they should be kept apart:

#1 Best Overall
Sale
StarTech USB 2.0 Fax Modem, 56K V.92, Computer/Laptop, TAA (USB56KEMH2) | 56K External Hardware Dial Up V.92 Modem/ Dongle/Adapter, USB to Telephone Jack, USB Data Modem, Network Fax/CMR/POS
  • DIAL-UP & FAX SUPPORT: Hardware-based USB 2.0 Fax modem adds data and fax functionality to your computer / laptop via USB without putting additional load on your CPU; For faxing, rural internet access, security systems, POS credit authorization
  • VOICE AND CALLER ID SUPPORT: Make and receive phone calls through your desktop / laptop computer; This portable USB modem supports Caller ID functionality and is compatible with most dial-up ISP (Internet Service Provider) networks
  • DATA/FAX MODE SUPPORT: Data: V.92, V.90, V.34, V.32bis, V.32, V.22bis, V.22, V.23, V.21 Bell 212A & Bell 103; Fax: V.17, V.29, V.27, V.21 Ch 2, EIA/TIA 578 Class 1 and T.31 Fax Class 1.0; DTMF support
  • TECH SPECS: External 56K Modem; Data Fax; USB Type A; 1 x RJ11 Telephone Jack; 56 Kbps Down, 33.6 Kbps Up Data; 14.4 Kbps Fax V.92; V.44 Compression; Conexant CX93010-21Z; USB Powered; TAA Compliant
  • COMPATIBILITY: Drivers available for Windows, Windows Server, macOS (10.9 to 12.x) and Linux (kernel 3.16 and up); Windows Drivers available for download
  • A working modem transmits and recovers its own data in a loopback test. This shows your code is internally consistent. It says nothing about the standard.
  • A standard-shaped implementation covers named parts of the standard, such as the Appendix C waveform, and uses its parameters. It has not been shown to meet the full set of test conditions.
  • A conformant, interoperable modem matches the standard’s exact bit ordering, tables, polynomials, acquisition rules, and waveform timing, and meets the performance requirements under the specified tests. Only this level supports a compliance claim or interoperation with other modems.

Label your project with the level it actually reaches. A learning project has real value at the first two levels.

Choose Appendix C or Appendix D before writing code

The standard covers two distinct waveform families. A first implementation should pick one and say so in its documentation.

Attribute Appendix C (narrowband) Appendix D (wideband)
Channel scope Narrowband HF data modem waveforms above 2400 bps in 3 kHz channels Contiguous bandwidths from 3 to 48 kHz
User data rates 3200, 4800, 6400, 8000, and 9600 bps; uncoded 12800 bps is a design objective 75 to 240,000 bps
Symbol rate 2400 symbols per second Not stated in this article; see Appendix D of MIL-STD-188-110D
Modulation PSK and QAM Not stated in this article; see Appendix D of MIL-STD-188-110D
Forward error correction Constraint-length-7, rate-1/2 convolutional code punctured to rate 3/4 Not stated in this article; see Appendix D of MIL-STD-188-110D
Interleaving Block interleaver with six lengths, from 1 to 72 frames Not stated in this article; see Appendix D of MIL-STD-188-110D

If your project covers Appendix C, say “implements Appendix C” and state that Appendix D is outside its scope. Do not describe a narrowband-only project as covering MIL-STD-188-110 in general.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
flexman USB 2.0 56K External Modem for Win 7 Win 8 Win 10 Win XP, Dual Port Fax Data Modem with Voicemail Auto Reply Dial Internet Automatically Send Receive Faxes
  • Plug and Play. It is suitable for WIN 98/2000/ME/XP/Vista/CE5.0/10/8.1/8/7. No need for any external driver.
  • For GRIS fax cats can dial the Internet, send and receive faxes, but do not support voice calls.
  • The 56k data/fax modem uses USB2.0 Type A with a full speed of 56kb/s.
  • Using V.92, V.90 and V.42, V.42bis/MNP5 protocol. Meets V.17, V.29, and V.27ter Group 3 fax protocols.
  • Support automatic dialing, tone and pulse dialing, automatic answering, automatic fax sending and receiving.

The Appendix C waveform in brief

Appendix C fixes several parameters that shape your data structures. Each one needs its exact values from the standard before you write the corresponding code.

  • Symbol rate: 2400 symbols per second.
  • Modulation: PSK and QAM, with the constellation for each data rate defined by the standard.
  • Error correction: a constraint-length-7, rate-1/2 convolutional code punctured to rate 3/4. The rate-1/2 code produces two coded bits per input bit. Puncturing removes some coded bits to reach rate 3/4, which means four transmitted bits for every three information bits.
  • Interleaving: a block interleaver with six lengths, from 1 to 72 frames.
  • Signaling: the data rate and interleaver setting are carried in the waveform so the receiver can acquire them.

A constraint length of 7 gives the decoder 64 states, which drives its computational cost. The standard fixes the code, not the decoding algorithm. A soft-decision Viterbi decoder is the common choice for a code of this type, provided its output matches the coded bitstream the standard defines.

Software architecture: keep the modem separate from the radio

Structure the baseband modem as a chain of independently testable stages, each a pure transform from one sequence to the next. The sequence below is an engineering decomposition for explanation. The standard’s bit-level details decide the actual behavior of each stage.

Rank #3
Sale
GOOZEEZOO Radioberry Juice USB Board, Compatible with Radioberry, USB-to-PC
  • Replaces Raspberry Pi 4: This circuit board eliminates the requirement for a Raspberry Pi 4 unit. Just attach your Radioberry module to the Juice USB Board, connect it to your computer, and you’re ready for transmission and reception — no extra hardware needed
  • Support for multiple SDR software: SDR Console (V3), Thetis SDR, Spark SDR, and Pihpsdr. It is applicable to both Windows and Linux systems, meeting the needs of different users for SDR software
  • Multiple receiving and transmitting functions: It supports 4 receivers and 1 transmitter. It supports the CW Skimmer Server (github .com/k3it/ HermesIntf) and Windows VBCABLE, can run software such as WSJTX to achieve more communication modes and functions
  • High bandwidth performance: With a maximum bandwidth of 384kHz, it can handle signals within a relatively wide frequency range
  • Quick start guide: Install the CDM212364 USB driver; 2.Launch windowsJuice.exe; 3. download SparkSDR windows: sparksdr .com/downloads. (github.com/jumbo5566/Juice)

Transmit path

  1. Bit framing and any scrambling the standard specifies.
  2. Forward error correction encoding, then puncturing to rate 3/4.
  3. Interleaver load and read, using the length signaled for the selected mode.
  4. Mapping bits to the constellation specified for the selected data rate.
  5. Symbol timing and phase-continuous waveform generation at 2400 symbols per second.

Receive path

  1. Receive filtering, then timing and frequency acquisition.
  2. Demodulation to soft decisions.
  3. Deinterleaving.
  4. Decoding.
  5. Recovery of the framed user data.

Keep the radio interface outside the modem

The standard describes downconverting an RF signal to baseband for a channel simulator, and upconverting back to RF when an embedded modem is tested through RF-only access. Radio filters in that path can change the measured result. You do not need that path to build the baseband core. Keep the modem independent of audio and RF device code so that unit tests and channel simulations stay deterministic.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#include <complex>
#include <cstdint>
#include <span>
#include <vector>

using Sample = std::complex<float>;

// Each stage is a pure transform so it can be tested in isolation.
struct Encoder {
    // Rate-1/2, constraint-length-7 mother code, punctured to rate 3/4 for Appendix C.
    // Generator polynomials and puncture pattern must come from the standard.
    std::vector<std::uint8_t> encode(std::span<const std::uint8_t> bits);
};

struct Modulator {
    // Symbol rate 2400 symbols per second; constellation selected by data rate.
    std::vector<Sample> modulate(std::span<const std::uint8_t> coded_bits);
};

The sketch shows interface boundaries only. It contains no bit ordering, polynomial, or constellation table, so it should not be treated as a conformant implementation.

What this introduction leaves to the standard

  • The exact bit ordering and any scrambling sequence.
  • The generator polynomials and the puncturing pattern for rate 3/4.
  • The constellation mapping for each data rate.
  • Acquisition and frame-timing rules.
  • Everything in Appendix D.
  • Operating conditions beyond the fixed-frequency case named in the performance requirement. Check the standard before claiming any other operating mode.

Performance requirements to test against

For Appendix C narrowband operation in fixed-frequency mode with the maximum interleaver, the standard sets a coded bit error rate target of 1.0 × 10-5 or better under each condition in Table C-XVII. The standard states the requirement this way:

Rank #4
Dpofirs V05 High Performance 500MW HF Modem for Amateur Radio, Portable Design for 70cm Band Communication, NPR-70 V05
  • [Improved Performance] Enjoy improved data transfer performance with the new built-in SPI for .
  • [Multifunction Operation] Versatile modem that supports different modulation modes and bandwidths for different applications.
  • [High data rate] Efficient communication with a native data rate of 100 Kbit/s and a usable data rate of 65 Kbit/s.
  • [Easy Setup] Easy setup via Telnet on a PC or USB serial terminal without the need for additional software.
  • [Internal radio receiver] Powerful 500MW RF output effect for seamless transmission and reception.

“The measured performance of the narrowband MDR waveform, using fixed-frequency operation and employing the maximum interleaving period (the 72-frame ‘Very Long’ interleaver), shall achieve coded BER of no more than 1.0E-5 under each of the conditions listed in Table C-XVII.”

— MIL-STD-188-110D with Change 1, Appendix C, U.S. Department of Defense

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

This requirement is tied to the 72-frame setting. This article does not establish a requirement for the shorter interleaver lengths, so check the standard before making any claim about them.

Best Value
AURSINC SDR Radioberry HF SDR Transceiver Pi Hat for Raspberry Pi 4, Radio Card (RPi 4 Hat) Analog Devices AD9866 & 10CL025 12-bit Broadband Modem for Ham Radio SDR Transceiver
  • Turn your Raspberry Pi to SDR Transceiver. Many amateurs have done a lot with Raspberry Pi ranging from cat control to converting it to a full fledged SDR transceiver. The latest kid in the block of SDR Transceivers is Radioberry. It’s a combination of Raspberry Pi with a radio board developed using AD9866 12-bit microcontroller
  • Radioberry board actuall directly connects with the Raspberry Main Board. This braodband model mixed signal front end has been actually remodeled as a direct down and up conversion SDR Transceiver covering the entire HF spectrum (0-30 Mhz)
  • The radio card uses an Intell Cyclone 10LP FPGA, supporting the 10CL25 The firmware will be loaded via the raspberry pi. Power supply for the radio card is provided by the raspberry pi. The maximum receiving bandwidth is 384khz, supporting A and B dual receiving modes, and the output power is up to 10dbm
  • Now, a 025 mirror system is provided, which can run the SDR client directly with pihpsdr on the desktop, and the win/linux/mac client that supports SparkSDR supports the gateway working mode, and supports the expansion of the PA5Wv2 power amplifier to work in 3W mode, which can directly push the power amplifier above 100W
  • Easy to set up: Connect Radioberry025 to Raspberry Pi 4/4B, then run the image file provided by Raspberry Pi 4B (Raspberry Pi 4B has a ready-to-use image, no settings required). Connect to the network cable and power supply of 5V and 2A, and you can start transmitting and receiving. It can be connected to a screen for use or not. Please refer to the picture for software configuration. Just fill in the IP of the Raspberry Pi and it can be used

SNR thresholds by data rate and channel

The standard lists rate-dependent SNR thresholds for two channel conditions: additive white Gaussian noise (AWGN), and the ITU-R Poor fading channel described below.

User data rate AWGN SNR threshold ITU-R Poor SNR threshold
3200 bps 9 dB 14 dB
4800 bps 13 dB 19 dB
6400 bps 16 dB 23 dB
8000 bps 19 dB 27 dB
9600 bps 21 dB 31 dB
12800 bps (uncoded design objective) 27 dB No ITU-R Poor threshold listed

These values are the standard’s listed test conditions for the Appendix C waveform. They are not guaranteed performance on a real HF path.

The two channel models

The AWGN condition is a baseline with additive Gaussian noise and no fading. The ITU-R Poor channel, as the standard describes it, has two independent Rayleigh fading paths of equal average power. The second path arrives with a fixed 2 ms delay, which produces an echo, and the fading has a 1 Hz two-sigma bandwidth. The standard describes the baseband HF simulator as patterned after the Watterson model, a widely used HF channel model built from tapped, Rayleigh-fading paths.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The standard sets minimum test durations of 60 minutes for each AWGN condition and 5 hours for each ITU-R Poor condition. Plan your regression runs around those times.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

A test plan that climbs in difficulty

  1. Unit tests per stage. Check each stage against test vectors taken from the complete standard. Vectors produced by your own encoder prove only that the code agrees with itself.
  2. Noise-free loopback. Transmit a known bit pattern and recover it exactly, for every data rate and interleaver length you implement. Passing this is necessary but not sufficient.
  3. AWGN runs. Test at each rate’s listed SNR, for at least 60 minutes per condition, measuring coded BER as the standard defines it.
  4. ITU-R Poor runs. Test with the two-path Rayleigh model at each rate’s listed SNR, for at least 5 hours per condition.
  5. Optional RF stage. Add an upconversion and downconversion path through real radio hardware once the baseband results hold. Record how radio filters affect the outcome.

Trade-offs in a first design

Decision What you gain What you pay
Use the 72-frame “Very Long” interleaver It is the setting tied to the BER requirement above and spreads errors across the most frames It has the longest buffering and delay of the six lengths
Implement Appendix C only A smaller scope with one waveform family to verify Appendix D is not covered, so the project cannot claim full MIL-STD-188-110 coverage
Baseband simulation first Deterministic, repeatable tests with no radio required Radio filters, the RF chain, and real propagation are not exercised
AWGN before ITU-R Poor Short runs that isolate coding and modulation bugs Fading behavior is not tested until the 5-hour ITU-R Poor runs

Build the Appendix C baseband chain and its tests first. Treat any radio work as a later stage that depends on those results.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.