Personal Page of DM3MAT

qdmr - Manual

Screen-shot of qdmr in action.

This page contains a brief manual for the qdmr graphical user interface (GUI) application to program DMR radios. The aim of this application is to provide a simple to use, platform and vendor independent and well documented code-plug programming software (CPS) for popular DMR radios.


  1. Introduction
  2. General Configuration
  3. Creating Contacts
  4. Assembling RX Groups
  5. Creating Channels
  6. Assembling Zones
  7. Programming the radio


Before you start with programming your DMR radio, get familiar with this digital mode. I have also written a brief introduction into DMR in german. This manual only describes how program your radio using qdmr, not how DMR works and what all these weird terms mean.

Digital mobile radio (DMR) was not invented for the use in amateur radio. It was rather designed to be a radio standard for commercial applications in large companies (e.g., airports etc.). Therefore many features of this standard are of no use for ham radio or are even illegal (e.g., encryption). This complexity of the standard makes the programming of the radios cumbersome.

Moreover, the resulting configuration (codeplug) is highly device-dependent. These codeplugs cannot be shared between different devices let alone between different vendors. For commercial applications, this is not a big problem as a company will most likely buy identical radios at once from one company. Thus codeplug can be shared between all radios.

For ham radio applications, this incompatibility is a real issue. Since assembling a decent codeplug for one region is hard enough, doing the same work all over again for different models of different vendors is not manageable.

Finally, the typical code-plug programming software (CPS), particularly those for cheap Chinese DMR radios, is by no means user-friendly and seldom documented completely. Many options are named cryptic and it is not possible to identify which options are necessary for basic DMR operation. Moreover, the CPSs provided by the vendors usually only run under Windows.

The aim of the qdmr project is to overcome these shortcomings of typical CPSs. It has a reduced feature set only supporting those options necessary of amateur radio usage. It tries to be user-friendly by finding repeaters nearby and importing their input and output frequencies. Moreover, it stores the final codeplug not in a device-specific binary format but in a human-readable text format that is device independent and can therefore be shared across multiple device and even across vendors.

Finally, I try to keep the application well documented. This manual is part of this effort. It is a guide on how a codeplug is set up using qdmr.

General Configuration

The figure below shows the General Configuration tab of the qdmr. Click on the image to see an enlarged version.

Screen-shot of the general settings.
Screen shot of the general configuration like the DMR ID and the radio name.

The general configuration of your radio is the simplest step: You only need to enter your DMR ID and your radio name. The latter is usually just your call sign. If you do not have a DMR ID yet, you can request one at

You will always need only one DMR ID, even if you have several radios. The DMR network is able to handle multiple endpoints with the same ID. Never request more than one ID, they are a limited resource.

The Intro Line 1 & 2 is the text that some radios show on startup. You may enter any text here. Some radios show an image during boot. For those radios, these settings have no effect.

The MIC amp. option specifies the microphone amplification (if supported by the radio). This must be a value between 1 and 10, where 1 is the smallest amplification and 10 the loudest.

The last option is called speech synthesis. Some radios support some sort of speech synthesis to help visually impaired operators to navigate the radio. If this option is checked, the speech-synthesis will be enabled if the radio supports this feature.

Creating Contacts

The second tab is the Contact List. Here all DMR contacts are defined, irrespective of their type.

Screen-shot of the contact list.
Screen shot of the contact list.

You may add a contact by clicking on the Add Contact button at the bottom. You can also delete a contact by selecting the contact in the list and clicking on the Delete Contact button at the bottom. You may also reorder the contacts by selecting a contact in the list and use the arrow-up and arrow-down buttons on the left to move the contact up and down the list, respectively.

When you create a code-plug, the contact list should contain all talk groups and reflectors you are interested in as well as a so-called all-call contact to the number 16777215. Additionally you may add private calls to several operators you know as well as some service numbers.

Screen-shot new/edit contact dialog.
The new/edit contact dialog..

When you click on the Add Contact button or when you double-click a contact entry in the list, the Edit Contact dialog will appear. The first drop-down box allows to choose the type of the call. The possible options are Private Call, Group Call and All Call. The second entry is the name of the contact. Here any text can be entered. The third entry is the number of the contact. This entry gets disabled when all-call is selected as the call-type. Finally, if the last option Rx Tone is enabled, you will hear a ring-tone whenever this contact calls you.

qdmr tries to download the current list of all registered user DMR-ids. The contact dialog will use this information (once downloaded) to resolve call-signs to DMR ids. Just start entering the call-sign into the name field and matching call-signs are shown.

Assembling RX Groups

RX groups or RX group lists are just lists of group calls you wish to receive on each channel. Of cause, you may want to receive calls to different talk groups on one channel, hence you have to create these lists of talk groups beforehand.

Screen-shot of the RX groups.
Screen shot of the RX groups.

The RX Groups tab is just a simple list of all group lists you created. You may add a group list by clicking on the Add RX Group button at the bottom. You can delete a group by seleting that group in the list and clicking on the Delete RX Group button there. You can also edit a RX group list by double-clicking on that group in the list.

Screen-shot of the RX groups.
Screen shot of the RX groups.

When creating a new RX group list or when editing one, the Edit RX Group List dialog will open. Within this dialog, you can change the name of the group at the top. In the center of the dialog, you will find the list of group calls of this group list. You can add group call to the list by clicking on the Add Contact button on the bottom. You can also remove contacts from the list by selecing the contact and clicking on the Remove Contact button. When you are done editing the group list, click on the Ok button. The Cancel button will discard all changes and closes the dialog.

Creating Channels

Creating the list of channels for the DMR radio is the most cumbersome task. Remember, each repeater has two time-slots with possibly multiple talk-groups assigned to each time slot. For the sake of convenience, it is reasonable to define a channel for each talk-group you are interested for each time-slot on every repeater. Thus, instead of a single channel per analog repeater, you will likely define at least 3-4 channels per repeater in DMR.

To ease the burden of creating a lot of channels, qdmr implements some small features that should help you in creating these channel. One feature is the automatic retrieval of repeater input and output frequencies from This is a world-wide map of ham-radio repeaters.

When you enter your locator into the settings dialog, qdmr will provide you with a list of nearby repeater and fill in the input and output frequencies. This feature works for both, analog and DMR repeaters.

Screen-shot of the list of channels.
Screen shot of the list of channels.

The Channels tab shows the list of all defined channels, irrespective whether they are analog or digital (DMR) channels. You may add an analog or digital channel by clicking on the Add Analog Channel or Add Digital Channel button on the bottom, respectively. You can also delete a channel, by selecting that channel in the list and clicking on the Delete Channel button at the bottom. You may move a channel up or down the list by selecting that channel and clicking on the arrow-up or -down button to the left, respectively. Finally you can edit a channel by double-clicking it in the list.

Edit digital channels

When you double-click on a digital channel or click on the Add Digital Channel button, the digital channel editor dialog will be shown. This dialog allows you to edit or create digital channels.

Screen-shot of the digital channel editor dialog.
Screen-shot of the digital channel editor dialog.

The dialog is limited to the DMR-channel settings that are relevant for amateur radio. Thus, it is way smaller that the typical dialogs to edit DMR channels in commercial CPSs.

The Name, Rx and Tx Frequency fields contain the chosen name of the channel as well as the transmit and receive frequencies. The latter can be set automatically by using the repeater auto-completion feature: Start to enter the call-sign of a repeater and the RX/TX frequencies will be set using the information from For simplex-channels RX and TX frequencies must be identical.

The Power setting specifies the power used on that channel. For a nearby repeater, you may reduce the power. Tx Timeout (TOT) specifies the transmit timeout in seconds. This limits the continuous transmission time to this period. A value of 0 disables the timeout. Scan List allows to specify the scan list associated with this channel. If a scan is started on this channel, this scan list will be used. Each channel may have a different scan list.

The Tx Admit criterion specifies under which condition you are allowed to transmit on the channel. For DMR reapeater channels this should be set to Color Code, this means that you may only transmit if the radio received the correct color code of the repeater before. On simplex channels Channel Free should be chosen.

The Color Code specifies the color code of the repeater. For simplex channels, this should be set to 1. The Time Slot specifies the time-slot of the repeater for this channel. All repeaters have two time slots but different talk groups might be associated with each time slot. The Rx Group List specifies the list of group-calls you want to receive on this time-slot. The Tx Contact specifies the default contact you want to call on this channel when pressing the PTT button. Finally, the GPS System specifies how you location information is send over this channel (selecting None disables GPS for this channel).

Edit analog channels

When you double-click on an analog channel or click on the Add Analog Channel button, the analog-channel-editor dialog will be shown. This dialog allows you to edit or create analog (FM) channels.

Screen-shot of the analog channel editor dialog.
Screen-shot of the analog channel editor dialog.

The left column of field are identical to the digital channel dialog, that is Name, Rx and Tx Frequency, Power, Tx Timeout and Scan List.

Like for digital channels, analog channels may also have an Tx Admit criterion. Possible options are Always, Channel Free and Tone. For FM repeaters the Always option should be chosen to allow for a quick turn-around in a QSO. For simplex channels Channel Free should be chosen. The Squelch field specifies the squelch threshold. Rx and Tx Tone specify the CTCSS/DCS tones for this channel/repeater. The Rx Tone specifies the tone that is needed to open the squelch. The Tx Tone specifies the tone that gets transmitted (e.g., to open the repeater). Finally Bandwidth specifies the band-width of the transmission (i.e., 12.5 or 25 kHz).

Assembling Zones

You may programm a myriad of different channels for you radio. To organize them in handy chunks zones are used. That is, a zone is just a named list of channels that are relevant for a particular area.

Screen-shot of the list of zones.
Screen shot of the list of zones.

The Zones just lists all defined zones. You may add a zone using the Add Zone button or you may delete one by selecting the zone in the list and clicking on Delete Zone. You may also alter the ordering of the zones by selecting one from the list and using the up and down buttons on the right.

How zones are implemented differs from radio to radio. For example, some radios allow to set a different zone for each VFO (A or B), consequently these zones are simple lists of channels. Other radios allow to select a single zone for both VFO. Usually, for these radios a zone consists of two lists of channels. One for each VFO. qdmr zones follow the second approach. That is, a zone consists of two lists. One of each VFO. When programming radios that support only one list per zone, the zone is split into two. One of each list.

Double-clicking a zone or clicking on the Add Zone button will open the zone editor dialog.

Screen-shot of the edit-zone dialog.
Screen-shot of the edit-zone dialog.

This dialog allows to add, remove and change the order of the channels within the zone.

Assembling Scan Lists

Scan lists are simple lists of channels that are scanned sequentially, when scanning is enabled in the radio.

You need to associate a scan list with a channel in the analog or digital channel edit dialog. This determines which scan list is used when a scan is started on a particular channel.

Screen-shot of the GPS settings.
Screen shot of the scan lists.

A new scan list can be created by clicking on the Add Scan List button. A scan list can be deleted by selecting the scan list and clicking on the Delete Scan List button. The order of the scan list can be changed by selecting a list an moving it up/down using the up and down button on the right.

Double-clicking on a scan list or clicking the Add Scan List button will open the scan-list edit-dialog. This dialog allows to alter/assemble the scan by adding, removing or reordering the channels in the scan list.

Setup GPS

The GPS tab allows to specify several so-called GPS systems. A GPS system is a collection of settings on how GPS information is send to the DMR network.

Screen-shot of the GPS settings.
Screen shot of the GPS settings.

Double-clicking a GPS system or clicking on the Add GPS System button will open the GPS system edit dialog.

Screen-shot of the edit GPS dialog.
Screen shot of the edit GPS dialog.

This dialog allows to specify how the GPS information is send through the DMR network. That is the Name field specifies the name of the GPS system. The Destination field specifies the private-call contact, the information is send to. For example 262999 in the Brandmeister network. The Update Period specifies the period in which the current GPS information is send to the contact. The revert channel specifies to which channel the radio should switch back after the information has been send. This should always be [Selected].

Programming the radio

Once the codeplug is finished, it can be programmed onto the radio. Just select the Upload Codplug button in the tool-bar at the to of the window or the DeviceUpload menu enty.

In a first step, qdmr will try to detect a connected radio. Once a radio is found it will verify the codeplug with that radio. That is, it will check whether any limit are exceeded. For example the number of channels, contacts, group lists, etc. If everything fits into the radio, qdmr will start the upload.

The code-plug upload is a two-step process. First, the current codeplug is downloaded from the radio. This includes all settings. Then the device-specific codeplug is updated and then re-uploaded to the device. This two-step process will maintain all device-specific settings made earlier.

During the up- and download, the qdmr GUI will turn gray (inactive) to prevent any changes to the codeplug during upload/download. However, a progress-bar is shown in the bottom-right to indicate the up- and download progress.


When running qdmr or dmrconf under Linux, you may need to change the permissions to access USB devices. Create a file /etc/udev/rules.d/99-qdmr.rules with the following contents:

    # TYT MD-UV380
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="666"

    # Baofeng RD-5R, TD-5R
    SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="666"

Finally execute sudo udevadm control --reload-rules to activate these new rules.