Demonstration
Here's a demonstration video with two "communicators" using these modems to exchange textual messages. The radio transmission is carried out by Baofeng UV-5R radios, a widely used UHF radio model. A third radio allows you to hear the frames "passing." You can hear the carrier, then the modulation at the moment of message exchange.
Features:
-
Text message exchange
-
Sending and receiving GPS coordinates
-
Navigation toward specific coordinate
Revisiting Packet Radio: AFSK and the TCM3105 in a Modern DIY Setup:
In the 1980s, amateur radio enthusiasts developed digital data exchanges using their analog radios: packet radio with AFSK modems (typically the TCM3105). I revisited packet radio to exchange textual messages using radios and two autonomous terminals that allow message input via a USB keyboard. The entire setup operates with an Arduino Mega and a USB shield (this project dates back several years). The information carrier can be anything that transmits voice; in this case, it's Baofeng UV-5R radios.
In packet radio, data is grouped into packets and sent from a transmitting station to a receiving station. These packets include information such as content (messages, GPS data, etc.), source and destination station addresses, error correction mechanisms, and more.
The most commonly used protocol for structuring these packets into frames is AX.25, which handles addresses, commands, and CRCs for error correction.
How are the bits in these frames physically transmitted over an analog radio?
Often by using AFSK modulation, as it allows the use of any radio capable of transmitting voice. The most commonly used component, found in DIY projects of the past and even today, is the TCM3105, an integrated circuit designed for AFSK (Frequency Shift Keying) modulation and demodulation.
The transmission speed is 1,200 baud, with two distinct tones representing bits 0 and 1 (1,000 Hz and 2,000 Hz, respectively). Upon reception, the TCM3105 demodulates these tones to retrieve the digital data. This component is still widely available today at minimal cost, especially on Chinese platforms like AliExpress (it's unclear whether they are newly manufactured or from old stock).

How does it work?
As I found the idea of combining modern microcontrollers with these retro modems appealing, I built terminals that allow the exchange of textual messages entered via a USB keyboard, incorporating AES encryption, GPS coordinate sending and receiving, and more. The data frames, while inspired by AX.25, adopt a different format to leverage two types of error correction.
Each 16-byte frame (14 characters for the message and 2 bytes for message context) is augmented with 4 bytes for Reed-Solomon correction (called "parity" or "syndrome," representing the data added to detect and correct errors). The entire frame is then further reinforced with additional correction based on the Hamming (7,4) code, which encodes each 4-bit data block into a 7-bit block, adding 3 parity bits.
This robustness is necessary because the presence of encryption renders a partially corrupted message unusable. Additionally, transmissions are simplex, which doesn't allow for confirmation of successful message reception.
The encryption keys stored on an SD card are synchronized between different terminals using GPS time. Encryption itself can be enabled or disabled. The GPS is also utilized to transmit its coordinates or guide the user (by azimuth and distance) to a pre-recorded or radio-received coordinate.
System Overview


The diagram shows the full architecture of the off-grid AFSK communicator terminal. At its core lies an Arduino Mega 2560, selected for its numerous serial and parallel interfaces. The system is powered via a standard USB port, making it compatible with power banks or solar power supplies.
Communication with the analog radio is handled through a TCM3105 modem connected to Serial Port 0. This modem performs AFSK modulation...
Read more »