← How-Tos
electronics 1 hr ago ◯ 4 min read

DMR Codeplug Programming for Makers: AnyTone, Radioddity, and CPS Software Basics

dmrcodepluganytoneradiodditycpsham radiobrandmeistertalkgroupsqdmrhowto

This site already covers CHIRP for programming analog ham, GMRS, and FRS radios, and a Raspberry Pi/MMDVM build for running a digital voice hotspot that links repeaters over the internet. This fills the gap in between: programming an actual DMR handheld or mobile radio — an AnyTone, a Radioddity, a TYT — with the zones, channels, and talkgroups it needs to actually be useful on the air. CHIRP doesn't do this; DMR codeplugs are a different beast entirely, and the software that writes them is usually the radio manufacturer's own, with a steeper learning curve than analog programming ever had.

Why DMR Programming Is Harder Than Analog

An analog radio just needs a frequency, an offset, and a tone. A DMR radio needs a codeplug: a structured configuration file built from several linked pieces that all have to agree with each other and with the network you're using.

Get any one of these wrong — wrong color code, talkgroup not in the RX group list, time slot mismatched to what the repeater expects — and you'll key up and hear nothing, with no obvious error message telling you why.

Your DMR ID

Before touching any software, register for a DMR ID at radioid.net. This is a free, one-time registration (requires a valid amateur radio license) that assigns you a unique 7-digit number used as your identity across every DMR network — BrandMeister, DMR-MARC, and others. Every codeplug you build references this number; without it, repeaters and hotspots generally won't pass your traffic.

CPS Software by Manufacturer

Radio FamilySoftwareNotes AnyTone (878UV, 878UVII, 578, D878)AnyTone CPSWindows-only (works under Wine on Linux/Mac with some fiddling); widely used, well documented in the ham community due to the radio's popularity Radioddity (GD-77, RD-5R)Radioddity/vendor CPS, often shared with TYT since many of these are rebadged TYT hardwareBudget-friendly entry radios; codeplug structure is simpler but feature set is more limited than AnyTone TYT (MD-380, MD-UV380)TYT CPS, or the open-source community alternative dmrconfig for some modelsMD-380 was the radio that originally got DMR into wide ham hobbyist use; well-supported by third-party tools Cross-platform alternativeqdmr (open source, Linux/Mac/Windows)Supports a growing list of radios with one unified interface and can import/export between formats — worth trying if you're on Linux and tired of Wine

Building Your First Codeplug

Rather than building a codeplug entirely from scratch, the practical path almost everyone uses is downloading a pre-built regional codeplug template from a local DMR/BrandMeister user group — these already have the local repeaters, correct color codes, and sane zone organization done for you — then customizing contacts and your own DMR ID into it. Community codeplug-building tools like the DMR Zone Channel Builder (dzcb) can also generate a codeplug programmatically from a simple spreadsheet of repeaters and talkgroups, which is worth knowing about if you're building one for a club or a region that doesn't have a template yet.

  1. Register your DMR ID at radioid.net and wait for approval (usually same-day)
  2. Find a codeplug template for your area from a local DMR group's website or a BrandMeister regional page
  3. Open it in your radio's CPS, update your callsign and DMR ID in the general settings
  4. Verify color codes and time slots for your local repeaters against the repeater's published specs — templates go stale when repeater owners change settings
  5. Write the codeplug to the radio over USB, then do a test transmission on a talkgroup you know is monitored (many networks have a dedicated "parrot" talkgroup that just echoes your transmission back so you can confirm audio quality without bothering anyone)

Connecting to the Hotspot Build

If you've already built this site's Raspberry Pi/MMDVM digital voice hotspot, the radio you program here is the other end of that link: your handheld talks to your home hotspot over a local DMR simplex frequency, and the hotspot relays it onto BrandMeister or whichever network you've linked. The codeplug concepts are identical whether you're hitting a physical repeater or your own hotspot — only the frequency, color code, and "repeater" slot in your channel programming point at your own Pi instead of a tower somewhere.

The learning curve here is real, but it's a one-time cost. Once you understand the zone/channel/talkgroup/RX-group relationship, reprogramming for a new area or adding a network is a five-minute edit instead of a confusing rebuild.