DMR-SMS: how to send and receive text over your radio

Category: BasicsDifficulty: ★★☆~8 minutes

Voice in DMR is the obvious part: press PTT, talk, release. But a digital radio can do more — it can send short text messages straight over the air. That comes in handy when dictating a long callsign or a set of coordinates is awkward, when you need to pass an exact number, or when you want to send a private message to a specific correspondent without tying up the whole talkgroup with voice. In this article we'll break down how DMR-SMS works technically, how to set it up on TYT, AnyTone and OpenGD77, how a private message differs from a group one, and why on the DMRhub network text really does travel from the radio to your account and app.

What DMR-SMS is and why you need it

DMR-SMS are short text messages carried over the same radio channel as voice, but as data rather than audio. The ETSI DMR standard was designed from the start to carry not just speech but service data as well: short messages, GPS coordinates, statuses. Text over the air solves several problems at once.

It's worth flagging the limitations right away. This is not a messenger: message length is limited (usually a few dozen characters per transmission, with long texts split into parts), delivery isn't 100% guaranteed, and the data rate in DMR is low. SMS in DMR is a utility channel for short, practical messages, not a replacement for Telegram.

How it works technically

When you send text, the radio builds data frames rather than voice frames. In DMR a data frame is carried in one of the two time slots (TS1 or TS2) of the same TDMA channel used for voice. The message content is packed using the DMR short-data protocol: in most amateur firmwares this is a format compatible with what Motorola and compatible systems use, plus the widespread "compatible" mode found on Chinese radios.

The key point is addressing. Every message has a recipient, and it's set exactly the same way as for a voice call:

From there everything follows the path of ordinary DMR traffic: radio — hotspot or repeater — network server — and back to the addressee. The server routes the data frame by the same rules as a voice call, going by the addressing type and slot number. If you don't grasp the basic mechanics of slots, color codes and addressing, you should first read the DMR basics — without that, configuring SMS will feel like guesswork.

Slot and color code decide everythingA text message obeys the same requirements as voice: the frequency, color code and time slot must match the receiving side. If the channel is set to TS2 while the server expects data on TS1, the message simply won't arrive — even though voice on the same channel may work fine.

Setup on radios: recipient contact and format

The general logic is the same across all brands: to message someone, the radio must have a contact with the right DMR ID or talkgroup number. The message is sent to that contact the same way a voice call is made to it. So the first step is to add recipients to the contact list in the CPS (the radio's programming software). If contacts are a mystery to you, see how they fit into the overall codeplug.

The details, though, differ from brand to brand.

AnyTone (878/578 and relatives)

AnyTone has the most SMS-friendly interface. The CPS has a dedicated section of preset messages (Preset/Quick Text) that you can write in advance and send with a single button. You can also type a message right on the spot using the radio's keypad. The recipient is picked from contacts or entered manually as an ID/group. Both private and group messages are supported. AnyTone's data format is compatible with common networks by default.

TYT (MD-UV380/390 and similar)

On TYT's stock firmware the capabilities are more modest: there are preset texts, and keypad entry is limited on some models. Many users install the alternative firmware OpenGD77 or OpenMD380, which noticeably expands messaging. The key TYT nuance is that the CPS offers a choice of short-data format (for example, different encoding modes). If messages aren't getting through on the network, the cause is often exactly a mismatch in this format.

OpenGD77 (Radioddity GD-77, Baofeng DM-1801 and others)

The open-source OpenGD77 firmware provides full-featured SMS, including keypad entry and incoming messages shown on screen. Messages are sent to a chosen contact (privately by ID or to a group). OpenGD77's format is set up for compatibility, but when pairing with a specific server it's still worth checking which short-data mode the network expects.

Set up a test contact in advanceIt's handy to create an "echo/test" contact in the codeplug with a known ID and a couple of preset texts like "test 1". That way, while debugging, you change just one parameter at a time and quickly find where the message path breaks.

Private SMS by DMR ID versus group SMS

The difference is fundamental and determines who will see your text.

The practical consequence: for a private message to arrive, the recipient must be "reachable" by the network — their radio has to be on air via a hotspot or repeater connected to the same network. With group messages, subscription to the group matters: if the addressee's talkgroup isn't static and isn't currently active on their slot, the message may not show up. That's why confusion over static versus dynamic groups is a common cause of "I sent it but nobody got it".

DMR-SMS on the DMRhub network

On DMRhub, text messages aren't theory but a working feature, and it's closed into a triangle of three points: the radio, your personal account on the website, and the mobile app. Here's what that gives you in practice:

This is handy when the radio is sitting in the car or at base while you're at the computer or on your phone: you can carry on a conversation with the air without holding a handset. If you have no radio at hand at all, both text and voice are available from a smartphone via PoC radios and in DMR without a radio mode.

Common problems: why it "doesn't get through"

If a message goes out but the addressee doesn't see it, work through the causes in order — it's almost always one of these.

The debugging method is simple: change one parameter at a time and use a pre-built test contact. First make sure voice works on the right group and slot — that confirms the channel, color code and slot are fine. Then move on to text: that way you isolate the messaging-specific settings from the general radio parameters.

Try DMR-SMS on a live network

On DMRhub, text messages really do travel between radios, your personal account and the Android app — privately by DMR ID and in groups.

In short: DMR-SMS are short text data frames addressed either to a specific DMR ID (private) or to a talkgroup (group), traveling over the same channel as voice. Setup boils down to creating a recipient contact and matching the message format in the CPS, and 90% of "it doesn't get through" problems are fixed by checking the ID, the slot and the format. And on the DMRhub network text is closed into a convenient triangle — radio, account, app — so you can converse with the air even without a radio in your hands.

Sources

  1. ETSI TS 102 361-1/-2/-3 — the DMR standard (Air Interface and data services, including short messages).
  2. AnyTone D878UV/D578UV CPS documentation — the text messaging section (Preset Text, sending by ID and group).
  3. OpenGD77 project manual and wiki — working with SMS (composing, receiving, choosing a contact).
  4. TYT MD-UV380/390 CPS and community materials on DMR short-data formats.