DMR: Digital Mobile Radio – Digital voice on VHF and UHF. Used both commercially and now more and more in the amateur radio world. DMR has many, many features built into the hardware that are not used in the amateur implementations.

While there is now a SOTA “Talk Group” (973)  set up on the Brandmeister DMR network (with links from Yaesu Fusion and in the future possibly D-Star), for use as a “back channel” between activators and between activators and chasers, and while DMR repeaters are “popping up like mushrooms” around Europe, I decided it was time to replace my old dual band Wouxon KG-UVD1P FM HT with a DMR+FM version HT.

Device install notification screens

Baofeng RD-5R DMR HT

After looking around the web and listening to podcasts to see what a good DMR HT needs to have (e.g. Tier I and II compatibility, VFO mode, programmable from the keypad, more than 16 channels etc. etc.), I came across the Baofeng RD-5R. Baofeng are famous for producing the cheapest FM UV-5R and BF-888 HTs whose “spectral quality” was not always the best. Their first attempt to get into the DMR market (both commercial and amateur) was the DM-5R, which while “conforming” to the DMR standards had one major failure, that it was only a Tier 1 device – that means it only transmitted on one of the two possible time slots that are available on just about every amateur repeater that is in service. I saw one report saying that some batches of the rig actually transmitted on BOTH time slots at the same time! Every way you look at it, a major failure from Baofeng.

Looking at the specs on the RD-5R however, it IS a Tier I and Tier II unit and is in fact designed not by Baofeng but by another Chinese company Radioddity whose GD-77 is known as a good DMR HT. In fact it appears that, while the “code plug” (fancy way of saying configuration file) for the GD-77 is the same file format as the one for the RD-5R, that much of the electronics may also be the same between the two HTs. The main difference between the two is that the Baofeng RD-5R uses the Baofeng UV-5R case and is cheaper than the Radioddity GD-77. Support and downloads (including the programming tool software) come from Radioddity rather than Baofeng.

When I bought my RD-5R in the middle of April 2018 they were available for US$75 in the US and Australia but if bought for use in Germany an additional US$30 was added to the price making it €90. Two weeks later the price dropped to US$63 or €61 no matter where the unit was going to be used. This is most definitely the cheapest DMR & analogue FM, Dual Band (2m / 70cm) 1/5w HT on the market at the moment. Despite than its build quality and capabilities for the price are very good.

The latest versions of the CPS software and firmware are downloadable for free from the Radioddity website. The CPS is a normal windows install executable and the HT does NOT need any drivers as the chipset within the HT is a OEM defined device which Windows recognises as “MCU Mouse DEMO” as shown in the notifications screens. NOTE: this detection and installation by Windows 10 can take up to 15 minutes, so be patient!

The “CPS” customer programming software is well documented within the program itself by the use of “hover over” and lower screen descriptions. What it doesn’t cover well is explaining what each of the elements that you have to program mean in lay-man terms and more importantly, the inter-relationship of the items in the configuration. Having fought my way through a lot of this, I hope to give some guidance here to help other have less of an issue programming their RD-5R.

Baofeng RD-5R CPS software

It would not surprise me to find some of the existing programs that take data from the DMR databases (DMR+ and BrandMeister networks) and build “Code Plug” files (that currently don’t support the RD-5R format) being extended to support the RD-5R because at the price, I expect it will soon become very common.

It appears from pictures that I have seen that the Baofeng-Radioddity RD-5R CPS software looks identical to the Tytera MD-380/390 CPS software. Whether this is an intentional standard layout, ripped off software or whether there’s a link between Radioddity and Tytera I don’t know but as it appears that the file format used for the Radioddity GD-77 DMR HT and the Baofeng RD-5R are the same, it would be great if it turned out that the code plug file format for the MD-380/390 was also the same as that would allow the transfer of code plugs between several DMR HTs. There is at least one website (see links at end of this page) that can auto-generate an MD-380 code plug, if that file could be hex edited to be used with the RD-5R it would save A LOT of work!

Programming digital voice HTs has always been difficult. When I had an ICOM D-Star HT, I had different, but similar problems programming that, so this is not just a DMR thing.

ERRORS in the Baofeng RD-5R CPS software:

1. While it is nice that you have the ability to export some of the data (digital contacts and channels) in CSV format, so that you can work on them in a spreadsheet, the fact that the color code does not get populated down into all the records when the channel list file is re-imported causes a lot of extra work as this then has to be done manually. The exported file is fine as the overview still shows the color code values but when you look into the individual records, they are all set to zero. Also the Scan list value in the channel record is lost when the exported file is re-imported.

2. Security! If you have a RD-5R with a power on password that you don’t know (i.e. this is a stolen unit), it is possible with the CPS to simply load a new code plug without a password or with a password that you know as the file transfer is allowed BEFORE the HTs password has been entered !!

3. If you try to change the DMR-ID in a digital contact (private), on closing the panel, the program has an exception as it can’t find the key – so for now, delete and create new when you want to change this value.

4. trying to create a new TG (digital contact) entry with a number that is already defined, causes a program error rather than telling you that you have a duplicate.

Advanced mode in Baofeng CPS!

I found this on the Radioddity website:

Q: What is the password for RD-5R advanced mode?
A: ctrl + alt + shift + 5,enter the password: DMR5R

It works – but what it adds, I haven’t found out yet!

History of DMR in Germany and general DV.

Click here for an excerpt from a piece I made for the ICQ Podcast.

Terms and equivalents (I think this is valid for all DMR radios):

Time Slots (or Tiers):

– A DMR repeater’s transmit and receive channels are time sliced between time slot 1 and 2. Two separate conversations can then take place through one repeater at the same time.


– repeater or simplex channel definitions

    Digital: Frequency, offset, which time slot, Colour code, which scan list (if appropriate) which receive group list and contact (i.e. the digital contact record which contains the talk group number)

    Analogue: Frequency, offset, CTCSS code, which scan list (if appropriate).


    Digital Contacts: Talk group (audio conference room) name and DMR-ID or individual’s call & name and DMR-ID (private call).

The two types of digital contacts group calls and private calls. There is one “special” private call DMR-ID 9990 is the “parrot” which repeats back what you say so you can check your audio.

When you make a call in DMR, you can call or connect to a group of users (a talk group) or make a private call to an individual user.  In amateur radio, we typically make and receive group calls, even a call using just the local repeater (i.e. not going into the network behind the repeater) is also considered a Group call to a Talk Group even though no virtual conference room is used. In this case the talk group number 9 tells the repeater that this will be a QSO on the repeater only.

  • Group Calls
  • group call contact is a connection to a talk group.  Think of this like an audio conference virtual room.For this to work, when you create a channel, you will set the default transmit contact.  That is, the contact that will be called when you set your radio on a channel and press PTT.
  • Private Calls
  • private call is a call to the radio ID of another user.  On ham radio DMR repeaters, we typically do not make private calls to other users. (at present, I suspect private calls would only work between users on the one ham repeater, not over the background network – but I haven’t tried this yet). Entering private call contacts into your radio can be used to set aliases for other users DMR-ID so that when the join a group call in a talk group, their name or call sign will appear (whatever you have typed into the private contact record) rather than just their DMR-ID.

    Special Talk group numbers:

  • 9 – local contact through the repeater (no connection to the network)
  • 99 – Simplex DV – for communication DMR rig to DMR rig (without a repeater or host spot) – simplex communications.
  • 9990 – Parrot – this is a test talk group that will echo back to you whatever you say, so that you can check your rig is working.

    Analogue contacts: can be used with DTMF dialed contacts such as over Echolink or IRLP – enter name and code.



A way of grouping repeaters (channels in DMR terms) together, possibly on a geographical or other basis. Maximum of 32 channels in a Zone.


Scan Group:

 A set of up to 16 channels to scan over when requested via the menu. Note that only the Contacts (talk groups) defined in the RxList will be audible, all others will be muted.


RxList: List of talk groups or individual “contacts” that will be audible if encountered while listening to repeater channels.

NOTE: this is also an “open door” on a Time slot if you define a Rxlist with multiple TGs in it, then all of those TGs can be heard on the selected Channel, even though you will only be able to Tx on the one TG you have set in the Contact field !! – See this article from the Morecambe Bay repeater group in the UK. Having multiple TGs in the Rxlist assigned to a channel is effectively “full-time promiscuous mode”. If you create a channel with only one TG in its assigned Rxlist you will not hear the traffic on that Time Slot if it is not for the TG in the Rxlist HOWEVER … Pressing the “moni” button on a channel that is set to only listen for one talk group, opens that channel/time slot up so that you will hear every talk that comes up on it irrespective of whether the TG is in the assigned Rxlist or not or even not in the list of digital contacts.

When is a channel NOT a channel??

My initial understanding was that a Channel in the Code Plug defined the repeater and how to access it (frequency, CTCSS or Colour Code, offset etc. with a digital server having the extra definition of which Time slot you want to use). While this is indeed true for Analogue FM channels in the HT (except no time slot is needed) – this is NOT what a digital Channel is – the Digital channel goes one level further in that you have to define the Talk group, that you want to access via the time slot on the repeater! YOU HAVE TO DEFINE A CHANNEL FOR EVERY  TALK GROUP AND THAT HAS TO BE DEFINED EXTRA FOR EVERY REPEATER YOU WANT TO USE!!  This shows the commercial basis of this system. In a commercial situation the handsets would be used via the repeater on the building site and possibly also in the main office to a company talk group – so perhaps 4 or 6 channels needed only. If I want to be able to access more than one talk group via ANY of the repeaters in Bavaria – I have to create HUNDREDS of channels!!

Interrelationships of parameters:

You can only scan a zones servers if they are in a Rxlist and in a Scan list.

The Rxlist entry needs to be defined in the Rxlist itself AND in the channel (Server and time slot) record.

Scan lists can have a maximum of 32 entries in the Baofeng.

Zones can have a maximum of 16 channel entries (where an entry is one server+time slot combination). It appears the scan list can only have 16 entries (as that’s the limit for the Zones) otherwise Invalid Scan is displayed and then it scans the first 16 repeaters. Don’t add the same channel into more than one Scan group as the entry on the Channel record for the scan group can only select one value.

You can also get the error “Ch Empty” – whether this is a memory capacity problem on the HT or something else I’m not sure at the moment.

The CHANNEL record, “ties” all the others together and has to have the correct Rxlist, Scan List and Digital Contact entry (only 1 per Channel record) as well as the “physical” frequencies, time slot and colour code settings in it.

NOTE even though you may add the Channel to the Rx, Scan and Zone lists this information is NOT automatically transferred to the Channel record, you MUST add these settings to the Channel record manually – i.e. do the job twice!

On both the DMR+/Hytera and the Brandmeister networks, the standard adopted is to use time slot 1 for world-wide talk groups and time slot 2 for local talk groups.

Ch Empty error:  (Solved)

Looking at an GD-77 DMR HT site, there were users getting the same error and as both of these HTs are from the same “stable”, the problem could be the same – it was suggested on the list that the problem was that the CPS software, when a channel record is deleted, it’s only flagged and not actually removed, leaving a gap in the sequence that it was though could cause this problem. I took a look at the file with a hex editor and couldn’t find this problem. So perhaps my problem is different? As it is advertised everywhere that Radioddity often update their CPS and / or firmware, I went to the Radioditty website (on May 5th) and what did I find? On 24/4/2018, Radioditty issued no new CPS but new firmware for both the GD-77 and the RD-5R (V 2.09 for the Baofeng, V3.11 for the GD-77). After loading this firmware, the “Ch.Empty” error is gone and my analogue scan lists are now working and the HT is transmitting on those analogue channels!!  YAHOO!! 

RD-5R capacities & capabilities:

  • Contact IDs (TGs): 256 max
    RX Groups (grouped lists of TGs): 64 max, each group up to 16 contact IDs
    Zones: up to 250, each zone can have up to 16 channels
    Channels: maximum 1024
    Scan lists: maximum 250, each scan list can have up to 32 channels.
  • Promiscuous mode (hear all talk groups on the current time slot of a repeater even if not in the assigned RXList), by pressing the [moni] bottom button on the side of the HT (a black speaker symbol appears at the top of the LCD display). Please refer to the comments about RxLists above to fully understand this. NOTE: This appears not to work in SCAN mode only when you have manually selected a channel in the Zone list.

Features that the BAOFENG RD-5R DOESN’T have:

  1. GPS (this may be an issue in the future if DMR gets the “follow-me” or “load local repeater list” functions that D-Star has as without GPS these will not work).
  2. Roaming (being able to switch to a stronger repeater when travelling and stay connected to the same talk group).
  3. Scan pause & resume. You can only turn the scan feature off or on and when you turn it on, it will start from the first item in the scan list, not where it was last stopped.

Keyboard shortcuts:

  1. Asterisk key switches to manual Talk Group input mode.
  2. A/B plus press PTT generates a 1750Hz tone for those repeaters that need this tone burst rather than CTCSS.


I decided to add a speaker Mic. to the unit as the internal speaker is a little tinny and having to always talk into the HT is inconvenient. I don’t like the ear-bud / microphone option that comes with the HT. I had hoped the speaker Mic. from my Wouxon would work, but it didn’t – so I searched and searched and searched for a speaker Mic that said it would work with the RD-5R – nothing, nix! No one is advertising a speaker Mic for the RD-5R. There are some Radioddity microphones that I thought “might” work but no one lists the RD-5R model. The Radioddity website states that the UV-5R accessories should work OK with the RD-5R:

“The Classic 5R Series: Sticked with classic design of 5R series, RD-5R fits into your pocket and shares all accessories with other Baofeng radios except the programming cable.”.

I decided to risk buying a cheap (€6) UV-5R external Mic and hoped it would work when it arrived – it did however the audio quality from the microphone in the speaker/mic was bad and needed some work, the main point being to pack the microphone case to stop the “hall effect”. The other change was to drill a hole in the case to coincide with where the microphone element was actually mounted. This was the microphone I bought (it’s sold under various names):

How to create a usable regional code plug ?

As each Channel has to have the Talk Group (aka Contact) defined, creating a code plug for a region e.g. Bavaria,  is only ever going to be a basis file – the user is always going to have to go in and at least change (or add extra channel records for) the Talk Groups he/she wants to access.

In my Bavaria and Baden Wurttemberg sample files (see below) I have one channel record for each DMR server / Time slot. These “standard” records reflect the often used (static) TalkGroups in the DMR+ and BM repeaters. Specifically in the Sample code plus for Germany I have assigned the Time Slot 1 record for each DMR repeater to TG 262 (this is the Germany wide talk group on both the DMR+ and Brandmeister networks). Time slot 2 (TS2) on all repeaters is set to the “Local” talk group (TG 9 on both DMR+ & BM) i.e. contacts within that repeater only, not over the network. Someone taking my code as a base for their RD-5R code plug will then be able to choose their own local repeater and either change the Talk group (contact) assigned in the Channel record or copy and add extra Channel records. They will not need to add any of the physical information (frequency, color code etc) – they can copy their repeater’s Channel record to create a new channel record and then just change the contact field from the pull-down list. Talk Groups not in the list can be added under the Digital Contacts section in the CPS and then will be available to all Channel records. These sample code plus also have some analogue FM simplex and FM repeater channels in as well (again these are easily changed or copied and changed in the CPS software).

Go to  This Webpage for a sample versions of the code plugs to download.

Code plug creation sequence (limits given are for the Baofeng RD-5R):

  1. Channels (repeaters) including Frequencies Tx & Rx, Colour code, what Scan list it will be in and which Rx List it will be in.
    • Note 1: a channel record is required for every TG to be accessed through a specific repeater.
    • Note 2: The “Admit Criteria” field can be set to “Colorcode” to avoid transmitting when someone else is on however this effectively makes you wait until the repeater drops, so it’s best to leave this field at the default “Always” and manually insert a delay before transmitting.
  2. Digital contacts (talk Groups).
  3. Zones (groups of repeaters-channels) maximum of 16 entries – i.e. 8 repeaters each with 2 time slots.
  4. Scan lists (often set to coincide with Zones). Although these have a maximum of 32 entries, it best to limit to 16 entries plus the “01:selected” option so that a 1-to-1 relationship to the Zone table is possible allowing a zone to be selected and then the SCAN button pressed to start a scan of repeaters.
  5. Rxlists to coincide with contacts (TGs) per time slot e.g. which TG should be on each TS. possibly split by Network type BM 1 & BM 2, DMR TS1 & DMR TS2, Hytera 1 & Hytera 2.If a TG is NOT within a Rxlist it will be muted – i.e. you wont hear it through the radio!
  6. REFLECTORS – these are best NOT USED and are a link back to how D-Star works – they will always be in Time slot 2 under Talk Group 9. If a repeater is linked to a reflector all traffic from that repeaters TS 2 will be routed to the reflector rather than being able to select any Talk Group. Reflectors are also used to connect DV-MINI and other DV hotspots to the DMR network.

Sequence to add a new talk group to an existing code plug:

  1. Add the talk group to the digital contacts list (description plus DMR-ID for the talk group).
  2. Add a channel for the TG (or change the contact field in an existing channel) set the time slot appropriately (2=local, 1=international).
  3. Add the channel to a Zone (or create a new Zone if required).
  4. Optionally add the channel record to an existing (or new) scan list.
  5. Create a Rxlist and add the digital contact (which is the TG) to it.
  6. Update the Channel record with the RX Group List and contact and (optionally) the scan list.

Useful DMR related websites: