DMR (Digital Mobile Radio) is a digital voice (DV) modulation scheme,
which becomes more and more popular in amateur radio (ham radio). To be
able to use the radio transceivers, all frequencies (channels) used must be
entered as a „memory channel“ into the so called codeplug (CP). There is
a huge number of local radio repeaters, as well as analogue FM repeaters
and simplex frequencies, which all have to be entered into the CP by typing it manually into a programming software (CPS). Only
in Germany we currently have about 300 DMR repeater, which expand to
about 700 channels (2 timeslots + many mixed mode FM) only for
Principle of the CPSProgrammer: CPSProgrammer is designed to
interact with the existing vendor-provided CPS software. The
vendor's CPS software must be running for CPSProgrammer to update
the codeplug that is open in vendor's CPS software
Programming this huge numbers of channels (callsigns, frequencies,
timeslot & colour code, scanlist, RXGroup, TXContact, etc.) is a huge,
boring and annoying pile of work, which can sum up to days
CPSProgrammer will make that work much more simple. All DV channels can
be downloaded from the DMR database and than can easily be managed
and extended by analogue channels, using Excel. A CSV file, to be generated from the Excel table, then
will be used by the CPSProgrammer to program the channel information into the CPS. CPSProgrammer directly accesses the CPS windows controls
to transfer the programming information from the CSV-file into the
codeplug. The automatic transfer of a few hundred channels into the Radio Programming Software takes a few minutes only.
CPSProgrammer requires a well prepared codeplug and a well prepared
database (CSV), to be able to minimize your typing work on the codeplug.
CPSProgrammer is an automatic programming (programming robot) of the channel information of a CPS.
CPSProgrammer reads all input-information from a CSV file. CPSProgrammer is designed to interact with the existing vendor-provided
CPS software. CPSProgrammer does not read or write codeplug-files (.rdt, .rcd,
.rcdx). The vendor's CPS software must be running for CPSProgrammer to
update the codeplug that is open in vendor's CPS software (see picture
above: "Principle of the CPSProgrammer").
Hytera PD785 Customer Programming Software (CPS), V7.00.07.020.EM5
/ v7.06.02.006.EM5, V8.00.09.007.EM5: MD 655 (G), MD785 (G), PD785 (G), X1p Please note: The new feature of 255 channels/zone is
not yet supported (however planned).
Hytera AR685 → edit [PD785]
section in .ini file: WindowTitle. Then select PD785 as CP
Table: Compatibility and functionality, currently implemented
Write to CPS / Import
Export to .CSV
1) switch off "help view", to speed up programming 2) due to problems accessing the CPS, the CPS window is forced
to stay in foreground and keep focus
3) The number in parentheses shows the maximum
number of TGs in a single RX-group, supported by this CPS
4) The number in parentheses shows the maximum number of
channels in a single zone, supported by this CPS
Table: Types of CPS,
supported by CPS converting
Unzip all files of the download in a single directory. Thats it ...
The zip-file contains the following files:
CPSProgrammer.ini: Your individual settings for cpsprogrammer.
See table below for details.
Some sample CSV, just for demonstration. Not for a real codeplug.
Prepared codeplug samples for CS700 / PD785G with scanlists, zones, RXgroups and TXcontacts, but
without channels. This codeplug will intentionally cause warnings while
programming, just to show how the software works.
This page as pdf
A tutorial with a prepared, empty codeplug, some CSVs and
Sample and first steps
Just follow the description ("start the programmer") below with the CSV
provided with the download ZIP-file, to get a first impression. You may
analyse the attached CSV-files and follow the provided tutorial, to get a better understanding of how this files
Start the Programmer
To start programming, you have to perform some steps in the following order:
Open your Customer Programming Software (CS700/MD380/RT3 or Hytera radio programmer) and load a
prepared codeplug, containing at least the required RXGroups and TXContacts (see coding reference below for additional
The programmer allows you to create scanlists, write
channels and fill scanlists.
Switch to the directory where you have installed the programmer.
Start the CPSProgrammer and switch to the function, you want to perform.
Then select a CSV file, if you want to use another than the default one.
Normally you first create empty scanlists (step 1, required
to program the channels). Next you write the channel
information (step 2). Once the channels are defined, you can
fill the scanlists with the required channels (step 4).
Start Programming by clicking the related button, e.g. "Write Channels"
or "Fill Scanlists".
Now, the Radio Programming Software gets focused, while all the
information is automatically written into the codeplug.
Note: Should anything go wrong,
click onto the tray-icon on your
task-line, to pause CPSProgrammer immediately.
Then select to continue or to exit the programmer.
Main Menue of CPS Programmer V0.35.x
Click the Tray-Icon to pause immediately, then you may continue
The download below provides a tutorial wit some sample CSVs. Please
follow the tutorial to learn how CPSProgrammer interacts with your
customer programming software (CPS). The tutorial can be done within
15 minutes only. The tutorial video, embedded below, uses the CSV
files used for the tutorial as well:
Programming a codeplug requires a careful preparation of all the data
needed. There are many fields to be filled with data and many
interdependencies between this lists. To improve programming and to avoid
unnecessary work, the interdependencies between different lists and fields
in a codeplug should be known.
This picture shows the most important interdependencies in a codeplug (click
A channel defines the RX- and TX-frequency, the ColourCode and TimeSlot,
the Contacts and many other information used do communicate on a specific
channel, as well as the display name. Some of this information, such as
GroupContacts, RX-Groups or Scanlist-Names have to be defined before
programming a channel, to avoid a unnecessary programming loop. For that
reason, a specific order in the programming steps is recommended.
First define all GroupCall, which are the Talk-Groups used in your
area (e.g. TG1 world wide, TG2 Europe, TG262 Germany). This step must
be done manually.
Second define at least one RX-Group which contains all Talk-Groups
expected to be received on a single channel (check for a talk group
matrix for the repeaters in your area. This step also must be done
Next we have to define scanlists. As we have not yet programmed
the channels, the scanlists will be empty in the first step. The
CPSProgrammer supports generating empty scanlists from a given csv.
This is marked as step 1 in the CPSProgrammer.
Having prepared TX-Contacts (a single talk group), RX-Groups (a
list of talk groups) and empty scanlists, we are able to write our
channels into the CPS. This is step 2 in the CPSProgrammer.
Next we are able to fill our empty scanlists with the channels, we
just have written into the code plug. This is step 3 in the
As a last step (step 4) we can create zones and fill the zones
with the channels we have written into the code plug.
How to generate a propper CSV File for channels
At first start with downloading the required DMR channels from the internet: http://dmr.ham-digital.net/rptr_by_id.php for a worldwide list or http://dmr.ham-digital.net/rptr_by_id.php?id=262
for a national or regional list (e.g. 262 for Germany). Import the
downloaded CSV into a table calculation (excel) and add as many DMR or
FM frequencies as you like.
Next add additional rows and add the labels required in the first line. See the table
below for additional information. Then enter all the information
described in the table. Finally export your table into a CSV file (named
'channels-05.csv' by default). Please use ';' (semicolon) as delimiter.
A tool providing help to create a channellist with proper coding for the
CPSProgrammer is provided online:
CPSProgrammer requires several
information from the CSV database to program the CP. The CSV downloaded form http://dmr.ham-digital.net/rptr_by_id.php already provides all information about the RF interface of the channel, grouped by the labels in the header line:
CPSProgrammer requires some of this labels, as well as additional
labels to define RXGroupLists, ScanLists, names, TalkGroups and many
other things required from the CP. Please have a look at he CSV file
which comes with the software download:
Labels used by CPSProgrammer (=x: data comes with the CSV downloaded
from the dmr-database)
This is the callsign of the
repeater which gets displayed in your transceiver, e.g. DB0RTA
This is the frequency where your DMR
transceiver will receive, e.g. 438.3525 or 438,3525
This is the shift of the repeater, e.g. -7,6 or 0 for simplex
This is the number of the colour code, e.g. 1
If field is left empty,
CTCSS is applied to TX only. If set to "c", CTCSS is set to
TX and RX.
Defines, whether the repeater is a pure DMR or a mixed mode repeater.
Must be "m" for mixed mode (TS1, TS2 and a FM channel will be generated)
Leave field empty for normal operation (TS1 and TS2 will be generated)
If set to "s1" (single TS1), only TS1 will be generated, independent of a possible frequency shift other than 0.
If set to "s2" (single TS2), only TS2 will be generated, independent of a possible frequency shift other than 0.
of the CTCSS signal if required. Any notation may be used (e.g. 88,
88.5 or 88,5. Also Digital Coded Squelch codes can be defined
(e.g. D445N). Please note, that digital codes may not be compatible between
different devices (TYT, Hytera, ...).
For callsigns marked with mix=m (mixed more), both CTCSS encoder (TX) and decoder
(RX) will be programmed with the CTCSS frequency
For pure analogue channels:
by default, CTCSS encoder (TX)
only will be programmed
if field CC is set to "c", CTCSS
encoder (TX) and decoder (RX) will be programmed with the CTCSS
DMR-net. Used to insert characters after the callsign: dmr-plus: #, hytera: H, marc: M
This field is
not mandatory for CPSProgrammer, however if a FM channel contains a
valid DMR-ID (Number > 100,000) in this field, it will be treated
like a mixed-mode channel: A net-delimiter for MixedFM will be
appended (e.g. %FM).
required and not recognised by the programmer, but very usefull to keep
the header line on top, when sorting the CSV lines in different order
in your table calculation.
Defines the type of the cannel, Enter a for analogue (FM) or d for digital (DMR) channels
Additional descrition of timeslot 1, added to the callsign and displayed at the transceiver
Additional descrition of timeslot 2, added to the callsign and displayed at the transceiver
Name of the default TX Talkgroup for TG1 in the pull down menue, e.g. TG262
Name of the default TX Talkgroup for TG1 in the pull down menue, e.g. TG9
Name of the RXGroup for TG1 in the pull down menue, e.g. WW
Name of the RXGroup for TG2 in the pull down menue, e.g. WW
Power for this channel, set to h for high or l for low
Name of the Scanlist for TG1 in the pull down menue, e.g.
(Also used to specify the Roaminglist for PD785x)
Name of the Scanlist for TG2 in the pull down menue, e.g.
(Also used to specify the Roaminglist for PD785x)
Name of the Scanlist for FM in the pull down menue, e.g.
for the FM channel of a mixed mode repeater (mix = 'm')
recognised by the programmer. Can be used to insert comments into
the CSV. Additional columns, provided by the DMR-database can be
left in the CSV.
An example for a channel.CSV accepted from CPSProgrammer, containing
two repeater frequencies, is shown below. When executet, CSPProgrammer
generates two channels for each line (TS1 and TS2) resulting in a total of
Display names are made by concatenation of the callsign and callext1 or callext2 (depending on the TS). For special networks, an additional delimiter will be inserted before callextN:
This allows you to distinguish between different networks, which use
different talkgroups and operating techniques. Different delimiters can
be configured by editing the ini-file. The following settings are provided
with the default ini-file:
Network name (net)
Sample: DB0RTA #1TG262, where callsign: DB0RTA, net: DMR-plus, callext1: 1TG262 Important:
Please take care, that no channel name (e.g. DB0RTA #1TG262) occurs
twice. CS700 programming software is not able to handle twice the same
name and will respond with an error message, desynchronising the on-going
program run. *) Mixed-Mode FM: This
indicates a DMR-repeater providing FM mode on the same frequency as DMR.
It usually transmits an CTCSS-signal on FM to allow an RX to suppress DMR
Coding Reference for Scan-
To automatically generate and fill scanlists, a CSV
with a specific format is required. The file contains one line for each
scanlist, starting with the name of the scanlist and followed by the
The only recognised labels are "scanlist" which contains the name of the
scanlist, and "ch1" through "ch31" which contain the channel names to be
added to this scanlist (Note:
channel 32 is the selected channel itself). If less than 32 channels are added, the
channelname is a zero-string "", which means that it's just followed by
the next semicolon ";". As an example, the scanlist "Bodensee" contains
only one channel.
The only recognised labels are "zonelist" which contains the name of the
scanlist, and "ch1" through "ch16" which contain the channel names to be
added to this Zone. If less than 16 channels are added, the channelname is
a zero-string "", which means that it's just followed by the next
Hytera V8 codeplugs do allow up to 256
channel per zone. CPSProgrammer does support this feature by accepting
additional columns Ch17;Ch18 ...Ch256. It is not mandatory to use
consecutive numbers. Any amount of columns between 16 and 256 is accepted.
To automatically generate and fill RXGroups, a CSV
with a specific format is required. The file contains one line for each
RXGroup, starting with the name of the Group and followed by the
The only recognised labels are "RxGroups" which contains the name of the
RXGroup, and "tg1" through "tg64" which contain the TG names to be
added to this RXGroup. If less than 64 TGs are added, the TG-name is
a zero-string "", which means that it's just followed by the next
semicolon ";". Please note, that different transceiver
support a different number of maximum TGs per RXGroup. Please refer to "features
and limitations" for manufacturer related information.
The CPSProgrammer may be individually configured
with an ini-file, located in the same directory. The [General] section
applies to the whole program, while all the other sections only apply to
a specific device, selected. The ini-file can be opened and edited with
any text editor (e.g. notepad). The values provided below are default
values, in case the related entry is missing, misspelled or the ini-file
Download ini-file documentation - last update 20180105
Export Codeplug to CSV
CPSProgrammer can read the controls of the CPS and therefore export the
channels of an opened codeplug into a CSV file. This can be used as
backup, or as a base for codeplug development, to start from. This may
also be used to copy channels between different DMR transceivers, which
codeplugs are not interchangeable. Before you start "export channels", you
have to open any channel with your CPS!
The picture above shows the export of channels from a CPS. The exported
channels are written into a edit field in CSV notation first, where you
can edit the data before storage. You may enter text, delete text or copy
(ctrl+c) and paste (ctrl+v) text in the edit field. The red out channels
are re-compiled into the CPSProgrammer format, where up to 3 channels
(TS1, TS2, mixed-mode-FM) can be packed into one line, if applicable.
While exporting the channels, CPSProgrammer collects information about the
used ScanLists, RXGroups and TXContacts in the codeplug being exported.
This information is shown in the boxes under "Code Plug information" and
can be saved in a text file by clicking the "Save Code Plug Information"
button. You may also define a range in your codeplug within the
selected channels will be exported (a channel number can be found next to
the navigation buttons in your CPS). With the default setting 1 ... 1024
ALL channels of a codeplug will be exported.
Exporting zones is shown in the picture below. The operation of
exporting zones, scanlists and RXGroups as well, is quite similar to
exporting channels, described above. Once the zones, scanlists or RXGroups are written into
the edit-field, you can edit the CSV or save the data in a file by
clicking "Save as".
CPSProgrammer provides list generators for DMR and FM
channels, to automatically
generate channel-CSVs with consecutive frequencies, such as consecutive simplex- or
repeater-channels. The generated channels are written into a edit field in
CSV notation first, where you can edit the data before storage. You may
enter text, delete text or copy (ctrl+c) and paste (ctrl+v) text in the
edit field. Below is an example, how to generate the European
FM repeater channels with its former naming pattern R70, R70x ... R101x (x
equals 12,5 kHz offset). The naming pattern for repeater channels now is
different, but this example shows how powerful the channel list generator
can be used.
The callsign ("channel name") to be displayed is generated
automatically and made by a
concatenation of up to 6 input fields. The following functions are
available for each of the 6 fields:
N: Insert counter value, incremented by one, each line. Usually starts by
Text: Insert text, entered in the input field just below the
space: Insert a single space " "
N, N/2 ... N/16: Insert an integer N, or N/x (to generate x
times the same number, e.g. N/2: generates 0, 0, 1, 1, 2, 2, ...)
Nmod2 ... Nmod16: Insert the remainder of N/x. (e.g. N Mod 4
generates 0, 1, 2, 3, 0, 1, 2, 3, 0, ...)
C1-3-5: Insert "Cx", cycling all odd numbers from 1 to 15: C1, C3, C5 ... C13, C15, C1, C3, C5,
0-0x: Inserts letter x, when N is an odd value (Used to generate
R70, R70x, R71, R71x, ... in the sample above)
0-0text: Inserts the text, entered in the input field just below,
when N is an odd value
clr: Insert nothing (clear)
f-RX.5: Insert RX frequency with 5 digits, e.g. 433.58750
f-RX.4: Insert RX frequency with 4 digits, e.g. 433.5875
f-RX.3: Insert RX frequency with 3 digits, e.g. 433.587
The picture above shows the DMR CSV
List-Generator, which allows to generate a channel list with consecutive
frequencies. The sample shown here, will generate consecutive channels
according to the
The picture above shows the window of "Convert
FM-Repeater List" with a converted repeater list. This allows you to
convert a CSV file, downloaded from
http://relaislisten.darc.de/ into a format required from
CPSProgrammer. Via this Interface you have access to one of the biggest
databases on amateur radio voice repeaters. Currently they have more than
8000 entries from more than 60 countries in their database. To build
the channel-name for the newly generated CSV, two additional functions are
CSV-call: Adds the text provided with the "call" field of the
CSV-info: Adds the text provided with the "info" field of the
Please carefully check the input file for inconsistency and doubled
entries. Sometimes information (e.g. repeater input frequency) is
To edit a bulk of channels in one time, CPSProgrammer does provide
bulk edit functions. Bulk Delete Channels (picture below) allows you to
delete channels in your codeplug. You can select if you want to delete
all channels or only FM or DMR channels. You may also skip mixed mode
channels (delimiter, e.g. %FM, is defined in the ini-file). You may also
define a range in your codeplug within the selected channels will be
deleted (a channel number can be found next to the navigation buttons on
the left side). With the default setting 1 ... 1024 ALL channels in a
codeplug will be deleted. CPSProgrammer first jumps to last channel in
the codeplug and starts searching reverse. If the number of the current
channel is lower or equal then "delete to ch'" the current channel will be
deleted, provided it fits to the selection (all, DMR, FM). If the channel
number, given in "delete from ch" is reached, bulk delete stops.
Bulk Delete: The green progress bar shows the current progress.
This new function allows you to convert CPSProgrammer CSVs into
CSV-formats accepted from third party Customer Programming Software, for
importing data. Following sources may be used as input for conversion:
CPSProgrammer CSV, generated by exporting any existing codeplug
from any supported CPS (Hytera, Tytera, Retevis)
CSV generated from the current DMR-Repeater-Database. See
here for detailed information.
CSV containing consecutive frequencies (lists), generated by the
integrated list generator. See here for
Allows to convert CPSProgrammer CSVs into other CPS (=target) CSV formats
Support for GPS-Programming in ini-file: InCallCriteria=always
/ GPSSystem=1 / SendGPSInfo=check / ReceiveGPSInfo=check
Ailunce HD1: Support for channel-writing (CPS-Version 1.61
Codeplug for most handheld and some mobile Hytera brand radios.
Compatible with DL5DI schema, but covering a wider range of
frequencies. Corresponding online database under
https://dmr.dm7ds.de contains over 900 repeaters worldwide.
MD2017: Support for GPS-Programming in ini-file:
InCallCriteria=always / GPSSystem=1 / SendGPSInfo=check /
ReceiveGPSInfo=check Ailunce HD1: Support for
channel-writing (CPS-Version 1.61 and above)
Anytone AT-D868UV - Converting CSVs: Added Channels, Zones, Scanlists
and RX-Groups Improved: New
configuration parameter for converting DigitalUserContats
(AT-D868UV) in ini-file: UserListHighlight (see ini-file
Improvements: Changed file-handling on errors.
Increased timout time when writing large channel CSVs.
Converting CSVs: First version to generate Digital Contact
CSV for AT-D686UV
MD2017/RT83: Added support to export channels,
scanlists, zones and RX-groups into CSV format.
MD2017/RT83: Added support to write analog/digital channel, writing and
filling of scanlists. Bulk-delete now also works with MD2017/RT83 Ailunce HD1: Added rudimentary support to
write analog/digital channel. INI-File: New
parameter TXfmax(min)VFO2 to allow out-of band warnings for
dual-band transceiver as well!
MD2017: Added generating and filling of zones for
VFO-A and filling for VFO-B. Use Step 5-B to fill VFO-B.
PD785: Added new function to allow export of
General: CPSProgrammer no longer distinguishes
between analogue/digital in the device setting. Where it is
necessary (channel access only), the programmer asks whether
analogue or digital channels shall be accessed:
AR685/PD785: Now import/export of scanlists supports up to
General: Rearranged order of tabs in the
main-window, in the order of a normal programming flow - 1.
RX-Groups, 2. ScanList/Roaming (generate empty lists), 3. Write
channels, 4. Scanlist/Roaming (fill lists with channels), 5. Zones
(generate and fill zones) AR685/PD785: - Added exporting RXGroups;
AR685/PD785 allows up to 64 TGs per group - Added export of zones
with more than 16 channels; Now up to 256 channels per zone are
supported - Bugfix: Writing of zones with more than 16 channels,
sometimes stopped at 16 channels, depending on CPS speed. This is
AR685/PD785: - Added generating RXGroups; PD785 allows up to 64 TGs per
group - New ini-parameter Signalling-Type. Applies to FM-channels
and may be used to activate 1750 Hz tone-call. - Ini-parameter
PhoneSystem, now applies to both FM- and DMR-channels. May be used
to switch on DTMF-keyboard - Improved filling of scanlists and
AR685/PD785: - Bugfix: CPS hanging when writing zones is fixed now.
- CPSProgrammer now supports zones with up to 256 channels now,
using Hytera CPS V8
Ini-parameter MaxLenCallsign no longer applies in general.
Now, this parameter only applies, if any of NET-delimiter or
CallExt1/2 is really used. If both are empty, no length checking is
applied any more. And several AR685/PD785 improvements:
- Export-Functions are back for Hyteras PD785 CPS. - Also
several improvements to stabilize filling of Zones, Scan- and
Roaminglists on PD785 --- Check if the required mouse click is
applied inside the CPS window, otherwise notify user ---
ZSListMouseDelay, to better adapt programmer writing speed
to CPS-speed. See "ini-file" for more information.
Removed with version 0.29.0's bugfix
This and later versions no longer provide a separate admin version
for Hytera CPS, as the latest CPS versions do no longer require
admin rights. Executable contains all types of CPS now.
Implemented also a few improvements for PD785 (and compatible): -
Fixed an issue, where the channel name of digital channels was
shortened to 15 characters. - Fixed an issue with writing digital
channels, where adding channels sometimes inserted additional empty
channels, on slow CPSs.
New Export function, to export RXGroups: Currently implemented for
CS700, MD380, RT3
Added a new function: Generate and fill RXGroups. Currently CS700,
MD380 and RT3 will be supported. See
description above, for detailed information.
Minor Update: Check "dmrid"-field in CSV and treat channel as
mixed-mode FM, in case a valid DMR-ID was found. See
labels for info.
Added new device CS750. This version supports writing of channels.
New option "MaxLenCallsign=" in cpsprogrammer.ini to control the
length of callsigns in display names. See "ini-file" for more information.
PD365 / PD785 CPs: Now Export of scanlists and zones is supported.
Minor Update: New option "ExportChCompileTS1TS2=". See "ini-file" for more information.
Added additional status bar information (time, interaction with
CPS). See "ini-file" for more information.
Added new functions for PD365 / PD785 CPs: - Export of channels
into CSV-file - New option "TOT_PreAlert=" in cpsprogrammer.ini to
set PreAlert to a defined value. See "ini-file" for more information. For all devices: Optimized
checking, if maximum number of channels is reached.
Added new functions for PD365: - PD365: Add and fill scanlists.
PD365 separates scanlists for FM and DMR. First channel
added, defines type of the scanlist. CPSProgrammer takes care to
only add the correct channel type - PD365/PD785: new control TXAdmitFM
in cpsprogrammer.ini allows
to configure TX Admit Criterias for FM, independent from DMR All
devices: - added a new function to control whether CTCSS is
applied to TX only or to RX/TX. See
labels for info.
- checking the length of names for channels, scanlists and zones,
before writing into CPS
New Device Hytera PD365 is supported now! - PD365: Write
channels, generate and fill zones. Check if limits are reached. -
PD785: Now, the default channel added by the CPS to any zone
created, will be deleted automatically. - PD365/PD785: Force CPS
to stay in foreground and to be focused. - All: Check if the zone to
start with, is really empty
Minor Updates: - If "net"-name (or delimiter) and "callext1/2" is not
used, the additional "space" after callsign is suppressed now - Mixed
mode-FM ("mix"=m) sets RX and TX-CTCSS (requires a valid MixedFM-delimiter),
while - pure FM channels (type "a") set TX-CTCSS only.
Bug Fix: failure when writing back exported scanlists, was fixed. CS700/MD380/RT3: Check if maximum number of
channels, scanlists or zones is reached.
New main menu export functions: Export scanlists / zones, allows to
read scanlists or zones from a CPS and to store the scanlists and
zones as CSV.
New main menu function: Export channels, allows to read channels
from a CPS and to store the channels as CSV. Bug Fix for RT3:
Skipping fm when writing channels, was fixed. Bug Fix GUI:
Info labels (warnings/labels) did not update after running bulk
delete. CS700/MD380/RT3: Improved reliability for Bulk Delete
and Writing Channels
Minor update: New .ini-file parameter "TOT_FM="; Defines
Time-Out-Timer for FM-channels, independent from DMR-channels.
"TOT=" now is only valid for DMR. See "ini-file" for more information.
New functions and enhanced GUI-access for PD785x: - Writing
digital channels, now is 2-3 times faster! - New
controls accessible: IP-Multi Site Connect, Private Call Confirmed,
Phone System, TX Admit Bug Fix for CS700/MD380/RT3: Increased
timeout for Generating Zones (solves problems with very large
numbers of channels) Some enhancements for GUI and lists: - Added "0-0text" option to the name
generation of all list generators. - DMR list generator: enhanced
activating/deactivating controls, related to selected modes -
Added menu shortcuts (CTRL-D, CTRL-F, etc.) and controle via
keyboard - Replaced CTRL-X with a Tray-Icon
Some improvements and new functions: - Bug Fix: Timing problem
with "fill scanlist" when CPS-GUI is too slow (programmer faster
then cps) is fixed by implementing a timeout. - Bug Fix: "Bulk
Delete" with "delete from" > 1 showing error message "nothing to do
..." even when finished correctly, is fixed - For all "Generate List
CSVs": activate/deactivate controls and text-input where this is
useful - Added a short "Help/Work Around"-text for FM-repeater
list - Main Menu: "Bulk Edit" renamed to "Edit"
to prepare future functions
- New Icon: Portable radio -
CS700/MD380/RT3: Added new channel control: "AdmitCriteria". - CS700/MD380/RT3: Added new global channel
control: "PrivateCallConfirmed". See "ini-file" for more information.
Added some new tools - "Convert FM-Repeater List". Converts a online
FM-repeater database into CPSProgrammer format. - "Bulk Delete
Channels" to delete a selection of channels Bug fix: Editing in
drop-down boxes, causing malefunction, is disabled now. Improved
all error and other messages.
Added some new functions: - Last used CPS will be stored in the
ini file. - RT3-CPS now can be directly selected from "Select
CPS" - Write channels: Check if current codeplug already contains
channels. If more then one channel is found: Inform user, ask for
permission to append CSV, if "yes" jump to the end and append
channels to be written (CS700/MD380/RT3 only).
Minor update: Added an error message, when CPS window is not open,
or not accessible
Added a DMR channel-list generator, to generate CSVs with
consecutive channel frequencies
Added a FM channel-list generator, to generate CSVs with
consecutive channel frequencies
Added generating and filling of Roaminglists for PD785.
Preparing roaming lists for Hyteras, Generating of empty roaming
Added writing / filling of zones, for PD785 (Hytera)
Added new functions for PD785 (Hytera): - Writing analogue channels
- Generating empty scanlists - Filling scanlists
Save last csv used. Tooltips for better description.
Improved error handling; Check CSV-files on consistency before start
(all columns required are available?)
Added a function to generate and fill zones in the codeplug
Added features and prepared writing of zones: - The value for the TOT, now is read from the
ini-file instead of the CSV. - Use CTRL+x to pause the
programmer. You may continue or exit the software - Mouse
position 0,0 is no longer used to stop the programmer - Network
delimiters are now defined in the ini-file - The network
delimiters defined in the ini-file can be exported into a CSV. To be
used for the scanlist/zones generator
- Supports the generation of scanlists from CSV, for CS700/MD380)
- Supports filling scanlists wit channels from CSV, for CS700/MD380
Added a new feature, to allow the generation of a singe DMR Channel
using TS1 or TS2. Please check the
table above to
see the new labels and features. Download will be provided with a new
Added GPSRevertChannel and RSSRevertChannel for PD785 programming.
Both to be configured in the ini-file.
Improved channel programming of PD785 in way, that no delay value
has to be defined any more in the ini-file. The Programmer
automatically detects, when the selection in the Tx Group List
First version, supporting Hytera
PD785 => V0.06.0H. (Due to the characteristic of the PD785 CPS, the H
version requires admin rights. Performance (programming speed) is
much lower, compared to CS700/MD380.
- Output a warning when requested Scanlist, RXGroup, TXContact, CC, ...
can not be selected as it is missing in the codeplug (e.g. you try to
assign scanlist "Munich" to a channel, but you have not yet created a
scanlist "Munich" in this code plug.)
- Output a warning when transmit frequency is out of band. Band limits are defined in the ini-file.
- Minor improvements for saving the log
Bug fixed: Error-message when there is no internet connection (Auto check for updates);
Clean-up the code
- rudimentary ini file to switch on/of the update check (avoid problems behind proxies)
- MD380 should work now (not yet tested on all of the TYT software versions, currently available)
Enhanced GUI with new functions:
- Added a log window. Content can be edited and stored as txt file.
- Software checks for updates after start up. Download page can be opened with default browser
- MD380 can be slected, but currently has no affect. / Warnings not implemented
Software now comes with
- Significantly improved speed (300 channels in abt. 90
seconds, which took 10 Min. before).
- CSV File can be selected before
- Radio Programmer Software no
longer has to be in foreground while programming. No more accidently
influencing of other programs.
- RXGroups, Scanlists and TXContact are
now defined by their name. Currently
- NO Logfile, NO Warnings.
Added a function to support DMR simplex frequencies, indicated by mix = s.
Minor changes in the display functions
Changed the starting
position to "channel name". Added consistency checks for all integer
values in the CSV. Added CTCSS programming, Added a log file.
This is the initial
version of the programmer, which only supports the CS700 CPS so far.
Runs in a terminal window and has no configuration features.
Disclaimer and legal note
This software is a non commercial and experimental software for amateur
radio (ham radio). It comes without warranty and with no support. The
software is provided “as is," and you use the software at your own
risk. I make no warranties as to performance, merchantability, fitness
for a particular purpose, or any other warranties whether expressed or
implied. No oral or written communication from or information provided
by me shall create a warranty. Under no circumstances shall I be liable
for direct, indirect, special, incidental, or consequential damages
resulting from the use, misuse, or inability to use this software