DMR Programming Made Simple: Codeplugs, Talkgroups, and Time Slots

DMR radio programming explained without the confusion. Codeplugs, talkgroups, time slots, and color codes demystified with step-by-step setup guidance.

· 4 min read · By HamPost Editorial Team

Part of our guide: D-STAR vs System Fusion vs DMR: Digital Voice Compared

DMR has a reputation for being difficult to set up. That reputation is earned. The first time you open a DMR programming software and see 47 tabs of configuration options, your brain melts. Mine did. Took me three evenings to get my first DMR radio actually working on a repeater.

But the underlying concepts aren't complicated. The software is bad. The concepts are simple. Let me separate the two.

The Three Things You Actually Need to Understand

Forget everything else for now. DMR operates on three concepts:

  1. Time Slots — one frequency carries two simultaneous conversations
  2. Talkgroups — virtual channels that group users by topic/geography
  3. Color Codes — a simple access code for the repeater (like CTCSS tones for analog)

That's it. Everything else in DMR programming is just configuring these three things in various combinations.

Time Slots

DMR uses TDMA (Time Division Multiple Access). One 12.5 kHz channel is split into two time slots. Two completely independent conversations happen on the same frequency, alternating in time.

  • Time Slot 1 (TS1): Usually for wide-area talkgroups (statewide, regional, worldwide)
  • Time Slot 2 (TS2): Usually for local talkgroups (city, county, local chat)

This is a convention, not a rule. Each repeater owner decides what goes on which time slot. But 90% of repeaters follow this pattern.

When you program a channel in your radio, you specify which time slot to use. Wrong time slot = you transmit and nobody hears you on the talkgroup you intended.

Talkgroups

Think of talkgroups like rooms in a conference call system. Everyone tuned to Talkgroup 3100 (North America) hears everyone else on that talkgroup. Everyone on TG 91 (Worldwide) hears worldwide traffic.

Common talkgroups (Brandmeister network):

  • TG 91: Worldwide
  • TG 93: North America English
  • TG 3100: USA Nationwide
  • TG 31XX: State talkgroups (3106 = California, 3136 = New York, etc.)
  • TG 9: Local (repeater-specific, not networked)
  • TG 2: Local chat (varies by region)

When you key up on a channel programmed for TG 3100 on TS1, your audio goes to every repeater on the network that's carrying TG 3100 on Time Slot 1. Hundreds of repeaters. Nationwide coverage.

TG 9 (Local) stays on that single repeater. Nobody else hears it. Good for local chats without lighting up the entire network.

Color Codes

Simplest concept. A number from 0-15 that your radio must match to access the repeater. Like a PL tone in analog. Most repeaters use Color Code 1. Some use other codes to prevent interference from nearby DMR repeaters on the same frequency.

Wrong color code = repeater ignores you completely.

For how the three systems compare, see our D-STAR vs System Fusion vs DMR guide.

The Codeplug: What It Actually Is

A codeplug is just the configuration file for your radio. It contains:

  • Channels: Each channel = one frequency + one time slot + one talkgroup + one color code
  • Zones: Groups of channels organized however you want
  • Contacts: List of talkgroups and individual DMR IDs
  • Scan lists: Which channels to scan
  • Your DMR ID: Your unique number from RadioID.net

The reason it feels complex is that you might program 200+ channels and organize them into zones. But each individual channel is just four parameters.

Step-by-Step: Your First Working Setup

Before touching software:

  1. Get your DMR ID from RadioID.net (free, takes 1-2 days)
  2. Find DMR repeaters near you on RepeaterBook.com
  3. Note their: frequency, offset, color code, time slot assignments, network (Brandmeister or TGIF)

In the programming software:

  1. Enter your DMR ID in radio settings
  2. Create contacts for talkgroups you want (TG 91, TG 3100, your state TG, TG 9)
  3. Create channels — one per talkgroup per time slot:
    • "Repeater - Worldwide" = repeater freq, TS1, TG 91, CC 1
    • "Repeater - USA" = repeater freq, TS1, TG 3100, CC 1
    • "Repeater - Local" = repeater freq, TS2, TG 9, CC 1
  4. Create a zone, add those channels
  5. Write codeplug to radio

Three channels. One zone. Working DMR. Expand from there.

Static vs Dynamic Talkgroups

Static: Always connected to the repeater. Audio passes through whether anyone requested it or not.

Dynamic: Activated on demand. Key up on a dynamic TG, the repeater connects temporarily (usually 15 minutes after last TX).

Most repeaters have a few static TGs (local and state) and allow dynamic connections to everything else.

Common Mistakes

Wrong time slot. The #1 reason "my DMR doesn't work." You programmed TG 3100 on TS2 but the repeater carries it on TS1.

Forgetting TX contact. Must set the transmit contact AND group call type for each channel.

DMR ID not programmed. Network drops your packets. You hear but nobody hears you.

Admit criteria wrong. Set to "channel free" — not "always" which causes interference.

Wrong network. Brandmeister repeater doesn't carry TGIF talkgroups. Know which network your repeater uses.

The Software Problem

Every manufacturer ships their own terrible CPS (Customer Programming Software). Universal truth.

  • Anytone CPS: functional but cluttered
  • TYT CPS: crashes randomly, save often
  • OpenGD77 firmware: if your radio supports it, use it — better interface

Better approach: download someone else's codeplug for your area. Search "[radio model] codeplug [your state]." Load it, change DMR ID, start operating. Reverse-engineer how it works later.

My Honest Advice

Buy a cheap DMR HT (Anytone AT-D878UVII, ~$170). Get your DMR ID. Download a pre-built codeplug. Make your first QSO on a local talkgroup. THEN understand the structure.

Don't try to comprehend everything before transmitting. The concepts click faster with working experience to reference. I spent three frustrated evenings before my first DMR contact. Could have done it in 30 minutes with a borrowed codeplug.

Read next Build a Pi-Star Hotspot for D-STAR, DMR, and Fusion Step-by-step guide to building a Raspberry Pi hotspot with Pi-Star or WPSD for D-STAR, DMR, and System Fusion. Full hardware list and config walkthrough.

Frequently asked questions

What is a DMR codeplug and what does it contain?
A codeplug is simply the configuration file for your DMR radio. It holds your channels, where each channel is one frequency plus one time slot plus one talkgroup plus one color code, along with zones that group channels, a contacts list of talkgroups and individual DMR IDs, scan lists, and your own DMR ID from RadioID.net.
Why can nobody hear me on DMR when I transmit?
The most common cause is the wrong time slot, for example programming TG 3100 on TS2 when the repeater carries it on TS1. Other frequent causes are forgetting to set the TX contact and group call type on the channel, not programming your DMR ID so the network drops your packets, and being on the wrong network, since a Brandmeister repeater will not carry TGIF talkgroups.
What is the difference between static and dynamic talkgroups?
Static talkgroups are always connected to the repeater, so their audio passes through whether anyone asked for it or not. Dynamic talkgroups are activated on demand: you key up on one and the repeater connects temporarily, usually for about 15 minutes after your last transmission. Most repeaters keep local and state talkgroups static and allow dynamic connections to everything else.
How do I get a DMR ID and what do I need before programming?
Request your DMR ID from RadioID.net, which is free and takes one to two days. Then look up DMR repeaters near you on RepeaterBook.com and write down the frequency, offset, color code, time slot assignments, and whether the repeater is on Brandmeister or TGIF. Only after you have that information should you open the programming software.
Which talkgroup should I use for a local conversation?
Use TG 9, the local talkgroup, which stays on that single repeater and is not networked. Nobody outside that repeater hears it, so it is ideal for local chats without lighting up hundreds of repeaters. By contrast, keying up on TG 3100 on TS1 sends your audio to every repeater on the network carrying that talkgroup nationwide.
What is the fastest way to get a DMR radio working?
Buy an inexpensive DMR HT such as the Anytone AT-D878UVII around $170, request your DMR ID, then search for a pre-built codeplug using your radio model and state. Load it, change the DMR ID to yours, and make your first contact on a local talkgroup. The author spent three frustrating evenings building from scratch and says it could have taken 30 minutes with a borrowed codeplug.

Put it into practice

Reader field notes — share yours

Log in to share your field notes and photos.