Table of Contents
Please note that this material is written with a basis in the TYT MD-380. However, the data structures and data relationships described within this document are applicable to Customer Programming Software (CPS) for both different model radios and different manufacturer radios.
This article focuses on how to program memory channels in a DMR radio. This article does not provide information on manufacturer or model specific features.
This article focuses on the types of data that is stored within a DMR code-plug file, and the relationship between those data types, including dependencies on order of construction of data. This article does not attempt to provide a tutorial on any specific Customer Programming Software (CPS). Rather, the goal here is to provide a fundamental understanding of the underlying data structures so that a code-plug file can be constructed.
There are four data structures that are present in all DMR radios and that are managed through the Customer Programming Software (CPS).
This list contains the both the DMR-MARC ID values for individual users and the BrandMeister Talk-Group ID values.
DMR-MARC individual ID
These values can be used to issue a Private Call to a specific individual, or to display an alias on your radio display to identify the station being received. When used as an alias, the contact list entry is programmed with individual identifying information (i.e. call-sign and/or name) in association with their specific DMR-MARC ID.
These values indicate which Talk-Group that the contact represents, and is programmed with the Talk-Group number and a description of the Talk-Group (i.e. BM ID 3116 for the BrandMeister Idaho statewide Talk-Group).
Receive Group List
A Receive Group contains a list of Talk-Groups that can be received simultaneously when a channel is configured to use the Receive Group. It is not hard to imagine that this option presents issues if the Receive Group contains multiple Talk-Groups and each of those Talk-Groups is being used extensively.
The Channel List contains individual record entries for each of the channels contained within the radio. Channel entries include the following information:
The frequency that you receive the repeater or hot-spot DMR device on.
The frequency that you transmit to the repeater or hot-spot DMR device on.
The Time-Slot which you wish to receive and transmit on. By convention, repeaters usually have static Talk-Groups on Time-Slot 2 and Dynamic Talk-Groups (i.e. Push-To-Talk Talk-Groups) on Time-Slot 1, but this is not always the case. Consult the repeater administrator, or the BrandMeister information page on the repeater to determine Time-Slot / Talk-Group pairing for the repeater you intend to use, and adhere to their guidance.
The Color-Code that is required to access the repeater. Consult the repeater administrator, or the BrandMeister information page on the repeater to determine the Color-Code to be used.
Receive Group (Optional - Not Recommended)
A Receive Group supports listening to more than one Talk-Group on a given channel. This capability is optional, and usually defaults to an equivalent setting of None. If used, a Receive Group can contain as many Talk-Groups as a zone can contain channels. For example, if your radio supports 16-channels per zone, you can program up to 16 talk-groups into the Receive Group.
If no Receive Group is defined, only the Talk-Group that you are transmitting on will be heard.
It is recommended that Receive Groups not be used.
Transmit Admittance Criteria
There are three options for Transmit Admittance:
This option negates the ability of DMR to prevent doubling. Although this may be the default option in the CPS, it is recommended that this option not be used. When selected, this option will result in transmission whenever the push-to-talk is pressed, regardless whether the channel may be busy.
This option will only allow transmission if there is no signal on the channel. Although more polite than the previous option, there are cases where this option may deny access when there may be no reason not to deny access. For example, if two repeaters, using different color-codes and on the same channel, have overlapping coverage, and you are operating in a good coverage zone for the first repeater but weak coverage on the second, the unique color codes will prevent you from bringing up the second repeater while at the same time, if a signal is on the second repeater, you may be denied access to the repeater that you are intending to operate on. This option is the second best choice.
Color Code Free (Recommended)
This option is the preferred option. This option would allow access in the previous example and still takes advantage of the ability of DMR to prevent doubling. Always use this option.
Specifies the Talk-Group which you wish to transmit on. In the absence of a Receive Group, this field also indicates the Talk-Group which you wish to receive.
A Zone List is simply a grouping of channels. Often, a zone is constructed to contain all of the channels / talk-groups used on a given repeater. Some radios have a fixed channel capacity per zone (e.g. 16-channels per zone) while other radios support dynamic sizing of zones. If your radio has a channel knob, it probably has a fixed number of channels per zone. If your radio has channel up / down buttons, it may support dynamic zone sizes.
If you are operating on multiple contiguous repeaters, with like channel definitions, we recommend constructing zones so that you can move from one repeater to the next, using the same talk-group / time-slot / color-code, in a manual roaming procedure that allows you to maintain communications by simply changing the channel. Changing zones is often a more complex operation than changing channels, and may present an excessive distraction when compared to changing a channel.
Data structures must be constructed in the order shown below. If you do not adhere to the described order of construction, you will not be able to properly configure your channels and zones without first going back and adhering to this order of data construction.
Before you begin constructing a code-plug, you will need to gain access to prerequisite data that is used to construct the code-plug file.
|Figure 2||Figure 3|
A list of BrandMeister Talk-Groups can be found by clicking here. This list was gathered through internet searches. The list may not be comprehensive, and may not be accurate. If constructing a code-plug file for a specific repeater, you should adhere to the talk-group definitions provided by the repeater administrator. You can look up the repeater on the BrandMeister page, consult any page referenced from the BrandMeister page, or use any other known reliable resource that provides the talk-group information that you need.
DMR-MARC User ID
Individual DMR-MARC user ID values can be looked up on the DMR-MARC web-site. These are used to construct channels that enable private calling to an individual, or to display an alias (i.e. call-sign and name) of an individual that your are receiving.
Data from these two sources are used to populate both the Contact List, and if used, the optional Receive Group list.
There are dependencies between each of the data-sets, and these dependencies dictate the order of data construction. The Channel List is dependent upon the Contact List, and if used, the optional Receive Group List. The Zone List is dependent upon the Channel List.
Each record in the Contact List contains three fields:
This field can contain either the name of a Talk-Group, or the alias information (i.e. call-sign and name) of an individual.
This field should be set to a value of Group if the contact record contains a Talk-Group. If the contact record contains an indvidual, this field should be set to a value of Private.
If the contact record contains a Talk-Group, this field should be set to the BrandMeister Talk-Group ID of the Talk-Group described in the Contact Name field above. If the contact record contains an individual ID, this field should be set to a value of the individual's DMR-MARC ID.
The following figure shows an example for the BrandMeister Talk-Group for Idaho statewide communications, operating on Talk-Group 3116.
The following figure adds an individual contact, with the contact list now showing both a Talk-Group and an individual Private ID.
It is recommended that you attempt to maintain a sensible ordering of this data. Many of the Customer Programming Software applications do not support the re-ordering of this data, so think about how you want this organized before you start construction of the code-plug file. Ordering the data by Talk-Group ID / Private ID numeric ID values will greatly simplify locating the Contact List data when programming the individual channels.
Complete construction of your Contact List prior to moving on to the next section.
Use of the Receive Group is optional. It is recommended that you do not use the Receive Group feature. When no Receive Group is specified for a channel, the channel simply receives the same Talk-Group as the channel is specified to transmit on to. A Receive Group allows more than one talk-group to be heard at the same time on a given channel. If you choose to use the Receive Group, each Receive Group record contains:
Receive Group Name
A name, of your choosing, that identifies the Receive Group. This name appears only as a selectable option when programming a channel, and is not displayed on the radio at any time.
This list contains an entry for each Talk-Group that you wish to include in the Receive Group. The number of entries that the list can contain usually matches the number of channels that can be contained in a zone. If your radio supports 16-channels per zone, then this list might be capable of containing 16-talk-groups per Receive Group.
The following figure shows a Receive Group with a single Receive Group record that defines a BrandMeister Talk-Group specified to support Idaho statewide communications.
The following figure shows a Receive Group with two entries, the first of which specifies the BrandMeister Talk-Group of USA Nation-wide communications, and the second specifies a BrandMeister Talk-Group specified to support Idaho statewide communications.
The Channel List contains a record for every channel that your code-plug file is intended to support, up to the number of channels supported by the radio.
Each channel list record will contain, at minimum, the following data:
There may be additional fields within the channel record. A description of these fields is beyond the scope of this document. Consult your program documentation, or embedded help file, if available, for information on any additional fields.
The following record was constructed for an OpenSpot hot-spot, operating on a frequency of 441.000 MHz, with a 3-minute time-out timer, and using the BM ID 3116 talk-group and the OS ID 3116 receive-group. If the optional receive-group were not used, the GROUP LIST entry would be set to None. This record is constructed in this manner, not to advocate the use of a receive-group, but to further illustrate the relationships between data structures, which will be more apparent towards the end of this document.
The Zone List contains records that specify which channels are to be included within the zone. The Customer Programming Software (CPS) usually presents a user interface where a list on the left shows all available channels by channel name, and a list on the right shows all channels contained within the zone. You can move channels from the channel list into the zone or move channels out of the zone and back into the channel list.
Each Zone record can contain up to the number of channels per zone that is supported by the radio.
By default, the Customer Programming Software will contain one channel in the zone. If this channel is not desired, it may be necessary to move a desired channel into the Zone prior to moving the undesired channel out of the Zone.
The following figure depicts a channel that is configured for an OpenSpot hot-spot device, operating on 441.000 MHz, Talk-Group 3116 (i.e. BrandMeister Idaho statewide), with a Receive Group that contains a single entry to listen on Talk-Group 3116, and with the channel residing as channel 1 in a Zone that is named as the 1 OpenSpot zone.
Referring to the above figure:
Line A shows the Contact List being populated with BrandMeister talk-group 3116, from a roster of known talk-groups.
Line B shows the Contact List being populated with the DMR-MARC ID for K6JMQ. This information is used to display information about K6JMQ when a signal from his transmitter is received.
Line C shows the Receive Group List being populated with BrandMeister talk-group 3116, from a roster of known talk-groups. Again, the use of receive groups is not recommended, but is shown here to illustrate the data relationship.
Line D shows the Contact Name in the Channel being populated with the named group Contact representing the BrandMeister talk-group 3116 for Idaho statewide communications.
Line E shows the receive Group List in the Channel being populated with the named Receive Group representing the BrandMeister talk-group 3116 for Idaho statewide communications.
Line F shows the first channel in the named 1 OpenSpot zone being populated with the named Channel for communications on the BrandMeister talk-group 3116 for Idaho statewide communications through an OpenSpot device operating on 441.000 MHz.
The following figure depicts two channels, contained within the same zone, operating on the N7IBC repeater (e.g. 444.125, + offset, color-code = 1), with both channels on time-slot 1. The first channel supports in the zone supports communications on BrandMeister talk-group 3116 / Idaho statewide communications, while the second channel supports a private call to K6JMQ. No receive groups are used in this example.
Referring to the above figure:
Line A shows the Contact List being populated with BrandMeister talk-group 3116, from a roster of known talk-groups.
Line B shows the Contact List being populated with the DMR-MARC ID for K6JMQ. In this case, this information is used to display information about K6JMQ when a signal from his transmitter is received and also to construct a Private-Call channel.
Line C shows a channel, named BM ID, being populated with the Contact List entry for BrandMeister talk-group 3116, supporting Idaho statewide communications.
Line D shows the first channel in the named N7IBC zone being populated with the named BM ID channel that is configured for BrandMeister talk-group 3116 in support of Idaho statewide communications.
Line E shows a channel, named TS1 K6JMQ, being populated with the Contact List entry holding the individual DMR-MARC ID for K6JMQ. This channel supports a Private call to K6JMQ.
Line F shows the second channel in the named N7IBC zone being populated with the named TS1 K6JMQ channel, and supports a Private call to K6JMQ.