This program is similar in purpose to the MD380 CPS program provided by TYT Electronics
Technology Co., LTD. It provides several features that CPS lacks,
while not implementing all features of CPS.
I wrote editcp
because I wanted to be able to edit codeplugs in Linux.
This codeplug editor works for the Tytera MD380 and MD390 as well as the Alinco DJ-MD40 radios. Support for additional radio models is likely, but is not scheduled at this time.
Editcp
permits the editing of General Settings, Channels, Contacts, Zones, Group Lists, and Scan Lists.- It supports reordering list items via drag-and-drop.
- Multiple codeplugs may be opened simultaneously and items may be copied from one code plug to another via drag-and-drop.
Editcp
provides unlimited undo/redo.Editcp
performs extensive input validation and codeplug entry validation.- Codeplug information may be exported to and imported from human readable text files.
Editcp
can edit .rdt files as well as the .bin files produced by md380tools.
Editcp
development has been done on Linux (specifically Ubuntu 17.04),
so that is the recommended platform for building from source.
-
Editcp
is written in go. You must download and install go version 1.8 or later. -
Install git. On Debian, Ubuntu, and other Debian-derived systems that may be done by:
$ sudo apt-get install git
-
Editcp
uses the QT GUI library. You'll need to install the Qt binding for Go. I recommend the docker installation described at https://github.com/therecipe/qt/wiki/Deploying-Linux-to-Linux and https://github.com/therecipe/qt/wiki/Deploying-Linux-to-Windows-32-bit-Static -
Editcp
uses the libusb-1.0-0-dev package. You'll need to install it. Also, if you're using the docker qt installation, you'll need to install libusb-1.0-0-dev in the docker images it uses. This can be done by running
$ sudo docker tag therecipe/qt:windows_32_static therecipe/qt:windows_32_static-orig
$ sudo docker tag therecipe/qt:linux therecipe/qt:linux-orig
$ sudo make docker_usb
If you are building under macOS, then there is no need to use docker, see Deploying Linux to macOS.
- Get the source code:
$ go get -d github.com/dalefarnsworth-dmr/editcp/...
$ go get github.com/google/gousb
$ go get github.com/tealeg/xlsx
- Change to the
editcp
source directory:
$ cd $GOPATH/src/github.com/dalefarnsworth-dmr/editcp
- Build
editcp
:
$ make
Under macOS, instead of running make
, run qtdeploy build desktop
- Install
editcp
:
$ make install
You will be prompted for a directory name where a symbolic link to
the editcp
executable will be placed. If you don't have write permissions
for that directory, you will need to run this command as root.
Under macOS, skip running make install
- You man now run
editcp
, optionally passing the name of a codeplug file.
$ editcp
or
$ editcp file.rdt
Under macOS, the app is at deploy/darwin/editcp.app
. To run from
the Terminal so as to see stdout and stderr, run
./deploy/darwin/editcp.app/Contents/MacOS/editcp
Instructions for downloading pre-built executables for Windows and Linux are available at https://www.farnsworth.org/dale/codeplug/editcp.
While building editcp
from source on macOS can be challenging, it is possible to run a pre-built editcp
Linux executable on macOS within a Linux virtual machine.
- VM running a recent version of Linux (Ubunutu 22.04 LTS 64-bit currently recommended)
- xquartz X11 window manager for macOS
- libqt5gui5 installed using your Linux VM's package manager
editcp
Linux executable installed in, say,/opt
In the Linux VM, with xquartz running on macOS, execute
$ /opt/bin/editcp
Upon physically connecting the DMR radio via the USB cable, when prompted by your virtualization application, you should choose to connect the USB device to Linux.
While
no problems have been observed in radios after loading codeplugs edited by
editcp
, I can't guarantee that such will never occur. Use editcp
at
your own risk.
Contributions to editcp
are welcome. If you've fixed a bug or implemented
a cool new feature that you would like to share, please feel free to open
a pull request here.
Dale Farnsworth
IRC: libera.chat channel: #md380, user: dfarnsworth