Codeplug for DMR

Scroll this

A codeplug is the configuration file that defines everything about how a DMR radio behaves — channels, talkgroups, scan lists, RX groups, and various radio settings. The name is said to originate from the early days of professional radio, when configuration was stored on a physical plug-in ROM module. Today it’s a file you program via CPS (Customer Programming Software) and write to the radio over USB. Getting the codeplug right is the difference between a radio that just works and one that constantly surprises you in the wrong way.

After setting up my DMR hotspot and getting familiar with BrandMeister, I’ve been spending some time refining my codeplug for the Baofeng DM-32UV, a radio well known for it’s not so perfect software, but with this setup it feels like these bugs are not so significant. In this post I’ll share how I’ve structured things to keep the setup clean and practical — hopefully it saves someone else some time.


A Note on CPS Versions

If you’ve been struggling with the Baofeng CPS (Customer Programming Software) for the DM-32UV, you’re not alone. Versions prior to 1.60 had a bug that made it impossible to configure scan lists properly in CPS. This appears to have been fixed in version 1.60. If you’re on an older version, upgrading is well worth it.

One more gotcha: if the CPS interface shows garbled characters instead of English text, open the CPS.ini file in the installation folder and set the language parameter to EN. Simple fix, but not obvious.


My Setup

My radio operates across a mix of channel types:

VHF analog repeaters (LA5BR)
UHF analog repeaters (LA7BR)
DMR repeater (LD5BR) with various talkgroups
Personal hotspot with BrandMeister talkgroups on both time slots

The hotspot is built on a Raspberry Pi Zero 2 W running Pi-Star 4.3.7, with an MMDVM duplex hat.

On BrandMeister, I’ve configured the following static talkgroups:

TS1: TG 242 (Norway), TG 2424 (Regional)
TS2: TG 24201, TG 24202, TG 24203, TG 24204 (Chat groups)

Static talkgroups mean these are always active on the hotspot — traffic comes in without needing to key up first.


Codeplug Philosophy: Monitor Channels + Dedicated Channels

The core idea in my codeplug is a split between two types of channels:

Monitor channels (one per time slot) have a broad RX Group List covering all talkgroups I want to follow on that slot. Their TX Contact is set to TG 9 (Local) — a safe default that keeps any accidental PTT press from going out onto a busy talkgroup with wide reach. These are the channels I use for scanning and general listening.

Dedicated channels have no RX Group List at all. With Group Call Match enabled in the radio’s global settings, a channel without an RX Group List will only open squelch for the specific TX Contact talkgroup defined on that channel. When I hear something interesting on a monitor channel, I switch to the appropriate dedicated channel to reply.

This gives a clean separation: broad monitoring on two channels, precise TX on the rest.


Channel List

No.NameTypeTX ContactRX GroupTime Slot
1LA5BRAnalogRX TS1Slot 1
2LA7BRAnalogRX TS1Slot 1
3LD5BR RX TS1Digital9RX TS1Slot 1
4LD5BR RX TS2Digital9RX TS2Slot 2
5LD5BR 242Digital242NoneSlot 1
6LD5BR 2424Digital2424NoneSlot 1
7LD5BR 24201Digital24201NoneSlot 2
8LD5BR 24202Digital24202NoneSlot 2
9LD5BR 24203Digital24203NoneSlot 2
10Hotspot RX TS1Digital9RX TS1Slot 1
11Hotspot RX TS2Digital9RX TS2Slot 2
12Hotspot 91Digital91NoneSlot 1
13Hotspot 92Digital92NoneSlot 1
14Hotspot 242Digital242NoneSlot 1
15Hotspot 2421Digital2421NoneSlot 1
16Hotspot 2424Digital2424NoneSlot 1
17Hotspot 2426Digital2426NoneSlot 1
18Hotspot 2429Digital2429NoneSlot 1
19Hotspot 24201Digital24201NoneSlot 2
20Hotspot 24202Digital24202NoneSlot 2
21Hotspot 24203Digital24203NoneSlot 2
22Hotspot 24204Digital24204NoneSlot 2
23Hotspot 242210Digital242210NoneSlot 2
24Hotspot 240216Digital240216NoneSlot 2
25Hotspot 242997Digital242997NoneSlot 2

Scan Setup

My scan list includes the two analog repeater channels plus the two hotspot monitor channels — Hotspot RX TS1 and Hotspot RX TS2. This covers everything I want to passively monitor in one go.

A couple of settings worth noting:

CTC Scan Mode: Detection CTC — with analog repeaters using CTCSS tones in the scan list, enabling tone detection prevents noise bursts from triggering a scan stop. This has no effect on the DMR channels.

Hang Time: 3.0s — keeps the radio on an active channel long enough to react before scan resumes.

Priority Sweep Time: 500ms — seems to be a reasonable balance between scan speed and giving DMR channels enough time to decode properly.


Final Thoughts

The monitor + dedicated channel approach has made the radio much more pleasant to use. Scanning feels reliable, accidental TX goes nowhere harmful, and switching to reply on the right talkgroup is just a matter of turning the channel knob.

If you’re setting up a DM-32UV for BrandMeister use with a hotspot, hopefully this gives you a useful starting point.

Tags: / Category: DMR

Submit a comment

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