We've de-cluttered quite a bit and our navigation has changed. Let us know if you can't find what you're looking for.
Want to build your own codeplug from scratch but not sure where to start? Or just looking to make some changes to one of our files? We can guide you through the basics of creating a codeplug for just about any radio, even if it's not one that we provide files for.
You will need:
► Your radio's Customer Programming Software (CPS) application. We have links to software for a few of the more popular equipment manufacturers.
► A programming cable. Some older radios also require very specific cables and their respective USB drivers. You should be able to obtain those drivers from the same place you got the CPS.
► A radio ID issued by radioID.net. In most cases, one radio ID can be used on every radio you own.
🛑 The only public talkgroups available on the DMRVA network are those which appear on the DMRVA Talkgroup Matrix. For more information about the configuration of the RATS DMR repeater and the DMRVA network, or to learn more about special system features, see the RATS DMR FAQ and DMR System Features pages.
🛑 Many networks restrict the use of private (radio-to-radio) calls and data services such as text messaging. Nearly all networks prohibit the beaconing of APRS or other GPS position packets. And some networks such as Interstate also have special control functions you should know about. Be aware of the rules that apply to each system and build your codeplugs accordingly.
Before you begin entering anything, carefully consider how you want to organize your zones and channels. Does your radio have enough zone or channel capacity to hold everything you want to enter? Which talkgroup records (contacts) do you need to create? In what order do you want your channels to appear? Linear/Direct Entry CPS applications often make it difficult to change the order of zones or channels in your radio. If you want them a certain way, you'll need to enter them that way from the start.
Particularly in an Object Oriented CPS, we strongly recommend using a site prefix on every channel record (such as RIC, PBG, MDX) indicating which zone the record belongs to. This will make it much easier to find the correct records when it's time to add to your zones. If you will be sharing your file with others, please try to respect any established site IDs already in use on networks via existing codeplugs. We have a complete list of DMRVA site IDs in our Master Zone List.
For each repeater (zone) you will need to know:
► Receive and transmit frequencies/offset
► Color Code
► Which talkgroups are available on each timeslot
For each channel (talkgroup) you will need to know:
► Repeater details above (frequencies, color code) - you'll re-enter this information for every channel
► Talkgroup (contact)
► Timeslot (1 or 2)
You will be creating one channel record for every combination of repeater and talkgroup. If you are programming 15 repeaters that each carry 15 talkgroups, you will be creating a total of 15 zones and at least 225 channels. Each will need to be entered with meticulous attention to detail.
Start by programming a single zone containing your nearest repeater. Set up your channels in the order you think you might like, build that one zone, load it to your radio, and take it for a test drive. If the channel order makes sense and once you've tested that all of your channels are working correctly, go on to building additional zones.
Remember to frequently save your file. A lot of DMR programming software can be glitchy.
Many older radios require you to start your codeplug by reading the existing data out of the radio, and this is good practice for all radios. This will capture the manufacturer's default button layout, model identifiers, and other data that may be necessary when you attempt to write your file back to the radio. So hook up the cable, use the CPS to read the existing stuff from the radio, delete what you don't want to keep, and then add your own data.
We have found that 99% of CPS applications fall into one of two main categories. We call them Object Oriented and Linear/Direct-Entry. The file contents are largely the same, but the data entry workflow varies a little bit between each type.
For many of the radios we've evaluated, the CPS type is noted on our Supported Radios List under the OEM CPS Type column.
Type O: Traditional (fully object-oriented) CPS
Type L: Linear/direct-entry CPS with linked contacts
Type I: Linear/direct-entry CPS with inline contacts
Type Z: Other/atypical CPS design
► If your CPS has separate sections for Channels and Zones, you probably have an Object Oriented CPS.
► If your CPS has you enter channel details (channel, color code, talkgroup/contact, etc) directly within a zone, you probably have a Linear/Direct-Entry CPS.
This is the conventional and most common design for DMR CPS applications.
► Codeplugs are collections of data records
► Records may be of type Contact, Channel, or Zone
► Zones are collections of pointers to Channels
► Channels contain pointers to Contacts
This record/pointer relationship allows for efficient reuse and updating of data:
► Deleting or editing a Contact impacts every channel which uses that Contact
► A channel may be reused in multiple zones.
► Deleting or editing a Channel impacts every Zone that references that Channel
The order of operations for building a codeplug in this CPS type is:
► Create a Contact record for each talkgroup
► Create a Channel record for each combination of repeater+talkgroup; talkgroup is determined by the link to a contact
► Create a Zone for each repeater
► Populate each Zone with its respective channels
The contact (talkgroup number) isn't stored in the channel record. Instead, the channel points to a contact record that contains the talkgroup number. Updating the contact record in turn impacts all channels that point to it. Similarly, zones don't store frequency, time slot, or color code information. That goes in the channels, and then zones are formed from collections of channels, each of which might exist in multiple zones if desired. Channels can be moved freely between zones.
This is the second most common DMR CPS design.
► Codeplugs are collections of data records
► Records may be of type Contact, Channel, or Zone
► Channel records are created directly inside of each Zone
► Talkgroup numbers might be keyed directly into the channel record (unusual, type I)
We've identified two sub-types. If the CPS has a separate data entry area for Contacts (like Type O) then we call this a Type L CPS:
► Deleting or editing a Contact impacts every channel which uses that Contact
► Channel reuse requires manually re-entering the channel in each zone (dupes)
But a very limited number of Linear/Direct-Entry CPS applications take a slightly different approach to talkgroups (Type I):
► Talkgroups are entered directly into each channel. No separate Contacts list.
► Changing a talkgroup requires manual updates to each impacted channel.
The order of operations for building a codeplug in this CPS type is:
► Create a Contact record for each talkgroup (Type L)
► Create a Zone for each repeater
► Populate each Zone with channels, one per talkgroup, entering channel details line-by-line directly into the zone.
Admit Criteria is a per-channel setting that determines when the radio should be allowed to transmit on a channel. The name varies from one CPS to another. It's also known as Access Policy, TX Permit, TX Allow, TX Admit, and similar.
Depending on CPS, you are looking for something like:
► Color Code
► Color Code Free
► Color Code Idle
► Different Color Code
► Polite to Color Code
Avoid settings like Channel Free, Channel Idle, Always, Impolite to Color Code, or Same Color Code. When your Admit Criteria is set correctly...
✔️ Your radio will receive a Call Failed, Call Denied, Channel Busy, or similar message, usually with a "bonk" call denial tone, when you are out of range of the repeater.
✔️ Your radio will receive the same failure message and tone if you try to transmit on a busy timeslot, whether the same or a different talkgroup.
✔️ You can transmit on timeslot 2 while only timeslot 1 is busy, or vice-versa.
Admit Criteria testing information is provided in the troubleshooting section below.
🛑 The use of All Call is restricted on many repeaters including the RATS system. We recommend omitting this from your programming if possible.
🛑 Turn off GPS (APRS) position beacons. These are not supported on the DMRVA network and they may cause unpredictable behavior for other users.
Provided below are four excerpts of KG4PEQ's DMR Programming Introduction class, offered about once a year through RATS. These slides give a visual tour of two common CPS applications and an overview of the codeplug design process. The full DMR Programming Introduction course covers intermediate topics such as scan lists, receive group lists, monitor channels, Motorola's CPS 2.0, and more.