GD-77 – Community CPS – New features in development

posted in: DMR | 6

Over the last month, I’ve started to notice the limitation in the GD-77’s callsign lookup, based only on using the Digital Contacts.

To improve things a bit, I added a new screen into the Community CPS a few weeks ago, to allow the DMR ID database to be updated, using the same data download, from

As far as I’m aware, this is working OK, but has a drawback, because of a bug in the GD-77 firmware, which causes the data (i.e callsign)  to be retrieved from the DMR ID data, even if the same ID exists in the Digital Contacts


So to resolve this problem, I’m probably going to replace the “Download contacts” screen with a modified version of the DMR ID screen.

This will allow a list of DMR ID’s, callsigns, names and ‘last heard’ (inactivity count – in days), to be downloaded like it currently is. But there will be options to update the Digital contacts with this data first, and to upload the remaining ID’s into the DMR ID system in the GD-77

This may require 2 separate uploads, or I may be able to do in one upload (using 2 uploads will be my initial approach as its safer to use the existing codeplug update system to upload the contacts to the GD-77) , however in the long term, it should be possible to upload the Digital Contacts and the DMR ID in what appears to be the same upload (even though it will be uploading to 2 separate blocks of Flash memory in the GD-77)


Another change in the pipeline, is to improve the Channels export and import, so that it exports (and imports) all settings, not just a subset of the settings. I have this working already, but it needs more testing before its ready to be released.

I’m also going to change the import feature, so that it does not delete all existing channels before importing, but will instead check each channel name in the CSV file to see if the same channel already exists in the codeplug, and if so, it will simply update that channel.

New channels (ones not matching the name of an existing channel in the codeplug), will be added.

This will allow channels to be added a lot more easily, but will only fully work if the channels use Rx Group lists and Digital Contacts and Scan lists, that are already in the codeplug.

If these new channels reference anything thats not already in the codeplug, the values e.g. of Contact, will be set to “None” and these will need to be changed manually after the new Contact (Talk Group) etc has been added.


In the longer term, I’m considering getting the Channels export to save the associated Digital Contact, Rx Group and also Scan list data, in the same CSV file.


I’m probably going to add a new column at the start of every line, which indicates what that line in the CSV file holds.

e.g. Channel, Contact,RxGroup, Zone or Scan list


Then when the Channels import system reads the CSV file, it will first process Contacts and add and update as necessary. Then process Rx Groups (as they reference the Contacts), then process Scan lists, before finally importing any Channel data , followed by any Zone data (because Zones use Channels)


I’ll also need to decide which screens export this data. Currently AFIK, only the Channels and Contacts screens have the ability to export and import. All the other sections, do not currently have the same sort of listing screen (Data Grid View) which the Channels and Contacts have, and I’d probably need to add something similar, to each of these sections before I can add the export/import features to them

This is especially true of the Rx Group lists, as they have no overall settings screen at all.


However, I will be doing this one step at a time, and I’m not likely to release anything until I have the Channels export/import system working well


I’m keen to have user feedback, so if anyone can think of a flaw in my plan, or has another approach, I’d be interested to hear, but I can’t guarantee I’ll have time to implement any of this, in the immediate future.

6 Responses

  1. Wilhelm Onken

    This sounds really great. Keep up the good work.

  2. Roger Clark

    Today, I’ve mostly got the new Channels export and import system working, and I’m really happy with it.

    I’ve taken my inspiration from the exporter / importer written by Colin G4EML, so I’m using roughly what his Contacts spreadsheet looks like, but since I’m getting the data straight from inside the GPS, it has names for some data fields which Colin lists as ‘known1’, ‘known2’ etc.

    header row is
    Name,Channel Type,Rx Frequency,Tx Frequency,Color Code,Timeslot,Contact,Rx Group,Scanlist,RX CTCSS,TX CTCSS,Power,Bandwidth,Rx Only,Squelch,Tx Admit,TOT,TOT Rekey,Tx Signaling,Rx Signaling,Privacy Group,Emergency System,Flags1,Flags2,Flags3,Flags4,RssiThreshold,VoiceEmphasis,TxSignaling,UnmuteRule,RxSignaling,ArtsInterval

    a data row looks like this

    Its great that I can now just make data (channels) for a new repeater, simply but using the rows in the CSV for an existing repeater, and then just do a search and replace on the Tx and Rx freq columns, and on the name column

    However at the moment, this is just the Channels data, and if the contract e.g. for TG5 in this case is not present in the contacts it will not fully work when it gets imported.

    But it may be good enough to create an interim release, after I’ve done some more testing.

    BTW. I don’t known whether the fields at the end have any effect, e.g. Rx signalling always seems to be zero,

    Arts internval (I’ve no idea what this is), always seems to be 22
    Its possible that some of these settings are not even visible in the Channels screen, as they are no redundant, but I thought it was best to export and import as many fields as possibly, just in case I miss something that is essential 😉

  3. ken

    wow, sounds briilant, I cannot wait 🙂

  4. Roger Clark

    I mind is buzzing with ideas for the channels import, so I’ll do another post 😉

  5. James

    This is really good news as I now (automatically) generate CSV files for input of the contacts and channels but would have to create the RX Groups and Zones manually. I would also have to manually adjust some of the channel parameters because they were not included values for import.

    One issue I’ve found is the value of the RX Group for the channel CSV information is not the RX Group name but an index of the RX Group table.

    In your example above, you have a value of ‘TG5’ for the RX Group. Does this mean the CSV import of channels in this new Community Version of the CPS provide the cross-reference i.e. a lookup of the RX Group contact table index? In other words, the example seems to imply the CSV import takes a RX Group name versus the index value from the RX Groups table.

  6. Roger Clark

    I am exporting the Contact Name, its TG and Type – Not its reference.
    The reference (index number into the contacts list) is no use unless you are importing straight back into the same codeplug you just exported from.

    I’ve already got it working, where I just export the Contact Name, and then search for Contact index number, for each channel that is imported.
    I do the same for Rx Group list, and this works fine.

    But I realised that if the Contact name referenced by the Channel didnt exist, It would have to be set to None (index 0) and the Channel would not work.

    Hence my idea to also export the Contact ID (DMR ID) and the Contact Type.

    At the moment the plan is to create new contacts if the Contact Name can’t be found in the Contacts list, but thinking about it, I can see that there could then be more than one Contact with the same ID.

    But I think the channel will still work, as I don’t think CPS would care.

    With the construction of the Rx Groups, it will only build the Rx Group(s) necessary for the Channel to function, but there could be additional Contacts in the Rx Group of the Codeplug which exported the Channel(s) data, which were not used in any of the Channels, and hence would be reconstructed.

    Also it will potentially make duplicate Rx Groups. Because there may already be a Rx Group – with a different name – in the “importing” codeplug, which contains the same Contacts as the exported data.

    However the question arises, about whether the most important thing is that the Rx Group name, shown for the Channel, is the same as the one from the exported data, or whether the most important thing is not to have duplicate Rx Groups which contain identical Contacts (or a subset of Contacts from another Rx Group).

    I think this higher level of abstraction could probably best be handled by some sort of analysis utility in the CPS.


    Looking at the exported data in the version I have in development, I realised that I had some channels which were not assigned to a Zone.

    Also I had some digital Channels which didn’t have a Contact assigned to them.

    Potentially another check is for a digital Channel, that the Rx Group assigned to the channel contains the Contact assigned for the Channel.

    I’m sure there are other checks that could be performed, and perhaps these checks could be performed either when the codeplug is saved or when its uploaded to the radio. So that the CPS could then prompt the user to fix these problems before continuing to save or upload – and of course there should be the option to Ignore the results of the check 😉

Leave a Reply