Skip to content
Configuration utility for DMR radios
C Objective-C Makefile
Branch: master
Clone or download
sergev Merge pull request #30 from fraburnham/allow-config-validation-withou…

Allow verification of the config script w/o download or upload
Latest commit e47491e Sep 19, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Update sizes for DM-1801: 15 zones, 32 channels per zone; 40 group li… Jul 30, 2019
.gitignore Add stub for windows dfu version. Sep 6, 2018
99-dmr.rules Add TD-5R to the list of supported radios. Oct 29, 2018
LICENSE Replace the LICENSE file with the BSD-3-clause license. Aug 12, 2019
Makefile Merge branch 'master' into patch-1 Sep 19, 2019
Makefile-mingw Creata a separate source file for DM-1801. Jul 30, 2019 Add downloading and uploading of DM-1801 codeplug. Jul 30, 2019
d868uv-map.h Build id-to-contact map for d868uv. Nov 6, 2018
d868uv.c Fix #37: crash when updating a callsign database on MD-2017, and it d… Sep 18, 2019
dfu-libusb.c Use pkg-config to configure libusb dependency. Jun 26, 2019
dfu-windows.c Fix windows issues. Sep 18, 2018
dm1801.c DM-1801: increase number of grouplists to 76. Aug 12, 2019
hid-libusb.c Use pkg-config to configure libusb dependency. Jun 26, 2019
hid-macos.c Move OS independent HID routines to a separate file. Sep 18, 2018
hid-windows.c Process DM-1801 images. Jul 27, 2019
hid.c Move OS independent HID routines to a separate file. Sep 18, 2018
md380.c Fix config indent and header when PRINT_RARE_PARAMS is enabled Feb 10, 2019
radio.c Make DM-1801 images compatible with native CPS. Aug 12, 2019
radio.h Process DM-1801 images. Jul 27, 2019
rd5r.c Fix config indent and header when PRINT_RARE_PARAMS is enabled Feb 10, 2019
serial.c Fix -u option for d868uv. Nov 24, 2018
util.c Support CSV format from Aug 4, 2019
util.h D868UV: parse CSV files downloaded from Nov 24, 2018
uv380.c Merge pull request #27 from onovy/fix-rare-params-indent Sep 19, 2019

DMRconfig is a utility for programming digital radios via USB programming cable. Supported radios:

  • TYT MD-380, Retevis RT3, RT8
  • TYT MD-390
  • TYT MD-2017, Retevis RT82
  • TYT MD-UV380
  • TYT MD-UV390, Retevis RT3S
  • TYT MD-9600
  • Baofeng DM-1701, Retevis RT84
  • Baofeng RD-5R, TD-5R
  • Baofeng DM-1801
  • Radioddity GD-77
  • Anytone AT-D868UV
  • Anytone AT-D878UV
  • BTECH DMR-6x2
  • Zastone D900
  • Zastone DP880
  • Radtel RT-27D

Packaging status


Read codeplug from the radio and save it to file 'device.img', and also save text configuration to 'device.conf':

dmrconfig -r [-t]

Write codeplug to the radio:

dmrconfig -w [-t] file.img

Configure the radio from text file. Previous codeplug is saved to 'backup.img':

dmrconfig -c [-t] file.conf

Show configuration from the codeplug file:

dmrconfig file.img

Apply configuration from text file to the codeplug file:

dmrconfig -c file.img file.conf

Update database of contacts from CSV file:

dmrconfig -u [-t] file.csv

Option -t enables tracing of USB protocol.


On Linux, a permission to access USB device is required. It's possible to run dmrconfig as root, like "sudo dmrconfig", but it's safer to enable access for users. Create a file /etc/udev/rules.d/99-dmr.rules with the following contents:

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

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

# Anytone AT-D868UV: ignore this device in Modem Manager
ATTRS{idVendor}=="28e9" ATTRS{idProduct}=="018a", ENV{ID_MM_DEVICE_IGNORE}="1"

To activate it, run:

sudo udevadm control --reload-rules

Then re-attach the USB cable to the radio.


Sources are distributed freely under the terms of Apache 2.0 license. You can download sources via GIT:

git clone

To build on Linux or Mac OS X, run:

make install

Regards, Serge Vakulenko KK6ABQ

You can’t perform that action at this time.