Updated 12/3: Hampton Roads Brandmeister package now includes the VA Eastern Shore. Also updated: Interstate Network
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 downloaded 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
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 built directly within each Zone
► Talkgroup numbers might be keyed directly into the channel record (type I)
With the more common Linear/Direct Entry (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)
With the less common Linear/Direct Entry (Type I) CPS:
► 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.
With this CPS style, there is no record/pointer relationship, except for Contacts in a Type L CPS. Channel re-use requires duplicate entries for each zone, and moving a channel between zones requires deleting the channel record and re-building it from scratch in the new zone.
► 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.
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 some 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.
Start by attempting a test transmission on the Echo Test channel. Hold down your PTT button and wait for your radio to indicate permission to transmit -- usually indicated by either a talk permit tone, green light, or on-screen message... something that indicates your radio has reached the repeater and is allowed to transmit. When you see or hear this, record a short message like "AB1CDE on Echo Test" and then release your PTT. The repeater should play back your recorded audio. Success?
Combined with the network Echo Test feature, the DMRVA Callwatch service is a great way to check your radio's programming and signal quality.
From left to right, Callwatch provides:
► Start time of the transmission
► Duration of the transmission. In-progress transmissions will appear at the top of the screen.
► Source Peer Alias is the originating repeater, network, or hotspot ID
► Source Radio Alias is the originating user's radio ID and network identity
► Destination Bridge Group is the target talkgroup (group calls) or radio ID (private calls)
► RSSI (dBm) is the received signal strength
► Site Name is the originating network
► Loss rate is the percentage of packet loss during the transmission, an indicator of audio intelligibility
Things to watch for:
► Your radio ID should display in the Source Radio Alias column. (If your radio ID was issued in the past 30 days, your name and call sign may not appear. This is OK.)
► Destination Bridge Group should display a talkgroup name. If it shows UnKnown Ipsc and you are transmitting to a talkgroup, check the talkgroup number and timeslot.
► RSSI and Loss rate: increase power or re-orient the antenna for best performance.
In the sample Callwatch output above, we see two instances of UnKnown Ipsc, along with several successful connections to VA Statewide and the Parrot (Echo Test).
► UnKnown Ipsc 3151: Virginia Statewide (3151) is on timeslot 2. Since we know the talkgroup number is valid, this error means the timeslot is incorrect.
► UnKnown Ipsc 99: Simplex (99) is not carried on this repeater, so Callwatch shows this message.
💡 Radio-to-radio (private) calls will always show as UnKnown Ipsc on Callwatch.
To confirm that your Talk Permit setting is working correctly, run through this test:
Tune to the Echo Test and send a test transmission of around 20 seconds in length. You can simply state your call sign and "testing" followed by dead air.
As soon as the Echo Test begins to play back, press your PTT button. You should see a Call Failed, Call Denied, Channel Busy, or similar message, and/or call denial tone.
While the Echo Test is still playing back, quickly switch to the Clear Timeslot channel and attempt to transmit. You should be allowed to transmit, since this is on the other timeslot (2) and should not be busy.
While the Echo Test is still playing back, quickly switch to RVA Metro and try to transmit. You should not be allowed to transmit since the timeslot (1) is busy with the Echo Test playback, and you should see a call failure message and/or hear a call denial tone.
With the radio out of coverage range, or with the antenna removed and the radio connected to a dummy load, you should receive a call failure message and/or denial tone.
If any of those tests produce unexpected results, your Talk Permit setting needs to be adjusted.
The RVA Metro talkgroup can be a little confusing. Its talkgroup number varies depending on how and where you're accessing the network. If you are being heard by some RVA Metro users but not others, check that you're using the right talkgroup number:
► When you are on a repeater in the RVA Metro repeater cluster* use talkgroup 27500.
► From the Spotsylvania repeater, from a Brandmeister repeater, or from a hotspot use talkgroup 31511.
Using the incorrect talkgroup number might seem to kinda-sorta work under the right circumstances, but for reliable communication be sure to set your radio to the talkgroup numbers shown here.
* The RVA Metro repeater cluster includes Beaverdam (BEA), Goochland (GCH), Lexington #1 (LX1), Middlesex (MDX), New Kent (NKC), Petersburg (PBG), Powhatan (POW), Richmond (RIC), and the Richmond portable repeaters (POR).
► RATS DMR System Features
► RATS DMR FAQ
► RATS Codeplug Project FAQ
► CPS Information
► DMRVA Homepage
► DMRVA Talkgroup Matrix
► DMRVA Callwatch
Need one-on-one programming help? Get in touch with us!